著者の一言

SSDが文鎮化したことはありませんか?

「SSDが文鎮化した」といった話をSNSで見かけることがあります。原因は様々ありますが、ここでは「瞬断⁠⁠、つまりデータの書き込み/読み出し中に突然電源供給がなくなったときのSSDの内部状況を説明することで、文鎮化の仕組みを理解したいと思います。

SSDのPBA(Physical Block Address;物理ブロックアドレス)とLBA(Logical Block Address;論理ブロックアドレス)の対応関係情報(マッピングテーブル情報、以下「マッピング情報」と省略)は動的に変化しますが、SSD内部の保管場所としては2箇所あります。1つ目はデータを記憶した同一Word Line(WL[1]上、2つ目はメタデータ領域です。これに動作中のDRAM内が加わります。

この点を少し掘り下げると、動作中のSSDは、パフォーマンスとデータ保護の両立のため、以下の3層構造で管理されています。

格納場所 役割 特徴
DRAM メインテーブル(最新のマッピング情報) SSD動作中の高速アクセスと更新処理用
メタデータ領域(SSD) マッピング情報のスナップショット及び、前回の保存時からの変更を記録した「ログ(ジャーナル⁠⁠」 定期的にDRAMの内容を保存(ログ保存⁠⁠。再起動時の復元に使用する
WL(NAND) 最終的な証拠 実データとセットで書き込まれる「LPN情報」

Power Loss Protection(PLP)機能を搭載していないSSDの場合、DRAM(SSD内部)内のマッピング情報は消滅しますが、再起動時にコントローラが以下の手順でテーブルを再構築できれば、継続使用が可能です(途中で終了する場合もあります⁠⁠。

  1. 整合性チェック:正常保存された「最後のマッピング情報(メタデータ領域の世代番号⁠⁠」をスキャンし、正しいかをチェックする。
  2. ログのリプレイ処理:更新が完了していない場合は、ログ領域をリプレイし、停止直前に書き込まれたログ(ジャーナル)を追って、最新の状態を復元する(ロールフォワード[2]⁠。
  3. 最終手段:上記のログでも追いきれない場合(最悪のケースですが⁠⁠、WLのLPN情報を直接走査してマッピングテーブル情報を照合する。

少し混乱するかもしれませんが、ログ保存処理・実施直後に、⁠メインテーブルがきれいに消滅」した場合は、障害状況としては「軽度」と言えます[3]。ハードウェア故障の世界で軽度なのは「美しく停止した状態」で、問題を複雑化するのは「中途半端に故障している」場合が多いのですが、これはSSDにも当てはまります。

SSDで言えば、メタデータやログが書き込み途中で破損し、⁠どの情報が正しいか判断できない(不整合⁠⁠」という中途半端な状態です。このような不整合で上記の処理が成功しなかった場合、SSDは以下のような状態になります。

①Read-onlyモードへの移行:整合性が怪しく、追加の書き込みを行うと全データが失われる可能性があると判断し、データの読み出しだけを許可する状態への移行。なおNVMe SSDでは厳密には、Read-onlyモードではなく、特定のステータスコードを返す製品が多い。
②パニックモード/ビジー状態(Busy Status)への移行:マッピング構造が論理的に崩壊しており、ホストOS(Windows等)に対して正しい応答ができなくなる。デバイスマネージャーでは認識されても「容量0GB」「不明なデバイス」と表示される場合がこれに該当。
③ロック(ファームウェア・ロック)状態への移行:コントローラが、メタデータが壊れていると認識し、ブートローダー段階で停止したり、セーフモードに入ったり、NVMe Identifyだけを返す状態に移行したり、あるいは永久Busy状態に移行し起動プロセスを停止させたりする。これがいわゆるSNSで言われている「SSDの文鎮化」状態。

ちなみに、②や③であっても、NANDチップ自体は無事である場合(実データが残っている場合)は、データ復旧業者は、基板からチップを剥がして(Chip-Off⁠⁠、不整合が起きているマッピング情報を無視して、WL上に残された内部論理識別情報等を直接読み取り、読み取った情報を手掛かりに論理構造を再構築しデータ復旧を試みることが可能です。

またデータは救えないものの(データ復旧不可⁠⁠、パニックモード/ビジー状態(Busy Status)の場合、エラーの原因が論理的な不整合によるものだけであれば、OSによる初期化ではなく、SSD側で用意された初期化コマンド(例:NVMe Sanitizeコマンド)が利用可能なSSDの場合は、再利用可能な場合もあります(無論、コマンドを受け付ける状態に限られます⁠⁠。但し、決して、お薦めはしませんが……

本書『SSD技術概論』では、このようなSSDの挙動を可能な限りNANDの仕組みレベルまで掘り下げて解説しています。ご興味を持たれたらお手に取ってもらえると幸いです。

[1]: 同一WL上には、データ領域とは別に、LBA情報(正確には「内部論理識別情報:LPN(Logical Page Number)/Virtual Page Number⁠⁠、エラー訂正符号(ECC⁠⁠、ブロックのステータス情報などが格納される領域(Out-Of-Band領域)があります。
[2]: ロールフォワードとは、過去の正常なバックアップから、障害直前の最新状態へ「前進」させる復旧プロセスのことです。
[3]: 例えばデータが記録あるいは更新されても、マッピング情報のログが保存されていない場合は、再起動後のSSDは、データが存在しないものとして扱うか、古いデータを利用可能にします。

浅野浩延(あさのひろのぶ)

1987年,関西大学(社会学部)卒業,米Digital Equipment社(現Hewlett-Packard社)の日本法人に入社。コンピューターやストレージシステム全般ビジネスに従事。その後,米国SMART社に転籍しアジア地区セールス責任者,Microsoftを経て,パナソニックソリューションテクノロジーで営業推進や事業企画部門のグループマネージャ,ソルナックで営業部長,フィックスターズでディレクター,インサイトテクノロジーでビッグデータソリューション開発部長などを歴任。

日経BP社や日本HDD協会(IDEMA Japan)主催SSDセミナーなどで,講師として登壇。

現在は,一個人の立場で,X(旧Twitter)上で,様々なIT ネタを含む,興味のある話題に意見を発信中。

[X] https://x.com/Hironobu_Asano