SSDが壊れた

この半年ほど機材が壊れまくってちょっと泣きそう。2月はサーバ1台とUPSも逝ったし。

今回はLinuxのOpenSUSEが入っている個人的にメインで使っている端末のSSD。購入して1年半程度。
データはNASに置いているのでほぼOS専用。SSDはOSやアプリの起動が速いので気分良いという理由で使っていた。
ここ数ヶ月、ちょくちょく謎のハングアップが発生していて変だなとは思っていたけど、それ以外は特に大きな異常は感じないでいたが突然ズドンと死んだ感じ。
ハングアップした後、リセットボタンを押したらもう2度と起動することはなかった。他のPCに繋いでもデバイスとしては認識されるがデータにはアクセスできなかった。
これがハードディスクならカッコンカッコン音がし始めたらデータを待避して新しいハードディスクを買ってきてという時間的余裕が貰えるのだけれどSSDは容赦無い。
おかけで設定ファイルやブラウザのブックマークなどを取り出すことができなかった。

悔しいので壊れたSSDをバラしてみた。

SSDが壊れた 2
こちらが壊れたSSD。台湾のシリコンパワーというメーカーの32GBの安物です。OS専用なので容量的にはこれでも全然余りまくりの超余裕。PCのメモリが潤沢なのでスワップは無しという運用。その方がSSDの書き換え回数が少しでも減るでしょうし。

SSDが壊れた 2
裏側の四隅のネジを外す。ネジの内1つだけ銀色のシールで覆われていて、このシールを剥がすとメーカー保証が無くなる。

SSDが壊れた 3
カパッと蓋を開ければメモリ基板が見える。更に見えているネジ4本を外す。

SSDが壊れた 4
K9GBG08U0A-SCB0 27nm 32Gb NAND Flashチップ。サムスンの糞メモリだった。なるほど壊れるの早かったわけだ。

SSDが壊れた 5
JMicron製の第2世代 JMF616というコントローラーチップが見える。手前のNANYAのチップはよく解らない。

この製品の分解には「コツ」も「力」も不要、小学1年生でもできる超カンタンレベルです。まぁ、バラしたからって何もないわけだが・・・捨てるまでにチップは壊すよ
安物のSSDはやはり寿命が短いのでしょうかね。高価な長寿命SSDを買うというのもありかもしれないけどSSDは壊れた時のデータサルベージが無理なのでアクセス速度が速いという利点はあれど今後はもう使いたくないというのが本音。

WordPressのwp_postmetaテーブルを掃除する

たとえば、この「がとらぼ」の様にのんびり手打ちで作るような個人ブログではあまり関係ありませんが、WordPressの管理画面は大量のデータを引っ張ってきてコンテンツをドバッと作るような操作は出来ないのでそれ用のスクリプトを作って行います。大規模なコンテンツサイトを構築する場合はカスタムフィールドにデータを突っ込むことになると思いますが、そこに適当に作ったスクリプトでデータを入れると「汚れる」ことがよくあります。(そんないいかげんなスクリプトを使ってはいけませんね)

汚れ方として多いのは「データの重複」。WordPressのカスタムフィールドはいくらでも重複データを置けてしまうのでうっかりバグったスクリプトでデータを流し込むとアホみたいに重複データが溜まります。で、無駄なデータが溜まり過ぎるとWordPressの記事表示が遅くなります。
これを綺麗にするにはMySQLでpw_postmetaテーブルを触って重複データを除いてやります。

wp_postmetaテーブル
meta_id post_id meta_key meta_value
ここは自動採番 コンテンツ番号 カスタムフィールド(名前) カスタムフィールド(値)

この内のpost_id, meta_key, meta_value(緑の部分)の全てが重複したものを対象とします。

SQLクエリ

DELETE wp_postmeta FROM wp_postmeta INNER JOIN (SELECT post_id, meta_key, meta_value, MIN(meta_id) AS min_id, COUNT(*) FROM wp_postmeta GROUP BY post_id, meta_key, meta_value HAVING COUNT(*) > 1) AS DUPLICATION ON wp_postmeta.post_id = DUPLICATION.post_id AND wp_postmeta.meta_key = DUPLICATION.meta_key AND wp_postmeta.meta_value = DUPLICATION.meta_value AND wp_postmeta.meta_id <> DUPLICATION.min_id;

データが数十万件程度なら数秒で重複したデータが綺麗に消えます。(重複したデータの内のmeta_idが最小のものが1件残ります。)

wp_postmetaテーブルのmeta_valueの値が重複するというのは正常な場合でもあることなので精査せずに全ての重複を嫌わないようご注意ください。

Up