我每晚都写了一个脚本来备份服务器的HD。在脚本结束时,我同步,等待几分钟,同步,然后我发出sg_start --stop
来停止设备。我们的想法是通过在增量备份十分钟后关闭HD来延长设备的使用寿命(桌面磁盘将经历数千次开/关循环,但只能连续运行几百小时)。
这并不总是有效;我经常发现第二天早上驱动器还在旋转。是否有一个shell命令可用于检查驱动器是否已停止(因此我可以再次发出stop命令[EDIT2]或编写脚本以在驱动器运行时创建进程列表,因此我可以调试此[/ EDIT2] ])?
[编辑]我试过sg_inq(如sg_start手册页所示),但此命令始终返回0.
我已经尝试了hdparm但它总是返回“驱动器状态为:未知”的USB驱动器(通过/ dev / sdX连接),当尝试关闭驱动器时,我得到“HDIO_DRIVE_CMD(setidle1)失败:输入/输出错误“。
sdparm似乎支持在驱动器上设置空闲计时器(请参阅“电源模式条件页面”),但IDLE选项具有“可更改:n”,我还没有找到一个选项告诉我驱动电源状态。
[EDIT2]注意:我可以从控制台使用sg_start --stop
停止驱动器。这总是有效的;它并不总是一直持续到午夜。服务器在地下室(它很好很凉爽)我宁愿有办法从温暖的起居室检查驱动器是否启动:)如果我有一个命令告诉我驱动器的状态,我可以编写一个脚本,当它旋转时提醒我(检查每一分钟),然后我可以试着找出可能导致这种情况的原因。
如果重要:我正在使用openSUSE 11.1。
答案 0 :(得分:3)
当你说你尝试过hdparm时,你没有说过你曾尝试过的 。我在机箱中有一些USB硬盘驱动器,有些命令适用于它而其他命令不适用,但我想这一切都取决于传输机制的所有方面。
hdparm -S 120 /dev/sda
在大约10分钟不活动后,应该告诉驱动器自己睡觉。
我猜你已经尝试过了,但这并不明显,把它写成 的答案可能有助于未来的读者。
Nothing accesses the drive but the backup script.
理论上这很好,但我发现在奇数场合这还不够。有很多进程和任务,如果他们甚至看起来在驱动器上,如果由于某种原因从磁盘缓存中查找,可能会发生旋转。
常见的罪魁祸首是updatedb
扫描文件的所有安装工具,fam
或gamin
执行时髦的工作来监控磁盘的更改。
如果有疑问,请在执行脚本之前通过挂载设备添加一层确定性,并在完成后卸载它。
看到可能导致唤醒的事情
lsof +D /mountpoint
在尝试卸载之前,你应该解析它的输出,以确保没有任何东西仍在尝试使用它。
你可能也应该做一个懒惰的umount ,
umount -l /mountpoint
因此,如果您在执行lsof| grep
和调用umount
之间有任何访问权限,那么它仍会卸载驱动器并停止读取它。
HAL和朋友
也有可能HAL和朋友正在对驱动器进行连接/移除状态的唤醒。我真的希望它不是,但它在某些设备类型上做到了。这似乎不太可能,但我会考虑任何可能的事情。
尝试像
这样有趣的东西lsof /dev/devicehere
和
lsof /dev/devicehere1
这似乎可以直接或间接地获得将要访问句柄的所有内容的完整列表。
答案 1 :(得分:2)
您还需要检查挂载选项并使用“noatime”作为挂载选项,否则内核仍会定期更新访问时间。所以这也可能是你问题的原因。
答案 2 :(得分:1)
如果hdparm
返回以下内容:
drive state is: unknown
然后smartctl
返回此信息:
CHECK POWER MODE: incomplete response, ATA output registers missing
CHECK POWER MODE not implemented, ignoring -n option
然后将无法获取USB驱动器的睡眠状态。我tried multiple creative things喜欢USB功耗或监视文件访问,但没有发现任何东西可以验证驱动器的状态。
唯一的解决方案是用另一个USB桥接芯片替换USB SATA适配器(或机箱)。不适用于我的计算机使用了JMicron JMS567(152d:0578 / 0x152d 0x0578),它可能是updated,但由于更新工具需要ARM CPU,因此我无法对其进行测试。现在,我使用两个不同的适配器,它们都使用Asmedia ASM1051E / ASM1053E / ASM1153 / ASM1153E,它们都通过所有命令。
您可以按以下步骤检查USB SATA适配器/机箱的桥接芯片:
lsusb -v | grep -E ': ID |idVendor|idProduct'
哪个返回类似:
Bus 002 Device 003: ID 174c:55aa ASMedia Technology Inc. ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge
idVendor 0x174c ASMedia Technology Inc.
idProduct 0x55aa ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge
答案 3 :(得分:0)
我经常发现第二天早上驱动器还在旋转。
这不可能是因为它在服务器上再次旋转,例如。在夜间写入日志文件或其他内容?您可以尝试使用sdparm,它可以返回驱动器上的状态信息。但我认为最好只在你的BIOS中设置一个选项,让你的HD在一定程度的不活动后自动旋转,这样更容易。
答案 4 :(得分:0)
您是否尝试使用以下命令停止驱动器:
eject -t /dev/yourHD
这对我的USB硬盘非常有用。
答案 5 :(得分:0)
如果hdparm -C /dev/sda
说drive state is: unknown
而不是您的驱动器不支持,则无法告诉
您的其他问题(已由其他人回答)
相关:如果驱动器变热,您还可以自动暂停备份或一小时。