カテゴリ:ソフト開発日誌
壊れた SSD SAMSUNG 470 128GBytes (MZ5PA128HMCD-0AA00) を解析してみる。損傷率 (壊れたブロック数/全ブロック数) は 108459/250069680=4.33715e-4 となった。一方、損傷分布が 4 次元的になっている様に見え、広範囲に広がっている。SSD ならではの壊れ方だろう。
![]() 次の画像はサーバーから取り出そうとしている SSD だ。購入記録は 2010/9/18 に有った。使用期間 1 年半で故障した事になる。外観は特に痛みも無く、電子部品が焼けた様な跡や匂いも無い。 ![]() 次は先の sg_dd の実行結果を拾って不良ブロックをプロットしたものだ。512 byte を 1 ブロックとした 128Gbyte の SSD なので LBA は 28bit で表現できる。正方形の中にプロットするため (x, y) = (LBA%0x4000, LBA/0x4000) とし、不良ブロックだった LBA を赤点でプロットしてある。グラフの左下が LBA=0 である。視認性を高めるため大きめの点で打ってある。かなり壊れている様に見えるが、先の計算の通り損傷率は 4.33715e-4 だ。 ![]() PDF にした不良ブロック分布 2 次元的にプロットして見た結果、格子点状の分布が現れた。おそらく 4 次元空間にプロットすればどの様に壊れているか、より理解が得られるのかもしれない。より細かく見ると更に細分化された分布模様が現れる。下の方(つまりpartition table に近い方)は殆ど壊れていない様に見える。理由は不明た。LBA で示した partition tableと突き合わせても相関性が見られない。 ウェアレベリングアルゴリズムはどうなっているのだろうか?完全に書き込み回数を全体で平均化していたならば、特徴的な分布は現れにくいはず。摩耗の平均化より書き込み速度を稼ぐアルゴリズムなのか?それとも、不良メモリデバイスが有って、特徴的な不良ブロックのパターンになったのだろうか? つぎの 2 つの tar.gz ファイルは壊れた SSD の解析に使用した C ソースプログラム、gnuplot スクリプト、不良ブロックリストだ。短時間で動く事を目標としたので不正入力には弱いだろう。 sg_dd のメッセージ出力を不良ブロック・リストに変換するフィルタ(sg_dd の stdout, stderr 出力をリダイレクトして得られたテキストがフィルタの入力になります) 2012.3.20 フィルター処理修正、sg_dd 出力の空白を読み飛ばす様にしました gnuplot のスクリプトと実際に得られた不良ブロックリスト 上記のファイルは何れも BSD ライセンスとしている。参考になる内容では無いかもしれないけれど、好きに使ってもらえれば幸いだ。 不良ブロックに当たらなければどうということはない?当たったんだ...ディレクトリ消滅により、仮想マシン 1 台全損。 お気に入りの記事を「いいね!」で応援しよう
最終更新日
2012.03.20 01:26:29
コメント(0) | コメントを書く
[ソフト開発日誌] カテゴリの最新記事
|
|