WD の IntelliPark 付き HDD の Load_Cycle_Count 増加を抑制する
Synology DS223j に IntelliPark を無効化できない WD80EAAZ (x2) を載っけてみました。
ディスクにダミーの読み書きアクセスをすることなくヘッドのアンロードを防ぎたかったので、他の方法を採用しました。
ATA NOP Command という何もしないコマンドを送ってみたところ、無事 Load_Cycle_Count が増えることなく動いているようです。
NAS 内に常駐させる場合の流儀とか調べるのが面倒だったので、コンテナを常時起動させることにしました。
ソース
AI() 様にほとんど書いてもらった。
動かし方
Container Manager を入れる
docker pull する
以下の記事によれば、ghcr.io は web 画面から設定できないようなので、docker pull する。
root@ds223j:~# docker pull ghcr.io/woremacx/go-ata-nop:latest
latest: Pulling from woremacx/go-ata-nop
2af3ff7d3219: Pull complete
Digest: sha256:ad03a840f450bccfcd6fc3f0f01fc2a9117689c4757512f361e2d035aaa540b6
Status: Downloaded newer image for ghcr.io/woremacx/go-ata-nop:latest
ghcr.io/woremacx/go-ata-nop:latest
web から pull できていることを確認。
起動させる
root@ds223j:~# docker run --restart=always --detach \
--privileged \
-u 0:0 \
-v /dev/sata1:/dev/sata1 \
-v /dev/sata2:/dev/sata2 \
ghcr.io/woremacx/go-ata-nop \
/app/go-ata-nop -verbose /dev/sata1 /dev/sata2
-verbose
つけてあるのでログが出ている。通常利用する場合は、-verbose
不要。
観察してみる
root@ds223j:~# while [ 1 ];do date; for f in /dev/sata?;do smartctl -a -d sat $f|grep Load;done;sleep 300;done
Sun Oct 20 05:32:38 PM JST 2024
193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 72
193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 78
---
Sun Oct 20 05:54:56 PM JST 2024
193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 72
193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 78
やってみたいこと
毎秒 /proc/diskstats をみて、一定時間アクセスがないと判断できた場合は NOP コマンドを送るようにしてみたい。