Technically Impossible

Lets look at the weak link in your statement. Anything "Technically Impossible" basically means we haven't figured out how yet.

傷ついた光学メディアからのデータ・サルベージ CD、DVDのデータ復旧

f:id:espio999:20210221132714j:plain
90年代のPCゲーム・パッケージを見つけ、懐かしく感じた。当時のソフトウェアはCD-ROMに収録されているものが多い。中古となれば現在のPC環境へのインストール、動作対応可否以前に、メディアの状態が、購入に際し真っ先に立ち上がる懸念事項となる。それは経験劣化もさることながら、以前の持ち主の雑な取扱いにより傷ついたメディア、そのダメージ度合いだ。
懸念通り、購入したパッケージに含まれていたメディアは傷物だった。マウント部周辺の記録面が、放射状に傷ついている。冒頭の画像はその一部だ。

傷によってデータの読み取りに支障が生じ、結果としてデータが部分的に読み出せない、あるいはファイル全体が読み出せず、結果として失われてしまったも同然な事態となる。こうなると考えるのは、

  • 光学メディアそのものを回復させる
  • 可能な限りのデータを取り出す

もしデータ保存のためだけのメディアであれば、出来る限り多くのデータを取り戻したいだろう。記録されているものがソフトウェアであれば、一部の表示に乱れが生じたとしても、最低限、動作すれば良いこともある。

この投稿では、次の2つの話題を取り扱う。

  1. 傷ついたメディアから「可能な限り」のデータ・サルベージ。
  2. ソフトウェアを「最低限」動作させるための検討事項。

次のような、傷ついた光学メディアそのものを回復させる方法ではないことを付け加えておく。

  • 記録面の研磨
  • コーティング剤(修復液)による傷埋め

事前知識:傷と影響

傷ついたとはいえ、記録面全体に傷が及んでいるケースは少ないだろう。CD-ROM記録面の大部分に傷はないため、その部分に記録されたデータを読み出すのに支障はない。傷ついた領域直下のセクターに記録されたデータの読み出しにだけ悪影響を及ぼす。
研磨やコーティング剤により光学メディアそのものを回復させる方法は、問題のない記録面へ悪影響を及ぼす可能性があり、リスクが高い。これらの方法は記録面全体に傷が及んでいる場合に、最後の手段として採用するのが良い。

問題は傷の特性だ。記録面の中心から外側へ伸びる放射状の傷であれば、

  • 再読取り
  • 読取エラー補正

というハードウェア、ソフトウェア的な処理によって「ある程度」の読み出しが可能となる。

「ある程度」というのはファイルの一部を指している。例えばファイルがBMP画像であれば、画像の一部に欠損が生じたり、正しく描画されないなどの影響として可視化される。ファイルの一部が欠損しているのだ。
一方、円弧状の傷の場合、影響は深刻だ。連続したセクターの読み出しができず、その領域のファイル全体が読み出し不能となる。結果としてファイルが事実上、失われてしまうのだ。

回復方法1:ISOファイルへの変換

傷ついたメディアからデータを回復するにあたり、取り得る方法の一つがISOファイルへの変換だ。この変換処理中に働く再読取りとエラー補正によって、「ある程度」のデータが回復することがある。例えばDVD Decrypterというソフトウェアには、読取エラー時のリトライ回数を指定する項目が用意されている。
f:id:espio999:20210221133252p:plain
f:id:espio999:20210221133302p:plain
データ修復、部分的な回復の可能性は、リトライ回数を増やすほど高まるものの、限度はある。加えて、最も大きな問題点は時間を要することだ。
次の事例は、リトライ回数=0、20の場合の結果比較だ。0回の場合、Salm-0.bmpはプレビューできず、他の画像は部分的に回復された。一方、20回の場合、Salm-0.bmpはプレビューが機能するほど回復し、加えてSalm-1.bmpの回復にも改善が確認できる。
f:id:espio999:20210221133552p:plain
f:id:espio999:20210221133601p:plain

DVD Decrypter

現在、DVD Decrypterは配布されていない。ISOファイルへの変換には、ImgBurnなど、現在入手可能なツールをお好みで用いると良い。

回復方法2:CDCheckによるデータ・サルベージ

CDCheckは光学メディアを精査し、破損セクターを特定する。破損セクターの読み取りを繰り返し、該当箇所に記録されたファイルを可能な限り取り出す。
あくまでもメディアに記録されたデータだけを「可能な限り」復旧することに注力している。だからISOファイルは出力されない。

まず「Check」で、光学メディアの状態を確認する。どのセクターにある、どのファイルに異常があるのかが表示される。結果として31ファイルにエラーがあることが確認できた。
今回のケースで注目したいのは、BMP画像のような純粋データではなく、何らかの処理に影響しそうなデータ・ファイル(BWHファイル)が含まれていることだ。この点にまつわる検討事項について、次のセクションで触れる。
f:id:espio999:20210221133944p:plain
f:id:espio999:20210221134015p:plain

次に「Recover」で、メディアに収容されているすべてのファイルをリカバリーする。リカバリーはファイルごとに実施される。ISOメディアとしてリカバリーされるわけではない。”Output directory”に指定されたフォルダへ、メディアに収録された全ファイルが出力される。
f:id:espio999:20210221134103p:plain

CDCheckは不良セクターを繰り返し読み取る。読取回数は"Unreadability"の設定値だ。指定回数の読み取りに失敗すると、そのセクターは読み出し不可と認識される。該当セクターに記録されたデータの復旧は諦めることになる。
次の例は、Tibe-3.bmpの復旧を示すログだ。該当ファイルはセクター9~116に記録されている事が分かる。各セクターを3回読込、セクター58以外のセクターで読み込みに失敗している。セクター58からのデータだけで復旧された結果が、次の図だ。画像としては不完全だが、少なくとも復旧はできた。
f:id:espio999:20210221134155p:plain
f:id:espio999:20210221134305p:plain

ベスト・ミックスという考え方

CDCheckの対応はあくまでもデータ復旧が目的であり、メディアの再現ではない。所要時間もISOファイルへの変換に比べると早い。
一方、光学メディアをISOファイルへ変換するのは2つの短所がある。

一つはリトライ回数増加に伴う所要時間だ。今回のケースではCD-ROM(容量640MB)を用いた。記録面セクターの2%程度に傷がついている。たったこれだけのことでも、リトライ回数=0の場合、変換処理全体を通して1時間程度を要した。リトライ回数=20になると、処理時間は9時間程度に達する。リトライ回数は、所要時間と復旧状態とのトレードオフだ。

もう一つは、影響を受けたファイルの特定だ。具体的にどのファイルが無事で、どのファイルが破損、あるいは失われたのかが分からない。

CDCheckを選択するのが合理的だが、復旧するソフトウェアの事情を考慮する必要がある。それはどうしてもメディアが必要になる場合だ。
特にゲームの場合、たとえそれがHDDにインストールされていたとしても、その起動時、プレイ中に光学ドライブへメディアを挿入しておくことを求めるものがある。また音声情報を音声ファイルではなく、音楽CDとして記録しているものもある。

以上のことを考慮したとき、次の考え方に到達する。

  • ISOファイル変換、データ・サルベージの両方を実施する。
  • 両方のファイル群を比較し、最良の復旧ファイルを特定、統合する。
    • これをインストール、実行に用いる。
  • 変換したISOファイルは、起動時、プレイ用のマウントに用いる。

最良の復旧ファイルを寄せ集め、新しいISOファイルを作成する方法もある。ソフトウェアの実行に際し、メディアが制約とならないのであれば有効な手立てだ。

ソフトウェアを「最低限」動作させるための検討事項。

傷ついた光学メディアからのデータ・サルベージだけを目的とするならば、ファイルを取り出しさえすればよいのだが、動作可能であるソフトウェアとしての回復を目的とするならば、注意を要することがある。それは次の2点だ。

  • 実行ファイルへのダメージと回復
  • それが参照するデータへのダメージと回復

実際のところ、実行ファイルが復旧されたとしても、それが一部のセクターからのものであったならば、ソフトウェアとしての復旧は諦めることになる。画像ファイルの様に部分的に回復できれば良いものではないからだ。
参照するデータへのダメージ、例えば前述のBWHファイルのような場合、その参照され方次第では、少なくとも「動作に支障はない」程度には復旧したとみなせることがある。それは対象ソフトウェアの特性次第なので、一概には言えないのだが、端的には次のようなシナリオが想定される。

「運用」でカバーできる 該当ファイルが参照されない限り、動作する。
表示がおかしいが対策できる。
結果がおかしいが対策できる。
「最低限」の復旧 該当ファイルが参照されても、動作上の支障はない。
表示がおかしいが支障はない、あるいは許容範囲。
結果がおかしいが支障はない、あるいは許容範囲。

家計簿や会計のようなソフトウェアならば、たとえ復旧できたとしても表示や結果の異常は、それがたとえ些細なものであっても許容できないだろう。しかしゲームであれば画像の乱れや、ルートや遊び方を限定することで回避できる問題ならば、許容範囲も広がることだろう。

余談

今回の私の事例では『ガンダムタクティクス MOBILITY FLEET 0079』というゲームを復旧した。90年代のゲームだが、Windows 10環境へ正常にインストールし、互換モードで動作することを確認した。ゲーム・プレイには表示画像が乱れる程度の影響しかなく、十分に遊べる範囲で動作している。復旧は成功と言えるだろう。
この作品についてのレビュー、設定ファイルの編集方法を投稿したので、興味があれば、併せて参照してほしい。
impsbl.hatenablog.jp
f:id:espio999:20210221141321p:plainf:id:espio999:20210221141331p:plainf:id:espio999:20210221141343p:plainf:id:espio999:20210221141408p:plainf:id:espio999:20210221141424p:plainf:id:espio999:20210221141459p:plain