データアライメントとディスククロッシング

 


データアライメントとは?

アライメントとは、「1 列に並べること。機械装置のさまざまな部品を調節すること。」を意味します。
データアライメントとは、データを調節して効率よい1列に並べることを意味します。


ファイル・システムのアライメント

ファイル・システムのアライメントの誤りは、次の2 点でパフォーマンスに影響します。

  1. アライメントの誤りは、ディスク・クロッシングの原因となります。
    ディスク・クロッシングとは2 つのドライブでI/O が割れた状態(通常は1 つのドライブがサービスを提供)のことです。
    以下の図を見ると、Metadataが無ければDisk0一つに書き込みが出来たのにMetadataがあるためにI/Oが分割処理されてしまった状態をディスククロッシングと言います。
  2. アライメントの誤りにより、キャッシュされていない大きな書き込みをストライプに合わせてアライメントすることが困難になります。

最初のケースは、より一般的に発生します。
ディスク操作がキャッシュによってバッファされている場合でも、キャッシュからのフラッシュに時間がかかるようになり、問題が出る場合があります。
ディスク・アクセスを要するランダム読み取りにも、直接的な(データを返すために2 つのドライブからの応答を待つ)および間接的な(ディスクの使用率が必要以上に高くなる)影響があります。

図1に一般的な例を示します。
Intel ベースのシステムは、BIOS によって書き込まれたメタデータのためにアライメントが誤っています。
正しくアライメントされたシステムでは、64 KB の書き込みは、単一のドライブで処理されます。

小さなI/O によるディスク・クロッシングは、一部の種類のホストで重大になる場合があります。

ディスク・クロッシングは、
a)ブロック・サイズが16 KB 以上のランダムI/O の比率が高い場合、
b)ドライブについてNavisphere Analyzer によって報告される平均ビジー・キュー長が4 より大きい場合に、レスポンス・タイムに顕著な影響を与えます。
Exchange やOracle などのように、主に4 KB または8 KB の境界に合わせてアライメントされたワークロードは、少し有利ですが、クロッシングを引き起こすのはリクエストの6%以下(4 KB の場合)、または12%以下(8KB の場合)であるため、実際にユーザーがこの利点に気がつくことはほとんどないかもしれません。
しかし、特定のファイル・システムまたはアプリケーションでアライメントを調整したアドレス領域の使用が推奨されており、また、オフセットが宣言されている場合は、オペレーティング・システムのディスク・ユーティリティを使用してパーティションのアライメントを調整することを推奨いたします。
Navisphere LUN のバインド・オフセット機能は、レイヤード・アプリケーションの同期速度に悪影響を与える場合があるため、注意して使用する必要があります。




Intel アーキテクチャ・システムでのアライメント

Windows 2000/2003 を含むIntel アーキテクチャ・システムは、LUN におけるメタデータの配置による影響を受けます。
つまり、ディスク・パーティションのアライメントに誤りが発生します。
この原因は、LBA アドレスの代わりにシリンダ、ヘッド、セクタ・アドレスを使用するレガシーBIOS コードにあります。
fdisk ユーティリティ、およびWindows Disk Manager はMBR(マスター・ブート・レコード)をフォーマットされた各デバイスに配置します。
MBR のエントリは、デバイス上の63 個の隠しセクタを指定します。
アドレス可能なパーティションは、これら63 個の隠しセクタの直後に開始されます。
これにより、後続のデータ構造でCLARiX RAID ストライプに関連するアライメントに誤りが生じます。

Linux システムでは、隠しセクタの量は使用したブート・ローダーまたはディスク・マネージャ・ソフトウェアによって異なりますが、63 セクタ・レコードが最も一般的です。
VMware ではオフセットは63 です。


ディスククロッシングを回避するアライメント方法


方法1.LUN オフセット

LUN アライメント・オフセット



方法2.NTFSパーティションオフセット

以下はDiskpart.exe ツールを使用してディスク パーティションを作成し、開始オフセットに 2,048 セクタ (1 MB) を指定します。
開始オフセットが 2,048 セクタの場合、ストライプ ユニットのサイズに関するほとんどの状況に対応できます。 

既存のパーティションが境界に整列していることを確認するには、「詳細」で説明されている計算を行います。 

オフセットが 2,048 セクタの RAID 上のディスク パーティションを境界に整列させるには、以下の手順を実行します。
  1. コマンド プロンプトで diskpart と入力し、Enter キーを押します。
  2. DISKPART プロンプトで以下のコマンドを入力し、Enter キーを押します。
    DISKPART> list disk
    Disk ###  Status      Size     Free     Dyn  Gpt
      --------  ----------  -------  -------  ---  ---
      Disk 0    オンライン      37 GB  8033 KB
      Disk 1    オンライン      17 GB  8033 KB
      Disk 2    オンライン      17 GB      0 B
      Disk 3    オンライン      17 GB   148 MB   *

    list disk コマンドは、コンピュータに搭載されている各ディスクの概要情報を出力します。
    アスタリスク (*) 記号が表示されているディスクが、現在フォーカスのあるディスクです。
    固定ディスクおよびリムーバブル ディスクのみが一覧に表示されます。
    固定ディスクには、IDE (Integrated Device Electronics) ディスクや SCSI ディスクなどがあります。リムーバブル ディスクには、1394 ディスクや USB ディスクなどがあります。
    DISKPART>select disk

    select disk コマンドを使用して、指定した Microsoft Windows NT ディスク番号のディスクにフォーカスを設定します。ディスク番号を指定しない場合、現在フォーカスがあるディスクが表示されます。
    DISKPART>create partition primary align=1024


    このコマンドを入力すると、以下のようなメッセージが表示されることがあります。
    DiskPart は指定したパーティションの作成に成功しました。

    align= number パラメータは、論理ユニットがシリンダ単位に整列していない場合のパフォーマンスを向上させるために、通常、ハードウェ RAID の論理ユニット番号 (LUN) を指定して使用します。このパラメータは、ディスクの先頭でシリンダ単位に整列していないプライマリ パーティションを整列させ、オフセットを最も近いアライメント境界に丸めます。

    number は、ディスクの先頭から最も近いアライメント境界までの KB 数です。プライマリ パーティションがディスクの先頭にない場合、このコマンドは失敗します。offset =number オプションを指定してこのコマンドを使用すると、オフセットは、ディスク上で使用可能な最初のシリンダ内に含まれます。
    DISKPART>exit
  3. exit と入力し、Enter キーを押します。
  4. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。diskmgmt.msc と入力し、[OK] をクリックします。
  5. ディスクの管理 Microsoft 管理コンソール (MMC) スナップインで、新しく作成したパーティションを見つけ、ドライブ文字を割り当てます。
  6. NTFS ファイル システムを使用して新しいパーティションをフォーマットし、クラスタ サイズを割り当てます。
 

サブページ リスト

作成日:2010/05/25
更新日:2010/06/25
Comments