Crucial M500 の write endurance が 75TB しか無いというのが話題になっていて、同じく 75TB である m4 をわざと虐待していたホストはどうなったのか気になって調べて見たところ、面白い結果が観測されたという話。
石橋を叩いて壊し障害時の挙動を見るべく「自社全サービスのアクセスログを受け止める syslog サーバ」という、どう見ても書き込み中心で SSD にやさしくないホストをあえて動かしていた。具体的には下記のようなノリのホストである。 iostat の一行目なので uptime 数百日における平均値であることに注意。
[root@touge ~]# iostat -k -x -d sda | sed -n '3,4p' Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 27.36 414.31 47.72 82.46 2902.21 3431.04 97.30 0.39 2.96 0.62 8.04 [root@touge ~]#
平均で 3431KB/s 出ている。上記は HV 上での値なので、 VM の block device layer における write merge 前では write 900IOPS ぐらい。
SMART Attribute を確認して見たところ、 14ヵ月でだいぶ磨り減ったことが観測された。*1 202 Perc_Rated_Life_Used は保証期間に関する値で、書き込みまくって VALUE が 0 になるとメーカ保証の範囲外となる。 Perc は Percentage の略で、 RAW VALUE は「何パーセント使ったか」であろう。
[root@touge smartmontools-6.1]# ./smartctl -i /dev/sda | egrep '(Model|Firm|Capa)' Model Family: Crucial/Micron RealSSD m4/C400 Device Model: M4-CT512M4SSD2 Firmware Version: 0309 User Capacity: 512,110,190,592 bytes [512 GB] [root@touge smartmontools-6.1]# ./smartctl -A /dev/sda | egrep '^(ID| 5| 9|173|195|202)' ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0 9 Power_On_Hours 0x0032 100 100 001 Old_age Always - 13748 173 Wear_Leveling_Count 0x0033 033 033 010 Pre-fail Always - 2018 195 Hardware_ECC_Recovered 0x003a 100 100 001 Old_age Always - 106 202 Perc_Rated_Life_Used 0x0018 034 034 001 Old_age Offline - 66 [root@touge smartmontools-6.1]#
m4 の保証値である 75 TB を 3431KB/s で焼きつづければ単純計算で 271日なので、そら当たり前だろうという話ではあり、設計段階から分かっててわざとやった結果である。むしろ 3.4MB/s で 426日ほど*2焼きつづけたのにまだ 1/3 残ってることが驚きである。 2.35倍ぐらい持っている。
173 Wear_Leveling_Count の RAW VALUE も興味深い。 25nm 世代 NAND の書き換え回数が 3000回なので、これがページの平均書き換え回数だと色々しっくりくる。
14ヵ月で 1/3 まで減っているので、単純計算すると上記の使い方でこいつは 2年弱しか持たない。実環境の最悪値かつ保証が切れるだけだが「容量が手狭になるまで持てばいい!」で済ますには微妙なラインである。
結論
最近の*3コンシューマ向け SSD は書き込みまくる用途だと壊れうる。
常日頃から「SSD は壊れない」とか言っていますが、これは「お前が言ってる書き込み量はバーストの値*4でライフサイクル平均でそんな書いてる訳じゃないだろ」ないしは「DB 用途でヘビーに使っていても実は書き込みは*5そんなに多くない」という側面が強く*6、裏を返せばライフサイクル平均で書き込み量が重くのしかかる用途だと寿命を気にする必要がある。
気にする必要がある、なので、たとえば「同じぐらいの平均書き込み量で 10台ストライプするから 4000日=11年ぐらい保証の範囲で使えるので大丈夫だろう」なり、「書き込み 3倍あって同じく単体で使う予定だから 4ヵ月でいつ壊れてもおかしくない」という話ではある。
コンシューマ向け SSD も登場から年月が経ち、各ベンダーとも読みが正確になってきたのかマージンが削られる傾向にある。*7エンタープライズ向け SSD を選択肢に入れるなど、きちんと書き込み量のキャパシティプランニングを行う必要がある時期に達しつつあるのではないだろうか。
備考
以下は、生の smartctl 出力と備考。
- TRIM を使っていないので消耗が激しくなっている可能性がある
- VM 側のアライメントは合わせてある(はず)
- 容量の 80% ぐらいをファイルで埋めている
- これは極端な例なので他の多数の m4 は 8割 9割残っている
- 202 Perc_Rated_Life_Used の RAW VALUE は 100% を越えて動く模様
- この手の値をグラフにしようってのいい加減手をつけろ >self
- サーバにおいて「ピーク MB/s」みたいな微分やピークには敏感だが「積算 MB」のような単位は未経験で勘が鈍いのではないか
- 積算で効くのは稼働時間ぐらいしか思いつかないが時間の流れる速さは大体一定である
[root@touge smartmontools-6.1]# ./smartctl -iA /dev/sda smartctl 6.1 2013-03-16 r3800 [x86_64-linux-2.6.18-238.19.1.el5xen] (local build) Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Model Family: Crucial/Micron RealSSD m4/C400 Device Model: M4-CT512M4SSD2 Serial Number: 00000000111403056xxx LU WWN Device Id: 5 00a075 103056783 Firmware Version: 0309 User Capacity: 512,110,190,592 bytes [512 GB] Sector Size: 512 bytes logical/physical Rotation Rate: Solid State Device Device is: In smartctl database [for details use: -P show] ATA Version is: ACS-2, ATA8-ACS T13/1699-D revision 6 SATA Version is: SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s) Local Time is: Tue Apr 16 19:54:36 2013 JST SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x002f 100 100 050 Pre-fail Always - 0 5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0 9 Power_On_Hours 0x0032 100 100 001 Old_age Always - 13747 12 Power_Cycle_Count 0x0032 100 100 001 Old_age Always - 7 170 Grown_Failing_Block_Ct 0x0033 100 100 010 Pre-fail Always - 0 171 Program_Fail_Count 0x0032 100 100 001 Old_age Always - 0 172 Erase_Fail_Count 0x0032 100 100 001 Old_age Always - 0 173 Wear_Leveling_Count 0x0033 033 033 010 Pre-fail Always - 2018 174 Unexpect_Power_Loss_Ct 0x0032 100 100 001 Old_age Always - 1 181 Non4k_Aligned_Access 0x0022 100 100 001 Old_age Always - 65535 44819 28690 183 SATA_Iface_Downshift 0x0032 100 100 001 Old_age Always - 0 184 End-to-End_Error 0x0033 100 100 050 Pre-fail Always - 0 187 Reported_Uncorrect 0x0032 100 100 001 Old_age Always - 0 188 Command_Timeout 0x0032 100 100 001 Old_age Always - 0 189 Factory_Bad_Block_Ct 0x000e 100 100 001 Old_age Always - 323 194 Temperature_Celsius 0x0022 100 100 000 Old_age Always - 0 195 Hardware_ECC_Recovered 0x003a 100 100 001 Old_age Always - 106 196 Reallocated_Event_Count 0x0032 100 100 001 Old_age Always - 0 197 Current_Pending_Sector 0x0032 100 100 001 Old_age Always - 0 198 Offline_Uncorrectable 0x0030 100 100 001 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x0032 100 100 001 Old_age Always - 0 202 Perc_Rated_Life_Used 0x0018 034 034 001 Old_age Offline - 66 206 Write_Error_Rate 0x000e 100 100 001 Old_age Always - 0 [root@touge smartmontools-6.1]#
m4 の話ばっかりしてるけど、 Intel, Samsung も同等以上にバンバン使っているので、そいつらも取り上げていきたい。