春雨日記 about me tags

電源を切るたびにチューン…と泣いていたHDDを優しくシャットダウンさせた記録

はじめに

前回の記事にて、RAIDアレイにrootfsを作り起動することは可能となりましたが、シャットダウン時に不安な音がするという問題を抱えていました。

普通のPCだとシャットダウン時には自動でHDDの電源が切れるものだと思うのですが、私の環境はM.2にNVMeディスクの代わりとして刺せるタイプのSATAカードというイロモノを使用しているため切れないようです。

(ASM1166を使用したカードで、Aliexpressでは$25ぐらいです。)

使用しているLinuxカーネルは6.1.60です。他のバージョンではパラメータが違うようなので注意

解決策

最初に言ってしまいますが、原因はなぜかカーネル上の電源管理が無効になっている事です。

カーネルパラメータを触るとちゃんと電源が切れるようになります。

参考リンク: https://forum.manjaro.org/t/graceful-way-to-spin-down-unload-head-usb-attached-mobile-hard-drive-before-shutdown-poweroff-reboot-halt/136844/10

上記はUSBディスクについての記事ですが、同様の事を行います。

ただし、現在のLinux 6.1.60では利用できるパラメータが異なっているようです。

解決までの道のり

上記リンクに倣い、手元のディスクの電源管理状況を見てみましょう。

まず/sys/class/scsi_disk/から目当てのディスクを探します。

1
2
# cat /sys/class/scsi_disk/<ディスク>/device/model
WDC WD5000AZLX-0

を実行するとモデルが確認できます。

ディスク番号がわかれば、状態を見てみましょう。

1
2
# cat /sys/class/scsi_disk/0\:0\:0\:0/manage_start_stop
0

つまり管理が無効になっている状態です。

では記述に倣って1を入れてみましょう。

1
2
# echo 1 > /sys/class/scsi_disk/0\:0\:0\:0/manage_start_stop
-bash: /sys/class/scsi_disk/0:0:0:0/manage_start_stop: Permission denied

rootなのに権限が無いと言われてしまいました…

ソースを追ってみると

既に内部的にmanage_start_stopというフラグは無く、manage_system_start_stopmanage_runtime_start_stopが有効なら1を返すようになっていました。

なのでセットしてみます。

1
2
3
4
5
# echo 1 > /sys/class/scsi_disk/0\:0\:0\:0/manage_runtime_start_stop
# echo 1 > /sys/class/scsi_disk/0\:0\:0\:0/manage_system_start_stop

# cat /sys/class/scsi_disk/0\:0\:0\:0/manage_start_stop
1

1になりました。 試しに再起動してみると、無事に電源が切れるようになりました!

永続化

このまま手動で有効化するのは面倒なので永続化してみます。

  • /etc/udev/rules.d/00-sata-power-management.rules
    ACTION=="add|change", SUBSYSTEM=="scsi_disk", ATTR{manage_runtime_start_stop}="1", ATTR{manage_system_start_stop}="1"
    
    参考リンクにある記述を使用しています

SCSIサブシステムに適用してしまっているため一部のSATAでないデバイスで問題が出る可能性があります。 十分注意してください。

おわりに

同じような悩みの先人が居て助かりました。 udevルールまで載せていただいて感謝…

しかし、Linux 6.5にて気になるパッチが(なんと数時間前に)投稿されていました。

https://www.spinics.net/lists/stable/msg692825.html

さらにパラメータが変わる可能性もあるので、ダメなときはこっちにしてみてください。

おまけ

最初カーネルパラメータの存在に気付かず、hdparm -Yをどうにか実行しようとしていました。

シャットダウン時に何かするという面白いサイトがあったのでここに共有しておきます。

https://www.ymstmsys.jp/blog/2023/08/11/