2013年12月7日

SSDの寿命をext4ファイルシステムの統計情報から推定する

SSDを選定する場合には書き込み量の推定が重要です。 

NAND Flashの各ブロックに書き換え回数の上限があるSSDでは書き込み総量に制限が存在します。
NAND Flash自体の書き換え回数上限は実装にどのような技術が使われているかにもよりますが数千回から10万回程度。HDDやRAMDISKではこの回数上限は事実上存在しません。

そのためSSDではファームウェアで各ブロックが均等に書き換えられるように工夫したり、外部に見せるより多い容量のNAND Flashを用意してブロックあたりの書き換え回数を減らしたり、不良ブロック発生時にもただちに影響がないようにしています。

このため、コンシューマ向けでは記載がないものもありますが、エンタープライズ向けSSDでは必ず総書き込み上限について記載があります。

適当にぐぐったIntelのSSD仕様の例: http://ark.intel.com/ja/products/75682/Intel-SSD-DC-S3500-Series-300GB-2_5in-SATA-6Gbs-20nm-MLC

耐久性評価 (書き込み上限数) 170 TBW 
この例では170TB書きこみできます。
170TB / 300GB =  566.66... なので、566回程度ディスク全体を書き換えられる。。 といわれてもまったくピンときませんよね。

たとえば想定される利用期間に対してトータル+安全係数で200TBくらい書きそうな場合にはこの製品よりグレードの高いものを選ぶべきです。しかしHDDでは書き込み回数に上限がなかったこともあり、これからSSDを使おうという場合に、書き込み容量総計についてはノウハウが無いまたは少ないケースが多いです。書き込み量がどのくらいかは完全にワークロード次第でかわり、負荷が高めのDBや、仮想マシンの作成・削除を頻繁に繰り返すような環境では非常に大きくなりえます。


ext4では2009年に導入されたパッチでファイルシステムへの書き込み総量を記録する機能をもつようになりました。この情報はdumpe2fsで確認できます。以下はHDDの例ですが、出力中の Lifetime writes:というフィールドがそれにあたります。
# dumpe2fs -h /dev/mapper/backup-backup
dumpe2fs 1.42.8 (20-Jun-2013)
Filesystem volume name:  
Last mounted on:          /var/spool/backup
Filesystem UUID:          fc89edc2-fab9-4d35-9761-f0fd60f6c171
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              122101760
Block count:              488377344
Reserved block count:     24418867
Free blocks:              196290282
Free inodes:              121615201
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      907
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Sun Nov 28 10:04:04 2010
Last mount time:          Mon Nov  4 09:50:05 2013
Last write time:          Mon Nov  4 09:50:05 2013
Mount count:              94
Maximum mount count:      34
Last checked:             Sun Nov 28 10:04:04 2010
Check interval:           15552000 (6 months)
Next check after:         Fri May 27 10:04:04 2011
Lifetime writes:          5899 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11

(以下略)

3年で5899GBほど書いています。月あたりの書き込み量を概算すると
6000GBの書き込み / 36ヶ月 = 166GBW/月
となり、ディスクの寿命を5年とすると
166GBW/月 * 60ヶ月 = 9960GBW
となります。書き込みの使われかたがおおよそ安定していると想定すると、10TBWほど。さきほどのintelのSSDを使えば余裕ですね。



RHEL 5 ELS inclusion listでてた

Red Hat Enterprise Linux 5 ELS Inclusion List https://access.redhat.com/articles/2901071  が公開されてた。 なかなか範囲が狭くて厳しい。あとインターネットに直接晒されるようなプログラムがの...