調べた
WD製のHDDにはIntelliParkというエコ機能があるらしい。調べてみたが、公式の文書はもはやないようなのと、サポートで検索してみてもなぜかBAD Gatewayとなって検索できなかったり、謎の機能。でも実装はされているらしい。
ググると、磁気ヘッドを退避(アンロード)させて待機状態にすることで省電力になるというものらしい。この省電力の状態を Idle 3 と呼んでいるらしい。製品によるかもしれないがデフォルトでは8秒でこの状態に移行するらしい。
しかしアンロードの操作回数は寿命の1つの目安でもあるため「それを無駄に行うとはけしからん!無効化したりしなかったりしろ!」と言われる機能らしい。
無効化するには?
非公式だけど、最近はhdparmで設定できるらしい。オプションが面白すぎる
https://wiki.archlinux.org/title/hdparm#Power_management_for_Western_Digital_Green_drives
もちろん無効化ではなくIdle 3に移行するまでの猶予時間を指定することもできる。Arch Linux Wikiでは30秒当たりが良いのではとのこと。使われ方にもよると思うけど。
試した。デバイスの/dev/sdb
は適宜置き換える。多分他のデバイスにやると危険かもしれない。
hdparm -V
sudo hdparm -J /dev/sdb
sudo hdparm -J 0 /dev/sdb
sudo hdparm -J 0 --please-destroy-my-drive /dev/sdb
sudo hdparm -J 30 --please-destroy-my-drive /dev/sdb
感想
ロード/アンロードで寿命に影響するのか?
個人的には「別にヘッドはランダムアクセスしたらもっと激しく動き続けるんだから電源オン/オフで変わるもんなの?」という思いがある。
今WD60EZAXを使っているが、その製品仕様は以下のように公開されている(URLは変わるかも)
https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/internal-drives/wd-blue-hdd/product-brief-western-digital-wd-blue-pc-hdd.pdf
で、そこに「Load/unload cycles (Controlled unload at ambient condition.)」で300,000回とある。これが十分な回数かどうかはわからないが、よく1分毎にログを取るということはサーバ用途ではやりますから、ちょっと強引ですが60秒ごとにアクセスするとしてみる。すると8秒で待機状態になるなら60秒に1回ロードが起きる。これを基準にすると208日で到達してしまう。そう考えるとこの30万回というのはちょっと少なすぎるという印象。とはいえ、そもそもサーバ用途に使うことは想定されてなくて保証も2年だから多分想定が違いそう。1日8時間使い倒すスタイルならロード回数が1/3以下になるので保証期間内ギリギリという感じになりそう。
とはいえ長く使いたい。そういったときにIntelliparkをオフにするもしくは長めに設定する価値があるのかという話。
ただ個人的には、ずっとWDのHDDをつかってNASを組んでおり、特にハードな使い方をしているわけではないとはいえ、7年でようやく1台故障したという経験がある。
そして今の4TB x 4のNASはそこからしばらく動いているので、うーんといった印象。省電力機能が逆に機能しているともいえそうだけど。
とりあえず現状はこんな感じ。正直、LVMの関係でめんどくさいことになってる。
# mdadmのRAID1とHDDデバイスのマッピング確認
$ cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sdd[3] sde[2]
3907017560 blocks super 1.2 [2/2] [UU]
[===========>.........] check = 55.7% (2176986368/3907017560) finish=197.6min speed=145879K/sec
md127 : active raid1 sdc[2] sdb[3]
3907017560 blocks super 1.2 [2/2] [UU]
[===========>.........] check = 55.4% (2167825664/3907017560) finish=201.0min speed=144183K/sec
unused devices: <none>
# PVとLVのマッピング確認
$ sudo lvs -o+seg_pe_ranges
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert PE Ranges
nas vg1 -wi-ao---- <5.64t /dev/md126:524288-953860
nas vg1 -wi-ao---- <5.64t /dev/md126:393216-487930
nas vg1 -wi-ao---- <5.64t /dev/md127:0-953860
iscsi vg1 -wi-ao---- <1.64t /dev/md126:0-393215
iscsi vg1 -wi-ao---- <1.64t /dev/md126:487931-524287
# こんな感じにマッピングされている
# |iscsi|nas|iscsi | nas |
# | md126 | md127 |
# | sdd / sde | sdb / sdc | # <= ここはRAID1なので1台分
# なんでこんなヘンテコな割り当てにしたんだろう…
# 一応用途としては、iscsiはあまり使われていなくて、nasをよく使っている。 /dev/md127である sdb/sdcはよく使われているということ
# sdb(/dev/md127のほう)
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0
3 Spin_Up_Time 0x0027 170 169 021 Pre-fail Always - 6475
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 30
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 100 253 000 Old_age Always - 0
9 Power_On_Hours 0x0032 043 043 000 Old_age Always - 42174
10 Spin_Retry_Count 0x0032 100 253 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 253 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 30
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 15
193 Load_Cycle_Count 0x0032 191 191 000 Old_age Always - 29487
194 Temperature_Celsius 0x0022 103 099 000 Old_age Always - 47
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0
# sdd(/dev/md126のほう)
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0
3 Spin_Up_Time 0x0027 165 164 021 Pre-fail Always - 6725
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 30
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 100 253 000 Old_age Always - 0
9 Power_On_Hours 0x0032 043 043 000 Old_age Always - 42165
10 Spin_Retry_Count 0x0032 100 253 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 253 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 30
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 15
193 Load_Cycle_Count 0x0032 001 001 000 Old_age Always - 1204985
194 Temperature_Celsius 0x0022 102 099 000 Old_age Always - 48
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0
Load_Cycle_Count はsddのほうが狂ったように増えている…ISCSIで繋げている弊害だろうか…
まぁでもこれだけやっても動いているんだし…気にせんでもよいのでは感がある。
(壊れていてただたまたまアクセスが発生していないから問題になってないという可能性もありそうだが。ただその場合はRAIDの同期で悲鳴が上がるはずだしなぁ。)
とはいえ、無効にしてみたさはあるので、次のNASには設定をしてみたいと思う。
(実はまだNASの移行が終わってない。作って満足しちゃって空き容量もまだあるから移行するきっかけがなくてめんどくさくなっちゃって…)