Windows 8でのAFディスク対応は?
さて肝心のWindows 8での対応だが、Windows 8はe512と4KBネイティブの両方に対応している。同じAFディスクでも両者を区別して、ソフトが物理セクタサイズを取得できるようにAPIを用意している。またセクタサイズを意識しないファイルの読み書きAPIでも、Windowsの内部処理で対象ドライブを正しく判断し、512eではランダムな書き込みが発生しないようにキャッシュ管理などを行なう必要がある。そうしないと例えば、キャッシュの4KBの境界とセクタ位置が合わないと、同じ4KBの書き込みが2つのセクタにまたがってしまう可能性があるからだ。
効率的に512eディスクを利用する場合、クラスタなどの境界と4KBセクタの境界を一致させる必要がある。これには、最初にファイルシステムを確保してフォーマットを行なう段階から、境界位置を意識する必要がある。これはパーティションなどの区切り位置にも関連する。
セクタサイズが変わると、4KBネイティブでは同じセクタ番号でファイルの位置を指定できなくなる。例えば起動時のブートコードは、OSファイルシステムが動作する前であるため、セクタ番号でプログラムの格納開始位置を指定することがある。このときブートコードは、プログラムの格納先ドライブのセクタサイズなどを、正しく判断する必要がある。
また、ファイルのサイズとセクタの末尾位置が一致することはほとんどなく、通常はファイルのサイズを記憶して、最後のセクタの余った部分にゼロを書き込む「パディング」処理が必要になる。逆に読み出す場合には、ファイルサイズを取得しておいて、パディング部分を無視しなければならない。こうした処理もセクタサイズに依存する処理であり、正しく処理されなければならない。
もうひとつ対応が必要なのは、仮想HDD(VHD)ファイルだ。VHDは仮想マシンに対して用意される、仮想的なHDDに対応するファイルだ。VHDは仮想マシン内部からはHDDとしてアクセスされるが、実際にはVHDファイル内へのアクセスへと変換される。またWindows 7からは、VHDを仮想マシン外からでもマウントしてドライブとして扱かったり、VHDからシステムを起動する機能もある。そのため、VHDへのアクセスは特殊な方法で行なわれ、ホストOS側が4KBセクタを意識する必要がある。つまり、Windowsが持つVHDファイルを扱う機能も、AFディスクを正しく扱えなければ効率的なアクセスができないわけだ。
HDDの2.2TB問題は、HDDにGPTの導入を促した。GPTはBIOSに変わる新しいファームウェア「UEFI」由来の技術だが、UEFIが普及していなかった当初は、BIOSがGPTに対応することでこれをしのいだ。WindowsのUEFI対応はVistaから可能になったが、Windows 8ではほかの機能(セキュアブート)などを含め、UEFIを要求する機能が多数入る。つまりWindows 8搭載PCでは、事実上UEFIが必須となるとされている。

この連載の記事
- 第34回 Windows 8の狙いは、UIの変化よりもAPIの変化が本質
- 第33回 Windows 8が動作しなくなった? 新しくなった修復機能
- 第32回 Windows 8でIMEに求められる新しい要素とはなにか?
- 第31回 Windows 8の無線LANをコマンドラインで細かく制御
- 第30回 Windows 8をマウスで使いやすくするレジストリの小技
- 第29回 周辺機器・アプリがWindows 8/RTで動くか確認する方法
- 第28回 Windows 8のキーボードショートカットを全公開
- 第27回 Windows 8が使いにくい? マウスを変えると印象も変わる
- 第26回 実はNFCに対応しているWindows 8 ただしアプリは不足
- 第25回 実は扱いがまったく異なるWindows 8でのタッチパネル
- 第24回 Surfaceから見えるWindows RTの実像と、将来PCへの影響
- この連載の一覧へ