Advanced Format Technology を使用したHDDをLinuxで正しくパーティション

Western Digital WD Caviar GreenSeagate Barracuda Green といった最近の大容量HDDの一部は Advanced Format Technology (AFT) と言われる、従来の512バイトに比べて8倍大きい4Kバイト・セクターを採用している。この4Kバイト・セクターへの移行はIDEMAを中心に決まったことなので、遅かれ早かれ主要HDDベンダーはAFTを採用することになっているのだが、Linuxがこの新しい規格に正しく対応しているのかどうかについてははっきりしないところが多い。

しかし、少なくとも Red Hat Enterprise Linux (RHEL) とその互換ディストリビューション(CentOS / Scientific Linux (SL) / Oracle Linux など)のバージョン5ではAFTに対応していない。以下は CentOS 5.6 でAFTを正しく使用する方法であり、その他のRHEL互換ディストリビューションでも同様だろう。なお、AFTとは何なのか、どのようなメリットがあるのか、誤ったパーティションだとどれだけ性能劣化があるのか、Linuxでどのようにすれば良いのかは IBM: 4KB セクター・ディスクで Linux を使用する: 実用的なアドバイス が詳しく、今回もこれを参考にした。Western Digital: How to install a WD Advanced Format Drive on a non-Windows Operating System も参考になるだろう。

CentOS 5 のインストーラー、AnacondaはAFTを意識せずに誤った(性能劣化する)パーティションを切ってしまうので、インストーラーを実行する前に手動でパーティションを切る必要がある。そのため、インストールの前にCentOSをDVDから起動してレスキュー・モードに入る必要があり、通常はEnterを押すだけの最初の画面で以下のように入力する。

Choose a Language はEnglish、Keyboard Type はjp106、Setup Networking はNo、RescueはContinueを選択する。

この環境ではsdaからsddまでの4つのHDDがあり、すべて未フォーマット状態であることが以下から分かる。

今回はsdaを以下のようなパーティションに切ることにした。

パーティション名 容量 用途
sda1 100MB /boot
sda2 残り全部 残り全部

AFTを正しく使用するには開始セクターを8の倍数にする必要があるが、fdiskはデフォルトでは63番セクターから開始してしまうため、手動でセクターを指定しながら切る必要がある。1つ目のパーティションの開始セクターは8でも64でも良いのだが、今回は Microsoft Windows 7 に合わせて2048番目とした。終了セクターを決めるに当たって100MBに何セクター必要なのか計算するのが面倒なので、まずは当たりをつけるためにざっくり切ってみることにする。fdiskをシリンダー単位ではなくセクター単位にするには、起動パラメーターに-uをつける。

fdiskが自動的に197361番セクターまででパーティションを切ってくれたが、次の197362は8の倍数ではないので、最も近い8の倍数マイナス1の197367番セクターまでで再作成する。

「パーティション1はシリンダー境界で終わっていません」というエラーが表示されているが、AFTに対応していない間違った表示なので無視して良い。同様に残り全部のパーティションも作成する。このディスクの最後のセクターは3907029167で、8の倍数マイナス1なので特に気にするところはない。ポイントは開始セクターを8の倍数である197368にすることだ。

開始セクターが2048と197368で、どちらも8の倍数になっているので、AFTによる性能劣化が起きないパーティションができた。

これらのパーティションはmdによるRAIDにする予定なので、ついでにパーティション・システム・タイプを変更しておいた。

全ての設定が完了したら、パーティション・テーブルに実際に記述してfdiskから抜ける。これにてAFTなHDDをLinuxで正しくパーティショニングする方法は完了。

4 thoughts on “Advanced Format Technology を使用したHDDをLinuxで正しくパーティション”

コメントを残す