- ベストアンサー
SSDのレベルウェアリングとは?ドライバの役割やHDDとの違いについて知りたい
- SSDのレベルウェアリングは、記憶装置の処理能力を均等に分散させるための技術です。これにより、SSDの寿命を延ばし、データの耐久性を向上させることができます。
- SSDのレベルウェアリングは、OSのドライバが担当しています。ドライバは、SSD内部のメモリセルに書き込む際に、各メモリセルの使用回数を均等にするように制御します。
- 一方、HDDではドライブが内部で負荷分散しています。HDDの場合、物理的なディスク上のセクタが故障した場合に、予備のセクタに自動的にデータを移動します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
10年は前だったと思いましたが、SSDの1セクタを狙って書き込みを連続で行い、(レベルウエアリングが効いてても効いて無くても)SSDをだめにする実験という記事を読んだ記憶があります。 それをgoogle検索で探していたら、 > SSDにデータを書込みまくり再起不能に追い込む耐久試験 https://gigazine.net/news/20150316-ssd-endurance-experiment-4th/ > SSDの耐久実験で書き込み150万GBの壁 https://gigazine.net/news/20140926-ssd-endurance-experiment-2nd/ というのを発見しました。 そこに、いろいろ書いてありますね。
その他の回答 (3)
- m5048172715
- ベストアンサー率16% (860/5261)
デフラグメンテーションの書き込み量は多いので、単純に、デフラグはSSDの書き込み可能量を大きく減らすからデフラグはSSDによくないのでしょうね。 SSD専用のドライバー又は分散書き込みシステムをOS側に新しく用意するより、SSDを、シークが高速なHDDだと見せかける方が、互換や安全性の面でよかったのではないかとも私は思います。 余談ですがマイクロデータの空飛ぶ絨毯だったかなあ。あれはHDDのセクタを3次元空間的に分析して、ヘッドの移動量を最小にしていたという話しだった。
補足
お付き合い有難うございます。 デフラグの話もそうなんですが、私が最初に疑問を持ったのは hibernate を使っているとSSDはすぐ劣化するという意味の指摘をインターネットで散見したことなんです。 仮にメインメモリ32GBのPCを使っていて日に3回ぐらいhibernateする。1年で32TB程度の書き込みですよね。NANDデバイス自体は数十万回ぐらいの繰り返し消去・書き込みを保証している。500GBのSSDで完全な劣化均等化をしている場合、10万回書き込み可能として0.5*1e5/32=1562.5年は持つ計算です。そうそう劣化するような話にはならない。なぜhibernateがいけないんだろう? ご指摘があったデフラグが次のきっかけでした。NANDの場合ブロック消去+ページ書き込みなので、何が真っ先に酷使されるかわかりにくいのですが。やっぱり不思議です。 少なくともSSD自身が中で色々やっていることはWindowsのchkdskでもわかります。未使用セクタの正常性チェックがSeagate製品の場合、恐ろしく速い。使用済みセクタと比べて少なくとも5倍、体感10倍以上違う。おそらく実際にはSSD内部では何もせず単に正常終了のコードをホストに返しているのだと思います(1分程度で300GBの未使用領域のチェックが完了する)。読み出しも少しはデバイスに負荷を与えるので避けているのかなあという気がします。想像ですが。 SSDを長持ちさせたいので、どこが最初に劣化するのか知りたい所ではありますが、具体的な話はあまり目にしません。発売済みだから特許申請済みなのは確かなので教えてくれてもいいのに!(笑) >余談ですがマイクロデータの空飛ぶ絨毯だったかなあ。あれはHDDのセクタを3次元空間的に分析して、ヘッドの移動量を最小にしていたという話しだった。 そうなんですね。これを聞いて、floppy discがFATをディスク中央のシリンダに配置していたことを思い出しました。メモリにアロケーションテーブルをキャッシュしている状態でこれに意味があったのか今となっては謎ではあります。
- wormhole
- ベストアンサー率28% (1626/5665)
SSDのウェアレベリングは当初からSSD自身で行ってますよ。
お礼
m5048172715氏から助言を頂いています SSDは何かはしているが、その程度はNAND Flashデバイスの実力を十分発揮できるところまでは到達していないようです。 書き込みありがとうございました。
補足
回答ありがとうございます。 SSD自身がやっているのですね。ある程度はやっていると思うのですが、どこまでなのかな、という気もします。先に回答を頂いた方に指摘して頂いたように、デフラグは良くないという販売元の解説が未だに残っているので少々不思議な気がするのです。 (デフラグについては、HDDでもサーボ駆動がデフラグで大量発生するのでヘッドの固着やらサーボ劣化やらよろしくないけれど、なぜか余り言われなくなってしまいました。なぜだろう?) 重ねて回答ありがとうございました。
- m5048172715
- ベストアンサー率16% (860/5261)
SSDがこっそりやっているみたいだ。参考のURLでは文が受け身で主語が不明だった。 このアドレス変換テーブルや消去回数のカウンタなども、ユーザーがアクセスできないフラッシュメモリ内の(データ領域以外の)場所に何かが保管している。 https://www.logitec.co.jp/data_recovery/column/vol_003/ 主語はSSDかな?
補足
回答ありがとうございます。 謎に感じるのは、ディレクトリエントリなどの書き換えの場合、ライトバック時に別の物理セクタに書き込まれるのか、です。一対一の論理・物理マッピングを動的に変更するテーブルが必要になりますよね。でも、このテーブルだけは物理的な位置を変更できないし、そこだけ劣化したらお終いですよね。 512バイトセクタと仮定するとセクタアドレスが6バイト程度として全容量に対して2%程度のメモリが別途必要になる(2TBなら16GBのSLTなど用意するのかな)。 SSDが自力で劣化均等化をしているとして、それならばデフラグがなぜ良くないのかという疑問も出てくる(同一セクタ数十万回~数百万回は書き換え可能なはずなので、本当に均等化できるならそこまで気にしなくともという気がするのです) 最近の風潮は壊れたら買い替える流れなので、質問に書かせていただいた通り、そんなに気にしなくてもいいのではありますが。 だって、普通のRAMも読み書き上限回数ありますからね!気にし始めたら多分眠れません(笑)
お礼
追加の補足を書き込む手段がないので、ここに書くのですが もし500GB(0.5TB)のNANDデバイスが10万回書き込み可能なら、のべ50Peta Byte (0.05Exa Byte)書き込み可能。紹介記事の2Peta byteとは相当開きがあります。 まだSSDの負荷均等化は発展途上なのでしょうね。 お付き合いありがとうございました。
補足
こういう記事を見つけました。 https://superuser.com/questions/1267470/is-there-any-value-in-running-a-surface-test-on-an-ssd 予想通りですが、ブロックイレースのせいで、1ページのライトバック分散のために、他の10近い同ブロック内のページも同時に分散させることになるだろう、と。とあります。従って、たった一ページの負荷分散のために10倍ちかいページ、場合によってはブロックとマッピングテーブルが巻き添えを食う(劣化が10倍速い)可能性が高い。 これを避けようとすると巨大なNOR Flasベースの書き換えテーブルが必要(NOR Flashはワード単位更新・・・1->0変化はいったんイレースしたらワード単位で可能なので)をマッピングテーブルに使うことになるんでしょうけど、SLCのNORは高価なので0.1%のオーバヘッドでも無視できないコストかもしれません。追記データ回数も膨大でしょうし。 なんにせよ、個人的な結論としては ・レベルウェアリング(劣化の度合い制御。ウェアレベリングとも書くようですが)は名前と裏腹に現時点では副作用も大きく、実用上効果が大きいとは断言できない。端的に書けば未完成(Seagateがreliablityをデータシートに明記していないのも納得できます)。 個人的には、まだまだOSやドライバレベルでSSDに特化して最適化したほうがいいんじゃないかと思います。スラブを使うなどすれば実際にライトバックする必要も激減しますし、デフラグもSSDなら禁止してしまえば確実。現状ではWindowsよりLinux系列のほうが安全かな? 個人的には、SSDは何かしているけれど、シーケンシャルライト(セクタナンバー順アクセス)ならともかく通常のinode操作やdentry操作には不向きなのかなあ、という印象です 重なる資料紹介、ありがとうございました。