我已经编写了一个脚本来每天晚上备份我的服务器的 HD。在脚本结束时,我同步,等待几分钟,同步,然后我发出sg_start --stop
停止设备的命令。这个想法是通过在十分钟的增量备份后关闭 HD 来延长设备的使用寿命(桌面磁盘可以承受数千个开/关循环,但只能持续运行几百小时)。
这并不总是有效。我经常发现第二天早上驱动器仍在旋转。是否有一个 shell 命令可用于检查驱动器是否已停止(因此我可以再次发出停止命令 [EDIT2] 或编写脚本以在驱动器运行时创建进程列表,以便我可以调试它[/EDIT2 ])?
[编辑] 我试过sg_inq(如 sg_start 手册页所建议的那样),但这个命令总是返回 0。
我已经尝试过hdparm,但它总是为 USB 驱动器(通过 /dev/sdX 连接)返回“驱动器状态为:未知”,并且在尝试降低驱动器时,我得到“HDIO_DRIVE_CMD(setidle1)失败:输入/输出错误” .
sdparm似乎支持在驱动器上设置空闲计时器(请参阅“电源模式条件页面”),但 IDLE 选项具有“可更改:n”,我还没有找到告诉我驱动器电源状态的选项。
sg_start --stop
[EDIT2] 注意:我可以从控制台停止驱动器。这总是有效的;它并不总是一直待到午夜。服务器在地下室(那里又好又酷),我宁愿有办法从温暖的客厅检查驱动器是否启动:) 如果我有一个命令告诉我驱动器的状态,我可以编写一个脚本在它启动时提醒我(每分钟检查一次),然后我可以尝试找出可能导致这种情况的原因。
如果这很重要:我使用的是 openSUSE 11.1。