電源を切るたびにチューン…と泣いていたHDDを優しくシャットダウンさせた記録
はじめに
前回の記事にて、RAIDアレイにrootfsを作り起動することは可能となりましたが、シャットダウン時に不安な音がするという問題を抱えていました。
普通のPCだとシャットダウン時には自動でHDDの電源が切れるものだと思うのですが、私の環境はM.2にNVMeディスクの代わりとして刺せるタイプのSATAカードというイロモノを使用しているため切れないようです。
(ASM1166を使用したカードで、Aliexpressでは$25ぐらいです。)
使用しているLinuxカーネルは6.1.60です。他のバージョンではパラメータが違うようなので注意
解決策
最初に言ってしまいますが、原因はなぜかカーネル上の電源管理が無効になっている事です。
カーネルパラメータを触るとちゃんと電源が切れるようになります。
上記はUSBディスクについての記事ですが、同様の事を行います。
ただし、現在のLinux 6.1.60では利用できるパラメータが異なっているようです。
解決までの道のり
上記リンクに倣い、手元のディスクの電源管理状況を見てみましょう。
まず/sys/class/scsi_disk/
から目当てのディスクを探します。
|
|
を実行するとモデルが確認できます。
ディスク番号がわかれば、状態を見てみましょう。
|
|
つまり管理が無効になっている状態です。
では記述に倣って1を入れてみましょう。
|
|
rootなのに権限が無いと言われてしまいました…
ソースを追ってみると
- sd.c
引用元: https://elixir.bootlin.com/linux/v6.1.60/source/drivers/scsi/sd.c#L215
1 2 3 4 5 6 7 8 9 10 11 12
static ssize_t manage_start_stop_show(struct device *dev, struct device_attribute *attr, char *buf) { struct scsi_disk *sdkp = to_scsi_disk(dev); struct scsi_device *sdp = sdkp->device; return sysfs_emit(buf, "%u\n", sdp->manage_system_start_stop && sdp->manage_runtime_start_stop); } static DEVICE_ATTR_RO(manage_start_stop);
- scsi_device.h
引用元: https://elixir.bootlin.com/linux/v6.1.60/source/include/scsi/scsi_device.h#L165
1 2
bool manage_system_start_stop; /* Let HLD (sd) manage system start/stop */ bool manage_runtime_start_stop; /* Let HLD (sd) manage runtime start/stop */
既に内部的にmanage_start_stop
というフラグは無く、manage_system_start_stop
とmanage_runtime_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
をどうにか実行しようとしていました。
シャットダウン時に何かするという面白いサイトがあったのでここに共有しておきます。