はじめに

先日(2014/03)、久しぶりにデータ保存用の大容量HDD(WesternDigital WD20EZRX-00D8PB0 2TB)を購入したのですが、昨今のHDDはほぼ全てでAF(Advanced Format)という仕組みを採用しており、Windows XPで利用するのには注意が必要とのことです。
うちにはWindows XPどころかWindows 2000の環境もあるので、よくよく注意が必要のようです。

今回は、このAFなHDDについて検証してみます。

AF(Advanced Format)とは?

AF(Advanced Format)とは、物理セクタ4096バイト(従来のHDDは512バイト)の(いわゆるBig Sectorな)HDDにおいて、物理セクタを512バイトにエミュレーションする機能の呼び名のようです。
一般的には、HDDの物理セクタのサイズを大きくする(概ね4096バイト)ことにより、HDD内部でエラー訂正等に利用されている領域を小さくすることができ、容量増に繋げられるようです。
ただし、このままでは従来の512バイトの物理セクタを期待するOS(Windows XP以前)では使えなくなってしまうため、これらのOSでも動作するよう、OS側からは物理セクタが512バイトに見えるようにエミュレーションします。
(以下では便宜上、OSから見えるセクタを論理セクタと呼びます。)

具体的なエミュレーションの仕組みですが、

・ある論理セクタ(512バイト)の読み出し要求があった場合は、そのセクタを含む物理セクタ(4096バイト)すべてを読み出し、その中の該当の論理セクタ部分のデータを返す。
・ある論理セクタ(512バイト)への書き込み要求があった場合は、そのセクタを含む物理セクタ(4096バイト)すべてをワークメモリ上(PCのメモリとは別のHDD内のメモリ)に読み出し、その中の該当の論理セクタ部分のデータを変更、読み出した物理セクタ部分すべてを書き戻す。

といった感じです。

聡明な読者の方なら気がつくと思いますが、読み込みに比べて書き込みのコストが大きくなります。

Windows XP(とWindows 2000)で使うにはどんな注意が必要なのか?

はじめに結論を言ってしまうと、AFなHDDがWindows XPやWindows 2000でまったく使えない、というわけではないです。
AFなHDDの注意点は、「Windows XPやWindows 2000では、注意してフォーマットしないと、パフォーマンスが出ない」という1点に尽きます。

では、なぜこのAFなHDDをWindows XPやWindows 2000で使うとパフォーマンスが出ないのでしょうか?
その理由はOSのHDDの使い方にあります。

殆どのWindows系OSでは、ファイルシステムの仕組みにより、データはセクタ(512バイト)単位で読み書きするのではなく、このセクタを8個束ねたクラスタ(4096バイト)単位で読み書きをします。
このため、クラスタとAF HDDの物理セクタの境界の位置が一致すれば、AFなHDDでもパフォーマンスの問題が出ることはありません。

パフォーマンスの問題が発生するのは、クラスタとAF HDDの物理セクタの境界が一致しない場合です。
実は、Windows XPやWindows 2000でHDDをフォーマットすると、ファイルの保存領域が63セクタ目(512バイト×63セクタで32,256バイト目)から始まるように初期化されます。
この場所は、AFなHDDの物理セクタ(4096バイト)では、7セクタ目の途中に当たります。
以降のクラスタも、AF HDDの物理セクタの前後2セクタに跨るように配置されます。

このような状況下では、データの読み込み時には、隣接する2物理セクタ分を読み出し、その中から必要なクラスタ分のデータを取り出す作業が発生するため、オーバーヘッドが発生します。
一方、データの書き込み時はもっと悲惨で、隣接する2物理セクタ分をワークメモリ上に読み出し、その中で変更が必要な1クラスタ分のデータを置き換え、置き換えが完了した2物理セクタ分を書き換えるため、読み込みよりも更に大きいオーバーヘッドが発生します。

対策

長々と書いてしまいましたが、AFなHDDをパフォーマンスを落とさずに使うには、「クラスタと物理セクタの境界の位置を一致させるようにフォーマットする」に尽きます。

一番簡単な対策は、AFなHDDをWindows Vista以降のOSでフォーマットすることです。

Windows Vista以降のOSでHDDをフォーマットすると、ファイルの保存開始領域が2048論理セクタ目(512バイト×2048セクタで1,048,576バイト目)になります。
これは、AFなHDDでは256物理セクタ目(=1,048,576/4,096)にあたり、以降のクラスタと物理セクタが完全に一致するようになります。

なお、Windows VistaでNTFSフォーマットしたHDDがWindows XPや2000で読めることは当方で確認しています。

公式には、HDD各社が出しているユーティリティを利用することが推奨されていますが、USB接続のHDDをフォーマットできないツールがあるなど、使い勝手がいまいちですので、Windows Vista以降のOSをお持ちの方はそちらでフォーマットすることをお勧めします。

対策前と対策後のパフォーマンスの差

参考までに、Windows XPでフォーマットした場合と、Windows Vistaでフォーマットした場合のパフォーマンスの差がどの程度あるのかを比較してみたいと思います。

AFなHDDとして、今回購入したWesternDigital WD20EZRX-00D8PB0(SATA 2TB)をWindows VistaおよびWindow XPでNTFS形式にフォーマットして比較しています。

PCとHDDの接続は、裸族のお立ち台を利用し、USB2.0で接続しています。

Windows XPでフォーマットした場合

image

USB2.0がボトルネックになって全体的に遅いですが、4Kや4K QD32の書き込みが致命的に遅いです。

WindowsVistaでフォーマットした場合

image

USB2.0がボトルネックになっていて、リードの速度はほぼ同じですが、4Kや4K QD32の書き込みはWindows XPでフォーマットしたときに比べ4倍強速くなっています。

残る課題

今回は、AFなHDDをWindows Vista以上のOSでフォーマットすることにより、パフォーマンスの問題を解消する方法について説明しましたが、実はAFなHDDをWindows XPやWindows 2000のブートドライブとして利用する場合には、この方法は利用できません。

残念ながら、当方ではよい解決策が浮かびませんでした。
素直に物理セクタ512バイトの従来のHDDを使うか、パフォーマンスの低下に目を瞑って我慢して使うか、どちらかかと思います。

まとめ

ということで、AFなHDDをWindows XPやWindows 2000で使う方法について見てきましたが、まとめると、

・現在売られているHDDはほぼ全てAFで、この流れは変わらないと思われる。
・パフォーマンスの劣化に目を瞑れば、Windows XPやWindows 2000でも特に意識せずに利用可能。
・初回利用時にVista以降のOSでフォーマットすれば、物理セクタとクラスタの境界が一致するため、パフォーマンスを低下させることなく利用可能。
・Windows XPやWindows2000のブートドライブに利用する場合は、どうやってもアライメントがずれる為、パフォーマンスの低下を甘受して使う他なし。

という感じでしょうか。

このページが皆様のご参考になれば幸いです。


あなたの探し物は見つかりましたか?
まさにこれだ
参考になった
ちょっと違う
これじゃない

何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


まさにこれだ
3 (75%)
参考になった
1 (25%)

表示できるメッセージはありません。