4 KB セクター・ディスクで Linux を使用する: 実用的なアドバイス

すべてのシリンダーで Linux が起動するようにする

Advanced Format ディスクでは、より一般的な 512 バイトのセクターではなく、4,096 バイトのセクターが使用されます。この違いは、オペレーティング・システムのために 4,096 バイトの物理セクターを 512 バイト単位の論理セクターに分割するファームウェアによって表面的にはわからなくなっていますが、より大きなサイズの物理セクターを使用するということは、ディスクのレイアウトやシステムのパフォーマンスにも影響があるということです。この記事ではその影響について、いくつかの一般的な Linux ファイルシステムに実際に及ぶ可能性のある影響を示すベンチマーク・テストを交えて検討します。Advanced Format ディスクが標準的になっているなか、最適ではない構成による深刻なパフォーマンスの低下を回避したければ、これらのディスクに対処する方法を理解していることが不可欠のスキルとなります。

Roderick W. Smith, Consultant and author

Rod SmithRoderick W. Smith は、UNIX と Linux に関して 20 冊を超える書籍の著者であり、コンサルタントでもあります。彼が執筆した書籍のなかには、『Definitive Guide to Samba 3』、『Linux in a Windows World』、『Linux Professional Institute Certification Study Guide』などがあり、GPT fdisk パーティショニング・ソフトウェアに関する書籍の著者でもあります。彼は、廃止された rEFIt ブート・マネージャーを基に rEFInd を作成しました。彼は、ロードアイランド州のウーンソケット在住です。



2014年 6月 19日

Roderick の他の記事も読んでください

developerWorks に Roderick が寄稿したすべての記事を閲覧してください。あるいは、広範な技術ライブラリーで他の著者の記事や、本記事で取り上げているのとは異なる製品およびトピック、さらには記事以外のタイプのコンテンツを検索することもできます。

ディスクの構造を十分に理解している読者の方は、ディスクは通常 512 バイト単位のセクターに分割され、読み取り処理や書き込み処理はこのセクター・サイズの倍数単位で行われることはご存知のはずです。さらに詳しく見てみると、ハード・ディスクは、セクターとセクターの間にも追加のデータを記録するようになっており、これらの追加のバイトを使用して各セクター内でのエラーを検出して訂正します。

セクター・サイズを 512 バイトからもっと大きな値へ拡張すると、より効率的で強力なエラー訂正アルゴリズムを使用できるようになります。従って、より大きなセクター・サイズへの変更は、少なくとも理論上は、信頼性の向上とディスク容量の増大という 2 つの実用面でのメリットをもたらしてくれます。

Advanced Format ディスクは、4,096 バイトの物理セクターを 8 つの 512 バイトの論理セクターに分割します。そのため、ファームウェアや、オペレーティング・システム、そしてすべてのディスク・ユーティリティーにとっては、物理セクターのサイズが 4,096 バイトであっても、ディスクのセクター・サイズは 512 バイトであるように映ります。その一方で、ファームウェアで見掛けのセクター・サイズを変更すると、パフォーマンスが低下する恐れがあります。その理由を理解するには、ファイルシステムのデータ構造と、ハード・ディスクでのパーティションの配置について理解する必要があります。

ファイルシステムのデータ構造がパフォーマンスに影響する理由

最近のファイルシステムのほとんどは、4,096 バイトまたはそれより大きいサイズのデータ構造を使用しています。そのため、大部分のディスク I/O 処理はこの値の倍数単位で行われます。ここで、Linux がこれらのデータ構造の 1 つに対する読み書きを、セクター・サイズが 4,096 バイトの新しいディスク上で行うとしたらどうなるか考えてみてください。ファイルシステムのデータ構造が、偶然にも、物理セクターの位置とぴったり合うように配置されているとしたら、4,096 バイトのデータ構造の読み書きは、単一セクターの読み書きとなるため、ハード・ディスクのファームウェアが特別な処理を行う必要はありません。一方、ファイルシステムのデータ構造が、物理セクターの位置とぴったり合うようには配置されていない場合、読み書きの処理では 2 つの物理セクターにアクセスしなければならないことになります。図 1 に、この違いを示します。

図 1. ディスクのデータ構造は、Advanced Format ディスク上の複数の物理セクターにまたがることがあります
ディスクのデータ構造の適切な配置と不適切な配置を比較した図

理論上、読み取り処理は、書き込み処理ほどには位置合わせされていないことによる影響を受けません。ディスクからデータを読み取る場合、読み取り先の 4 KiB (キビバイト) のデータ構造は、ディスクの連続する 2 つのセクターにまたがっている可能性が高く、ファームウェアが 4 KiB のデータ構造を返すタスクは比較的単純です。それとは対照的に、位置合わせされていないデータ構造を書き込む場合は、ディスクのファームウェアは 2 つのセクターを読み取り、両方のセクターの必要な部分を変更してから 2 つのセクターに書き込まなければなりません。この処理には、その 4,096 バイトが 1 つのセクターだけを占有している場合よりも時間がかかります。そのため、パフォーマンスが低下するというわけです。実際には、位置合わせされていないことによる悪影響を、読み取り処理が書き込み処理と同じぐらい受ける場合もあります。

データ構造が適切に配置されているかどうかを判断するにはどうすればよいのでしょう?ほとんどのファイルシステムは、データ構造を、そのデータ構造を含めるパーティションの先頭に揃えます。つまり、パーティションの先頭が 4,096 バイト (8 セクター) の境界上にあれば、データ構造は適切に配置されていることになります。しかし 2010年になるぐらいまでは、Linux パーティショニング・ツールが作成するパーティションは 4096 バイトの境界に位置合わせされていませんでした。今でも落とし穴は残っているため、パーティションを作成するときには注意が必要です (一般的な Linux パーティショニング・ソフトウェアでパーティションを位置合わせする方法については、この後の「パーティションの位置合わせ」のセクションで説明します)。

テストのパラメーター

適切な位置合わせがどれほど重要であるかを理解するために、次の 3 台のコンピューターに搭載された 3 種類の Advanced Format ディスクを使用してテストを行いました。

  • NVIDIA MCP61P チップ・セットと 64 ビットの 2.6.32.3 カーネルを使用したコンピューターに搭載された 1TB の Western Digital WD-10EARS Advanced Format ドライブ (2009年後半に導入された初めての Advanced Format ディスクのうちの 1 つ)。このディスクを使用したテストの結果は、2010年に公開されたこの記事の最初のバージョンに記載しました。
  • この記事を執筆時点で最新の AMD 760G/SB710 チップ・セットと 64 ビットの 3.4.1 カーネルを使用したコンピューターに搭載された 2TB の Seagate ST2000L003 ドライブ (2012年に購入)。
  • Intel H77 チップ・セットと 64 ビットの 3.11.7 カーネルを使用したコンピューターに搭載された 3TB の Toshiba DT01ACA300 ドライブ (2013年後半に購入)。

この 3 つのテストすべてに共通して、ディスクは GPT (GUID (Globally Unique Identifier) Partition Table) システムを使用してパーティション化し、位置合わせしたパーティションは論理セクター 40 から始まり、位置合わせしていないパーティションは論理セクター 34 (デフォルトのパーティション・テーブル・サイズの GTP ディスクで最初に使用できるセクター) から始まっています。テストしたファイルシステムは、第 3 世代拡張ファイルシステム (ext3)、第 4 世代拡張フファイルシステム (ext4)、ReiserFS (バージョン 3)、JFS (Journaled File System)、XFS (Extents File System)、および Btrfs (B-tree file system) です。

すべてのテストで、スクリプトによって一連のディスク I/O 処理を実行しました。この処理には、新規ファイルシステムを作成する処理、圧縮済み Linux カーネル tarball をテスト・ドライブへ解凍する処理、tarball をドライブへコピーする処理、テスト・ドライブ上に解凍したファイルを読み取る処理、ドライブから tarball を読み取る処理、そして Linux カーネル・ディレクトリーを削除する処理が含まれます。ソースとする Linux カーネル tarball は別のディスクに保管し、読み取りテストでは出力先を /dev/null に指定しました。また、書き込みテストを行うごとに、テスト・ディスクはアンマウントしました。これは、Linux のディスク・キャッシュに残っている処理がないことを確実にするためです。ここで報告する数値には、このアンマウント処理にかかった時間も含まれます。

カーネル tarball のサイズは、最初のテストでは 365 MiB (メビバイト)、2 番目と 3 番目のテストでは 451MiB です。すべてのディスクのキャッシュ・サイズは 64MiB なので、いずれのテストでも、tarball のサイズはディスクのキャッシュ・サイズを大幅に超えていました。各テスト・シーケンスは、それぞれのファイルシステムに対して 6 回実行しました。そのうち 3 回は適切に位置合わせされたパーティションで実行し、残りの 3 回は位置合わせが不適切なパーティションで実行しましたが、それぞれの実行結果の差はわずかでした。そして位置合わせが不適切なパーティションでの平均実行時間を、適切に位置合わせされたパーティションでの平均実行時間で割ることで、位置合わせが不適切な場合のパフォーマンス・ヒットがどの程度であるかを算出しました。値が 1.00 を超える場合は、位置合わせが不適切なためにパフォーマンスが低下していることを示しています。


ベンチマークの結果

位置合わせされていないパーティションでは、すべてのディスクでパフォーマンスの低下が見られましたが、2009年製の Western Digital ディスクと 2013年製の Toshiba ディスクは同様のパターンになっている一方、2012年製の Seagate モデルのパターンは異なります。従って、パターンの違いで結果を 2 つのグループに分けて説明します。

Western Digital と Toshiba のテスト結果

2010年に Western Digital ディスクで実行したテストのほとんどでは、それほど大きなパフォーマンスの低下は見られませんでした。ファイルシステムを作成するテストで得られた値は、最小値が 0.96 (XFS の場合) で最大値は 7.94 (ReiserFS の場合)、平均値は 2.79 でした。一方、2013年製の Toshiba ディスクでファイルシステムを作成するテストで得られた値は、最小値が 1.22 (ext4 の場合) で最大値は 1.82 (ext3 と XFS の両方の場合)、平均値は 1.57 です。ファイルシステムの作成はまれにしか行われないため、この影響はそれほど大きくありません。Western Digital ディスクの読み取りテストの結果は、0.95 から 1.25 という比率になり、速度に与える影響は 25% を超えないことを示しています (図 2 を参照)。この比率が 1.00 の場合、パーティションが位置合わせされていなくてもパフォーマンスが低下しないことを意味し、値が大きければ大きいほど、それだけパフォーマンスが低下することを意味します。Toshiba ディスクの場合、値は 0.94 から 1.11 の範囲です (図 3 を参照)。

図 2. Western Digital WD-10EARS ディスクで、位置合わせされていないパーティションを使用した場合の読み取りパフォーマンスの低下
Western Digital WD-10EARS ディスクで、位置合わせされていないパーティションを使用した場合に、読み取りパフォーマンスは 5% から 15% 低下したことを示す棒グラフのスクリーン・キャプチャー
図 3. Toshiba DT01ACA300 ディスクで、位置合わせされていないパーティションを使用した場合の読み取りパフォーマンスの低下
Toshiba DT01ACA300 ディスクで、位置合わせされていないパーティションを使用した場合に、読み取りパフォーマンスは -6% から 11% 低下したことを示す棒グラフのスクリーン・キャプチャー

大きなファイルの書き込みパフォーマンスも、わずかな影響しか受けませんでした。Western Digital ディスクでは、最小値は 1.10 (XFS と JFS の場合) で最大値は 6.02 (ReiserFS の場合)、平均値は 2.10 です。一方、Toshiba ディスクでは、最小値は 1.03 (ext4 の場合) で最大値は 2.38 (ReiserFS の場合)、平均値は 1.34 です。ReiserFS の値が大きいのは、このファイルシステムはパーティションの位置合わせの影響を受けやすいことが主な理由となっています。ReiserFS を除く残り 5 つのファイルシステムでの平均値は、Western Digital ドライブと Toshiba ドライブでそれぞれ 1.31、1.13 となります。ファイルの削除での影響も同様です。Western Digital ドライブでは、最小値は 1.04 (XFS の場合) で最大値は 4.78 (JFS の場合)、平均値は 1.97 となります。一方、Toshiba ドライブでは、最小値は 1.05 (ext4 の場合) で最大値は 1.59 (JFS の場合)、平均値は 1.30 となります。

書き込み処理でパフォーマンスに最も大きな影響が出てくるのは、小さなファイルを作成する場合です (カーネル tarball の解凍)。Western Digital ドライブで tarball を解凍するテストでは、最小値が 1.04 (ext4 の場合) で最大値が 25.53 (ReiserFS の場合)、平均値は 10.9 となりました。このテストで 2 番目に優秀なパフォーマンスを見せたのは、値が 1.82 だった XFS です。Toshiba ドライブで tarball を解凍するテストでは、最小値が 1.44 (Btrfs の場合) で最大値が 3.17 (ReiserFS の場合)、平均値は 1.92 でした。これらの値は、位置合わせされている場合に対する、位置合わせされていない場合のパフォーマンスの比率なので、10.9 という値は、適切に位置合わせされたパーティションでは 10 秒間で行われる tarball 解凍処理が、適切に位置合わせされていないパーティションでは 109 秒かかることを意味します。これはかなりの違いです。

図 4 に、Western Digital ディスクで位置合わせされていないパーティションを使用した場合の、すべてのファイルシステムに対する書き込みパフォーマンスの低下を要約します。また図 5 には、Toshiba ディスクを使用した場合の書き込みパフォーマンスの低下を要約します。前と同じく、値が 1.00 の場合、パフォーマンスの低下はないことを意味し、値が大きければ大きいほど、それだけパフォーマンスが低下することを意味します。

図 4. Western Digital WD-10EARS ディスクで、位置合わせされていないパーティションを使用した場合の書き込みパフォーマンスの低下
Western Digital WD-10EARS ディスクで、位置合わせされていないパーティションを使用した場合に、書き込みパフォーマンスが 1.04 から 25.53 の範囲で低下したことを示す棒グラフのスクリーン・キャプチャー
図 5. Toshiba DT01ACA300 ディスクで、位置合わせされていないパーティションを使用した場合の書き込みパフォーマンスの低下
Toshiba DT01ACA300 ディスクで、位置合わせされていないパーティションを使用した場合に、書き込みパフォーマンスが 1.44 から 3.17 の範囲で低下したことを示す棒グラフのスクリーン・キャプチャー

Seagate のテスト結果

Seagate ST2000L003 ディスクでのテストでは、驚くほど異なる結果が出ました。ファイルシステムを作成する場合のパフォーマンスの低下を示す値は、最小値が 1.09 (XFS の場合) で最大値が 1.97 (ReiserFS の場合)、平均値は 1.42 です。これについては、Toshiba ディスクでの結果と似ています。

意外性が現れてくるのは、読み取りアクセスの結果です (図 6 を参照)。Seagate ディスクでの読み取りパフォーマンスは、Western Digital ドライブや Toshiba ドライブでの場合より顕著に低下します。具体的には、Seagate で小さなファイルを読み取る場合、値は 8.54 にも上り、平均値は 4.13 にまで高くなります。大きいファイルの読み取りでも、パフォーマンスは低下し、その平均値は 1.88、最大値は 3.76 (ReiserFS の場合) にもなります。

図 6. Seagate ST2000L003 ディスクで、位置合わせされていないパーティションを使用した場合の読み取りパフォーマンスの低下
Seagate ST2000L003 ディスクで、位置合わせされていないパーティションを使用した場合に、読み取りパフォーマンスが 1.03 から 8.54 の範囲で低下したことを示す棒グラフのスクリーン・キャプチャー

Seagate ディスクで書き込みパフォーマンスが低下する様子を図 7 に示します。小さなファイルを作成する場合のテスト結果は、最小値が 1.23 (Btrfs の場合) で最大値が 3.04 (ext3 の場合)、平均値は 1.98 です。大きいファイルを作成する場合は、最小値が 1.04 (Btrfs の場合) で最大値が 3.87 (ReiserFS の場合)、平均値は 1.78 となります。ほとんどのファイルシステムで最も顕著にパフォーマンスが低下したのは、ファイルの削除処理です。この場合、最小値は 1.23 (Btrfs の場合) で最大値は 7.75 (ext4 の場合)、平均値は 4.14 となります。

図 7. Seagate ST2000L003 ディスクで、位置合わせされていないパーティションを使用した場合の書き込み処理のパフォーマンス低下
Seagate ST2000L003 ディスクで、位置合わせされていないパーティションを使用した場合に、書き込みパフォーマンスが 1.14 から 7.75 の範囲で低下したことを示す棒グラフのスクリーン・キャプチャー

テスト結果の分析

3 つのハード・ディスクでの結果のパターンは、驚くほどの違いがあります。私はこれらのテストをほぼ 4 年間にわたって行っており、その間に変更された部分 (ディスクのブランドとモデル、ディスク以外のハードウェア、Linux カーネル・バージョンなど) があるため、これらの結果の違いを招いている原因を正確に特定することは不可能です。そのため、「このようなテスト結果になった原因は特定のディスク・ブランドにある」という結論は出さないようにしています。特に、Western Digital ディスクに比べて Toshiba ディスクのほうがパフォーマンスへの影響が小さい理由は、カーネルの機能やマザーボードのディスク・ハードウェアが改善された結果であると考えられるためです。しかし結局のところ、この結果のパターンの違いは、ほとんどの人にとって重要な点ではありません。位置合わせされていないパーティションを使用すると、大幅にパフォーマンスが低下するという結論は変わらないためです。

注: これらのテストには、ファイルシステムでの全体的なパフォーマンスは反映されていません。従って、例えばいくつかの処理で ReiserFS のパフォーマンスに最大の差が出ているからと言って、このファイルシステムのパフォーマンスが悪いと結論付けることはしないでください。ただし、ReiserFS は、少なくともある特定の重要なテストでは、他のほとんどのファイルシステムよりも位置合わせが適切に行われていないことによる影響を受けやすくはなっています。

論理ボリューム・マネージャー (LVM) を使用する場合、LVM のアルゴリズム・ルールは、パーティションのアルゴリズム・ルールと同じであることに留意してください。LVM 内での論理ボリュームの位置合わせについて考慮する必要はありませんが、LVM パーティション自体の位置合わせには注意が必要です。LVM を使用するいくつかのファイルシステムの抜き取り検査では、上述の結果が再現されました。

実際問題として、以上のすべてが何を意味するのかと言うと、まずはディスクの物理セクターのサイズを判別するところから始めなければならないということです。Advanced Format ドライブを使用していることがわかったら、パーティションを適切に位置合わせする必要があります。


物理セクターのサイズを判別する方法

理論上、Linux カーネルは物理セクター・サイズの情報を /sys/block/sdX/queue/physical_block_size 擬似ファイルに返し、論理セクター・サイズの情報を /sys/block/sdX/queue/logical_block_size 擬似ファイルに返します (ここで、sdX はデバイスのノード名 (通常は sda、sdb などの名前) です)。しかし実際には、物理ブロック・サイズの情報が誤っていることはよくあります。私の経験では、カーネルが正確な情報をレポートするのは一部のディスクに限られていて、そのレポートの正確さも、カーネル・バージョンによって異なります。つまり、ディスク・ユーティリティーはこのようなディスクの存在を確実に検出することができないということです。

従って、ハード・ディスク・メーカーの Web サイトや他の何らかの手段でドライブの仕様を調べる必要があるかもしれません。/sys/block/sdX/device/model 擬似ファイルには、デバイスの型番が記載されているので、型番を調べた上で、メーカーに確認してください。確信が持てない場合は、ディスクは Advanced Format モデルであると考えてください。ほとんどの新しいディスクは Advanced Format モデルです。

Western Digital と Toshiba は、どちらも Advanced Format ドライブであることを示すステッカーをドライブ自体に貼っています。ただし、Western Digital のステッカーは、Advanced Format ドライブが問題になるのは Windows XP だけであることをほのめかしている一方、Toshiba の Advanced Format であることを示すステッカーには、潜在的なパフォーマンス問題は記されていません。上記のベンチマークの結果から明らかなように、Linux ユーザーも Advanced Format ドライブには十分注意する必要があります。Seagate の Advanced Format ドライブの場合、ラベルに Advanced Format ドライブであることは明確に示されていません。


パーティションの位置合わせ

RAID と SSD での位置合わせの問題

RAID (Redundant Array of Independent Disks) レベル 5 およびレベル 6 にも (そして SSD (Solid-State Drive) にも)、Advanced Format ドライブと同じような位置合わせの問題があります。RAID の場合は、配列を作成するときに用いられるデータ・ストライプのサイズ (通常は 16KiB から 256KiB) と同じになるように位置合わせする必要があります。SSD の場合は、ドライブの消去ブロック・サイズ (通常は約 512KiB) に合うように位置合わせをする必要がありますが、位置合わせ要件の単位が 3MiB にも上る例を聞いたことがあります。2,048 セクター (1,024KiB) をデフォルトの位置合わせとする新しい標準が登場していますが、この標準の位置合わせは、ほとんどの RAID ストライプ・サイズと SSD デバイスに有効です。ただし、SSD の中にはこの値を超えるものもあるので、メーカーの仕様を確認してください。

公開されているテスト結果には、位置合わせが不適切な場合のパフォーマンスは約 5% から 30% 低下することが示されています。これは、Advanced Format ドライブで不適切な位置合わせをした場合のパフォーマンス低下に比べ、遥かに小さな規模です。Advanced Format ディスクから RAID 配列を作成する場合、追加の手順は必要ありません。RAID の位置合わせの値は、Advanced Format ドライブでの位置合わせに使用しなければならない 4,096 バイトの倍数です。従って、512 バイトの物理セクターを使用するディスクの RAID 配列に関してパーティションを位置合わせする場合、両方の技術のニーズは一致します。

ほぼすべての Western Digital Advanced Format ドライブには、Windows XP 対応となるように設定できるジャンパーが組み込まれています。このジャンパーはセクター番号を 1 だけシフトさせます。これは、Windows XP での一般的なパーティション構成 (シリンダーに位置合わせして、ドライブ全体を 1 つのパーティションとして使用) に対処するための、間に合わせ的な修正措置です。複数のパーティションを使用する場合や、最近のパーティショニング・ソフトウェアを使用する場合は、このジャンパーが問題の原因となるため、ジャンパーを使用しないようにすることを強くお勧めします。代わりに、Linux パーティショニング・ソフトウェアを使って適切に位置合わせされたパーティションを作成してください。(Seagate と Toshiba は、いずれもこのようなジャンパーをドライブに提供していません)。

Linux では、それぞれに独自の方法でパーティションを位置合わせする、3 つの MBR (Master Boot Record) および GPT パーティショニング・ツール・ファミリーを使用することができます。Advanced Format ドライブを使用している場合には、最新の Linux パーティショニング・ソフトウェアを実行することが最善の選択肢です。

fdisk ファミリー

ほとんどのディストリビューションで util-linux または util-linux-ng パッケージに含まれている fdisk ファミリーでは、かなり直接的に MBR データ構造を編集することができます。しかしその一方で、ファイルシステムを作成または変更することはできません。util-linux バージョン 2.17 までの fdiskは、8 セクター単位でのパーティション位置合わせを直接サポートしていません。つまり、位置合わせはシリンダー・ベースのままです。これはバージョン 2.18 で変更され、このバージョンからは、fdisk はデフォルトでセクター 2,048 に最初のパーティションの開始点を設定するようになりました。fdisk で、1MiB (またはそれ以上) の倍数のパーティション・サイズを使用してすべてのパーティションを作成する場合、fdisk は 1MiB の倍数でパーティションの位置合わせを維持します。これは、8 セクターの倍数でのパーティションの位置合わせになります。

最近のバージョンの fdisk に伴うリスクとして、ディスクで最初のパーティションの位置合わせが適切に行われていないと、それ以降にパーティションを作成するときに、fdisk はその不適切な位置合わせを自動的に修正しません。また、パーティションの開始セクターを不適切に手入力する可能性もあります。従って、fdisk を使用するときは、必ずパーティションの開始点が 8 の倍数セクターであることを確認してください。その確認時に、プログラムが 8 の倍数を単位としてセクターを使用することを検証します。2.17 より後のバージョンでも、メイン・メニューで「u」を入力すると、シリンダーを使用することができます。「p」を入力すると、リスト 1 に示す出力が表示され、この出力で、これらの詳細を確認することができます。この出力には単位の値は明示的に示されませんが、開始値と終了値が非常に長いため、単位がセクター数であることは明らかです。この例の場合、最後の終了値はディスクの最終セクターにあります。この値を、出力の最初のほうに示されているセクター合計数と比較してください。fdisk 2.17 およびそれ以前のバージョンでは、適切に位置合わせされていないと、パーティションがシリンダー境界で終了していないことを警告するメッセージが出される可能性があります。この警告は無視して構いません。

リスト 1. 適切な位置合わせを示す fdisk の出力例
Command (m for help): p

Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes
256 heads, 63 sectors/track, 242251 cylinders, total 3907029168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot         Start         End      Blocks   Id  System
/dev/sdb1            2048     2097151     1047552   83  Linux
/dev/sdb2         2097152  3907029167  1952466008   83  Linux

MBR ディスクを処理するときには、拡張パーティションの位置合わせは重要ではないことを認識しておいてください。拡張パーティションは、論理パーティションを定義する単一セクター・データ構造を保持するため、これらのパーティションを本当の意味で適切に位置合わせすることはできません。ただし、1 次パーティションと論理パーティションの位置合わせは行ってください。

libparted ライブラリー

多くの Linux パーティショニング・ツールで採用されている libparted ライブラリーは、MBR と GPT 両方のパーティショニング方式をサポートしています。libparted 3.1 にはテキスト・モードの parted パーティショニング・ツールが付属しています。また、parted 2.2からは、1MiB (またはそれ以上の) 単位で開始点と終了点を指定して、MiB 境界に位置合わせできるようになっています。位置合わせを確認するには、「unit s」と入力して単位をセクターに切り替え、fdisk での方法と同じようにパーティションの開始点を確認します (リスト 2 を参照)。

リスト 2. 適切な位置合わせを示す parted の出力例
(parted) unit s
(parted) print
Model: ATA ST2000DL003-9VT1 (scsi)
Disk /dev/sdb: 3907029168s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start       End          Size         File system  Name     Flags
 1      2048s       2097151s     2095104s     ntfs         Windows
 2      2097152s    3907029167s  3904932016s               Linux

グラフィカル・ユーザー・インターフェース (GUI) の GParted プログラムを使用する場合は、「Create New Partition (新規パーティションの作成)」ダイアログ・ボックスで、必ず「Align to (位置合わせの基準)」の値を MiB に設定してください (図 8 を参照)。このように設定すると、適切に位置合わせされたパーティションが作成されます。パーティションの「Information (情報)」ダイアログ・ボックスを表示すると、パーティションの開始セクターと終了セクターの絶対位置を調べることができます。

図 8. GParted でパーティションを作成するときには、「Align to (位置合わせの基準)」の値を「MiB」に設定してください
位置合わせのポリシーを設定するための「Align to (位置合わせの基準)」フィールドを表示する、GUI GParted ツールの「Create new Partition (新規パーティションの作成)」ウィンドウのスクリーン・キャプチャー

GPT fdisk ユーティリティー

GPT fdisk ユーティリティーが役立つのは、GPT ディスクだけです。0.5.2 より前のバージョンは位置合わせを一切行いません。ただし、適切な開始セクター番号を手動で指定することで、パーティションを位置合わせすることはできます。バージョン 0.5.2 およびバージョン 0.6.0 から 0.6.5 までは、大容量のディスク (約 800GB を超えるディスク) については、すべてのパーティションの開始セクターを 8 セクター単位の境界に調整しますが、容量の小さいディスクに対してはこの調整を行いません。バージョン 0.6.6 では、パーティション化されていないすべてのディスクに対し、Windows スタイルの 2,048 セクター (1MiB) の位置合わせを導入し、すでにパーティション化されているディスクに対しては、過去に使用された配置を推測しようと試みます。

バージョン 0.5.2 およびそれ以降は、エキスパート・モードのメニューで l オプションを使用することにより、手動で位置合わせの値を調整できるようになっています。このオプションは、セクターの数をオプションとして取ります。Advanced Format ディスクで適切な位置合わせをするには、セクターの数を 8 または 8 の倍数に設定してください。検証オプション (任意のメニューで v を指定) を使用すると、現在の位置合わせの値を基にした適切な位置合わせが行われていないパーティションがレポートされます。gdisk は、パーティションの開始点と終了点をセクターの値で表示します。リスト 3 に、このプログラムを使用してパーティションの適切な位置合わせを確認する方法を示します。

リスト 3. 適切な位置合わせを示す gdisk の出力例
Command (? for help): p
Disk /dev/sdb: 3907029168 sectors, 1.8 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 4B18D328-5E8E-49DB-8690-9FE89807ABF8
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 3907029134
Partitions will be aligned on 8-sector boundaries
Total free space is 6 sectors (3.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              40          409639   200.0 MiB   8300  Unused /boot
   2          409640          819239   200.0 MiB   8300  Unused /boot
   3          819240      3907029134   1.8 TiB     8E00  Linux LVM

Command (? for help): v

No problems found. 6 free sectors (3.0 KiB) available in 1
segments, the largest of which is 6 (3.0 KiB) in size.

まとめ

現在のところ、購入する新しいハード・ディスクには Advanced Format テクノロジーが採用されていることを前提にするのが無難です。もちろん、メーカーの仕様書を調べて Advanced Format テクノロジーが採用されているかどうかを確認することはできますが、時代遅れのユーティリティーやオペレーティング・システムを使用しているのでない限り、Advanced Format ディスクとしてパーティションを位置合わせすることで、古いディスク・タイプに悪影響を与えることはありません。

最近の外部ディスクの中には 4,096 バイトのセクターを使用するものもありますが、内部ディスクではセクター・サイズの変換を行います。このことは、将来的に変わる可能性があります。セクター・サイズが 4,096 バイトのドライブで、オプションでこの実際のセクター・サイズを使用できるようになっている場合、そのオプションを使用したいと思うかもしれません。しかし、それに伴ういくつかの問題について十分考慮してください。

BIOS をはじめとするソフトウェアには、ハード・ディスクのセクター・サイズについての前提があるかもしれません。BIOS にそのような前提がある場合、4,096 バイトのセクターを採用しているディスクに 512 バイトのセクターへ変換するためのファームウェアの機能がなければ、おそらくそのディスクからコンピューターをブートすることはできません。最新のソフトウェアを使用することで、問題の回避に役立つ場合があります。最新のソフトウェアでは、従来のディスクがブート・ディスクとして使用されるように、この新しい技術のディスクをデータ・ディスクとしてのみ使用するためです。

参考文献

学ぶために

製品や技術を入手するために

  • GNU Parted Web サイトでは、テキスト・モードの GNU Parted とその親ライブラリーである libparted の両方をホストします。GNU Parted は、成熟したテキスト・モードの MBR および GPT パーティショニング・ツールです。
  • util-linux パッケージには、Linux の fdisk、sfdisk、および cfdisk が含まれています。
  • GNOME Partition Editor (別名 GParted) は、libparted を基に構築した GUI パーティショニング・ツールです。
  • GPT fdisk プログラムは、Linux fdisk の後にモデル化された GPT 専用パーティショニング・プログラムです。
  • IBM 製品の評価をご自分に最適な方法で行ってください。評価の方法としては、製品の評価版をダウンロードすることも、オンラインで製品を試してみることも、クラウド環境で製品を使用することもできます。

議論するために

  • developerWorks コミュニティーに参加してください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者によるブログ、フォーラム、グループ、Wiki を調べることができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=973606
ArticleTitle=4 KB セクター・ディスクで Linux を使用する: 実用的なアドバイス
publish-date=06192014