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 する。

Adding ghcr (Github Docker Regustry) to Synology docker results in “Registry returned bad result” - Stack Overflow

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 コマンドを送るようにしてみたい。