このページの本文へ

前へ 1 2 3 次へ

塩田紳二のWindows 8 IN-N-OUT 第8回

Windows 8は2.2TB超の大容量HDDにどう対応しているのか?

2012年06月21日 12時00分更新

文● 塩田紳二

  • この記事をはてなブックマークに追加
  • 本文印刷

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が必須となるとされている。

前へ 1 2 3 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン