複数のディスクを使用すると、ディスクのパフォーマンスが予想よりも遅くなる可能性があります

この記事では、ディスクのパフォーマンスが予想よりも遅くなる可能性がある問題の解決策について説明します。 この問題は、ハードウェアまたはソフトウェア ベースの RAID を使用する場合に発生する可能性があります。

適用対象:Windows Server 2012 R2、Windows 10 - すべてのエディション
元の KB 番号: 929491

現象

Windows で複数のディスクを使用すると、ディスクのパフォーマンスが予想よりも遅くなる可能性があります。 たとえば、ハードウェア ベースの独立ディスクの冗長アレイ (RAID) またはソフトウェア ベースの RAID を使用すると、パフォーマンスが低下する可能性があります。

原因

この問題は、パーティションの開始場所が、RAID で作成されたディスク パーティション内のストライプ ユニット境界に合わない場合に発生する可能性があります。

ボリューム クラスターは、ストライプ ユニットの境界の横ではなく、ストライプ ユニットの境界上に作成できます。 これは、Windows がボリューム クラスターを作成するために 512 バイトの係数を使用するためです。 この動作により、パーティションの位置が正しく配置されません。 1 つのボリューム クラスターが不整合なパーティションで更新されると、2 つのディスク グループにアクセスします。

Windows では、定義済みの数のセクターに基づくパーティションが作成されます。 Windows のディスク パーティションの開始場所は、大容量記憶装置コントローラーによってオペレーティング システムに提示される情報に応じて、32 番目または 64 番目のセクターのいずれかです。

注:

ディスク パーティションは、コードとパーティション情報 (セクターの数や開始セクターなど) のパーティションの最初のセクターを常に予約します。 パーティションの実際のデータ部分は、パーティションの 2 番目のセクターから開始されます。

解決方法

この問題を解決するには、Diskpart.exe ツールを使用してディスク パーティションを作成し、2,048 セクター (1 MB) の開始オフセットを指定します。 2,048 セクターの開始オフセットは、ほとんどのストライプ ユニット サイズのシナリオをカバーします。

注:

Windows Server 2003 Service Pack 1 では、Diskpart でパーティションの配置を調整する機能が導入されました。 更新されたバージョンの Diskpart にアクセスできない場合は、diskpar (このユーティリティの名前に最終的な "t" がないことに注意してください) を使用できます。

既存のパーティションが配置されていることを確認するには、「詳細情報」セクションで説明されている計算を実行します。

2,048 セクター オフセットを持つ RAID 上のディスク パーティションを配置するには、次の手順に従います。

  1. コマンド プロンプトで、「diskpart」と入力し、Enter キーを押します。

  2. DISKPART プロンプトで次のコマンドを入力し、Enter キーを押します。

    list disk
    

    次のような出力が表示されます。

    Disk ### Status Size Free Dyn Gpt  
    -------- ---------- ------- ------- --- ---  
    Disk 0 Online 37 GB 8033 KB  
    Disk 1 Online 17 GB 8033 KB
    Disk 2 Online 17 GB 0 B  
    Disk 3 Online 17 GB 148 MB *  
    Disk 4 Online 17 GB 8 MB *  
    Disk 5 Online 17 GB 8 MB *  
    Disk 6 Online 17 GB 8 MB *  
    Disk 7 Online 17 GB 8 MB *  
    Disk 8 Online 17 GB 435 KB *  
    Disk 9 Online 17 GB 8 MB *  
    Disk 10 Online 17 GB 8033 KB
    

    コマンドは list disk 、コンピューターにインストールされている各ディスクに関する概要情報を提供します。 アスタリスク (*) マークが付いているディスクには、現在のフォーカスがあります。 固定ディスクとリムーバブル ディスクのみが一覧表示されます。 固定ディスクには、統合デバイス エレクトロニクス [IDE] ディスクと SCSI ディスクが含まれます。 リムーバブル ディスクには、1394 ディスクと USB ディスクが含まれます。

    select disk
    

    ディスクの選択コマンドを使用して、指定したディスク番号を持つディスクにフォーカスを設定します。 ディスク番号を指定しない場合は、フォーカスしている現在のディスクが表示されます。

    create partition primary align=1024
    

    注:

    • このコマンドを入力すると、指定したパーティションの作成に成功した DiskPart のようなメッセージが表示されることがあります。
    • align= number パラメーターは、通常、ハードウェア RAID 論理ユニット番号 (LUN) と共に使用され、論理ユニットがシリンダーアラインされていない場合のパフォーマンスを向上させます。 このパラメーターは、ディスクの先頭に円柱配置されていないプライマリ パーティションを配置し、最も近いアライメント境界にオフセットを丸めます。
    • number は、ディスクの先頭から最も近いアライメント境界までのキロバイト (KB) の数です。 プライマリ パーティションがディスクの先頭にない場合、コマンドは失敗します。 コマンドを offset = number オプションと共に使用する場合、オフセットはディスク上の最初の使用可能なシリンダー内にあります。
    exit
    
  3. [ スタート] をクリックし、[ 実行] をクリックし、「 diskmgmt.msc」と入力して、[OK] をクリック します

  4. ディスク管理 Microsoft 管理コンソール (MMC) スナップインで、新しく作成したパーティションを見つけて、ドライブ文字を割り当てます。

  5. NTFS ファイル システムを使用して新しいパーティションをフォーマットし、クラスター サイズを割り当てます。

    注:

    このサンプル手順は、RAID グループごとに 1 つのパーティションに対するものです。

詳細

既存のパーティションが揃っていることを確認するには、ストライプ ユニットのサイズを RAID ディスク グループの開始オフセットで除算します。 次の構文を使用してください。
((パーティション オフセット) * (ディスク セクター サイズ)) / (Stripe ユニット サイズ)

注:

ディスク セクターのサイズとストライプ ユニットのサイズは、バイト単位または KB 単位である必要があります。

256 KB のストライプ ユニット サイズのアライメント計算の例 (バイト単位):
(63 * 512) / 262144 = 0.123046875
(64 * 512) / 262144 = 0.125
(128 * 512) / 262144 = 0.25
(256 * 512) / 262144 = 0.5
(512 * 512) / 262144 = 1

256 KB のストライプ ユニット サイズのアライメント計算の例 (KB 単位):
(63 *.5) / 256 = 0.123046875
(64 *.5) / 256 = 0.125
(128 *.5) / 256 = 0.25
(256 *.5) / 256 = 0.5
(512 *.5) / 256 = 1

これらの例は、パーティションが 512 セクター (セクターあたり 512 バイト) のオフセットを使用して作成されるまで、パーティションが 256 KB のストライプ ユニット サイズに対して正しく配置されていないことを示しています。

注:

アレイ グループ内のディスクの数は、パーティションの配置に影響しません。 パーティションの配置に影響を与える要因は、ストライプユニットのサイズとパーティションの開始オフセットです。

特定のパーティションの開始オフセットを見つけるには、次の手順に従います。

  1. [スタート] ボタンをクリックし、[実行] をクリックします。次に「cmd」と入力し、[OK] をクリックします。

  2. 次のコマンドを入力し、Enter キーを押します。

    wmic partition get BlockSize, StartingOffset, Name, Index
    

    コマンドを実行すると、次のような出力が表示されます。

    BlockSize Index Name StartingOffset  
    512 0 Disk #1, Partition #0 32256  
    512 0 Disk #2, Partition #0 32256  
    512 0 Disk #3, Partition #0 32256  
    512 0 Disk #4, Partition #0 1048576  
    512 0 Disk #0, Partition #0 32256  
    512 1 Disk #0, Partition #1 41126400
    
  3. 指定された各パーティションの BlockSize と StartingOffset の値に注目してください。 このコマンドによって返される Index 値は、パーティションが特定のディスク ドライブの最初のパーティション、2 番目のパーティション、またはその他のパーティションであるかどうかを示します。 たとえば、パーティション インデックス 0 は、特定のディスク上の最初のパーティションです。

  4. 特定のパーティションがディスクの先頭から開始するディスク セクターの数を確認するには、StartingOffset の値を BlockSize の値で除算します。 手順 2 の例では、次の計算によって、セクターのパーティション開始オフセットが生成されます。

    32256/ 512 = 63