スペアリング テーブル
 前項ではシーケンシャルにしか書き込みのできないCD-RにISO 13346を応用する事ための仕組みとしてVATについてお話しました。固定長パケットで「メソッド2」でアクセスすれば、論理的にはほとんどMOと同じに見えるCD-RWでISO 13346を使うのはどうでしょうか。

 まず、セクタ単位ではなくパケット単位でしか書き換えができないことについて考えてみましょう。すぐにピンときた方もいらっしゃると思いますが、あるパケットの特定のセクタだけを書き換えるためには、パケット全体を読み出して、書き換えたいセクタの情報を書き換え、またパケット全体を書き戻せばいいのです。セクタの中の特定のバイトを書き換えるのと同じ方法です。パケットの大きさがむやみに大きくなければとくにむずかしいことではありません。UDFでは固定長パケットの大きさに64Kバイトを採用しており、いまどきのコンピュータにとってはさほど大きな単位ではないと言えます。

 ではパケットだけに注意あとはMOと同じでよいのでしょうか? 残念ながらそうではありません。市場に流通している記録メディアのすべてのセクタ(ブロック)に、物理的な欠陥が一つもないということはまず考えられません。また、最初は問題なくても、使用していくうちに読み書きができなくなるセクタもあります。したがって、その欠陥をいかにカバーするか、エンドユーザからいかに見えないようにするかが、そのメディアのドライブなりファイルシステムの仕事です。ハードディスクやMO、DVD-RAMの場合、システムに最初から欠陥情報を把握し管理するテーブルが組み込まれています。ドライブはこのテーブルを使って、欠陥セクタへのアクセス命令を予備の正常なセクタへのアクセス命令に読み替える仕組みを持っています。

 ところが、Red Book用のドライブをほんの少しだけ変えて使っているCD-RWの場合、ドライブは欠陥セクタへのアクセス命令の読み替えの機能を持っていません。しかし、書き換え型のメディアである以上、使っているうちにセクタが使えなくなってしまうことは考えられます。そこで、CD-RWでは、ファイルシステムであるUDFにそういう機能(テーブル)を持たせて、他のメディアではドライブがやっていることをソフトウェアが代行することにしました。それがUDF Ver.1.5で採用されたスペアリング テーブルです。予備、つまりスペア(Spare)のセクタを使うことから、この仕組みのことをスペアリング(Sparing)と呼んでいます。

 CD-RWをパケットライトで利用する際、最初にディスクのフォーマットをすることはご存じだと思いますが、これは、リードインとリードアウト間にパケットを構築していくのと同時に、欠陥のあるパケットをスペアリング テーブルに登録していく作業でもあります。ただし、こういった処理はエンドユーザにはいっさい見えません。

 CD-Rでは書き換えはありえませんから、スペアリング テーブルは使われません。逆に、CD-RWではVATは使われません(UDFのソフトウエアの中には、CD-RWを何度も消すことのできるCD-Rとして扱うことができるものがありますが、このような場合は例外です)。

 以上、VATとスペアリング テーブルの説明にとどまってしまいましたが、CD-R/RWに対応したUDF Ver.1.5では、VATによってCD-RはフロッピーディスクやMOのような“書き心地”を獲得し、スペアリング テーブルによってCD-RWは、データ用のメディアとしてMOやPDなどと同等の信頼性を確保したと言えるでしょう。

 なお、UDF Ver.2.0は、Windows NTなどの新しいOSのファイル属性に対応するためにネームドストリームという概念を導入しています。もちろんUDF Ver.2.0をCD-R/RWの上で使うことも可能です。(ソフトウェアが対応する必要があります)その場合にはメディアに合わせてVATやスペアリング テーブルが使われることになります。