次の方法で共有


サーバーまたはドライブを記憶域スペース ダイレクトに追加する

適用対象: Windows Server 2022、Windows Server 2019、Windows Server 2016

このトピックでは、サーバーやドライブを記憶域スペース ダイレクトに追加する方法について説明します。

サーバーの追加

サーバーの追加 (スケール アウトとも呼ばれます) によって、記憶域容量が増えます。また、記憶域のパフォーマンスを向上したり、より優れた記憶域の効率を実現したりすることができます。 展開がハイパーコンバージされている場合、サーバーを追加すると、ワークロードのコンピューティング リソースも増えます。

Animation of adding a server to a four-node cluster

一般的な展開では、サーバーを追加することで簡単にスケール アウトできます。 次の 2 つの手順を実行するだけです。

  1. フェールオーバー クラスター スナップインを使用してクラスター検証ウィザードを実行するか、PowerShell で Test-Cluster コマンドレットを使用します (管理者として実行)。 追加する新しいサーバー <NewNode> を指定します。

    Test-Cluster -Node <Node>, <Node>, <Node>, <NewNode> -Include "Storage Spaces Direct", Inventory, Network, "System Configuration"
    

    この処理によって、新しいサーバーが Windows Server 2016 Datacenter Edition を実行していること、既存のサーバーとして同じ Active Directory Domain Services ドメインに参加していること、すべての必要な役割と機能があること、およびネットワークキングが適切に構成されていることが確認されます。

    重要

    不要となった古いデータやメタデータが保存されているドライブを再利用している場合は、Disk Management または Reset-PhysicalDisk コマンドレットを使用して、それらのデータを消去します。 古いデータやメタデータが検出された場合、ドライブがプールされません。

  2. クラスター上で次のコマンドレットを実行し、サーバーの追加を完了します。

Add-ClusterNode -Name NewNode

注意

自動プール機能を使用するには、プール数が 1 つである必要があります。 標準構成を避けて複数のプールを作成した場合、Add-PhysicalDisk を使用して手動で目的のプールに新しいドライブを追加する必要があります。

サーバーを 2 台から 3 台にスケーリングする: 3 方向ミラーリングのロック解除

adding a third server to a two-node cluster

サーバーが 2 台の場合は、双方向ミラーリングを行うボリュームを作成するだけです (分散型 RAID-1 に相当)。 サーバーが 3 台の場合は、3 方向ミラーリングを行うボリュームを作成して、フォールト トレランスを向上させることができます。 可能な限り、3 方向のミラーリングを使用することをお勧めします。

双方向ミラーリングを行うボリュームを、3 方向ミラーリングにインプレース アップグレードすることはできません。 代わりに、新しいボリュームを作成し、データをそのボリュームに移行して (Storage Replica などを使用したコピー)、以前のボリュームを削除します。

3 方向ミラーリングのボリュームの作成を開始する場合、適切な方法がいくつかあります。 これらの方法は必要に応じて使用してください。

方法 1

新しいボリュームを作成するたびに、そのボリュームに対して PhysicalDiskRedundancy = 2 を指定します。

New-Volume -FriendlyName <Name> -FileSystem CSVFS_ReFS -StoragePoolFriendlyName S2D* -Size <Size> -PhysicalDiskRedundancy 2

方法 2

代わりに、プールの ResiliencySetting オブジェクト (名前は Mirror) に対して PhysicalDiskRedundancyDefault = 2 を設定することもできます。 これにより、新しいミラー ボリュームでは、指定しなくても自動的に 3 方向ミラーリングが使用されます。

Get-StoragePool S2D* | Get-ResiliencySetting -Name Mirror | Set-ResiliencySetting -PhysicalDiskRedundancyDefault 2

New-Volume -FriendlyName <Name> -FileSystem CSVFS_ReFS -StoragePoolFriendlyName S2D* -Size <Size>

オプション 3

Capacity と呼ばれる StorageTier テンプレートに対して PhysicalDiskRedundancy = 2 を設定し、その階層を参照してボリュームを作成します。

Set-StorageTier -FriendlyName Capacity -PhysicalDiskRedundancy 2

New-Volume -FriendlyName <Name> -FileSystem CSVFS_ReFS -StoragePoolFriendlyName S2D* -StorageTierFriendlyNames Capacity -StorageTierSizes <Size>

サーバーを 3 台から 4 台にスケーリングする: デュアル パリティのロック解除

adding a fourth server to a three-node cluster

サーバーが 4 台の場合は、デュアル パリティ (一般的にイレイジャー コーディングとも呼ばれます) を使用できます (分散型 RAID-6 に相当)。 3 方向ミラーリングと同じフォールト トレランスが実現されますが、記憶域の効率はより優れています。 詳しくは、「フォールト トレランスと記憶域の効率」をご覧ください。

小規模な展開から始める場合は、デュアル パリティのボリュームを作成するための適切な方法がいくつかあります。 これらの方法は必要に応じて使用してください。

方法 1

新しいボリュームを作成するたびに、そのボリュームに対して PhysicalDiskRedundancy = 2ResiliencySettingName = Parity を指定します。

New-Volume -FriendlyName <Name> -FileSystem CSVFS_ReFS -StoragePoolFriendlyName S2D* -Size <Size> -PhysicalDiskRedundancy 2 -ResiliencySettingName Parity

方法 2

プールの ResiliencySetting オブジェクト (名前は Parity) に対して PhysicalDiskRedundancy = 2 を設定します。 これにより、新しいパリティ ボリュームでは、指定しなくても自動的にデュアル パリティが使用されます。

Get-StoragePool S2D* | Get-ResiliencySetting -Name Parity | Set-ResiliencySetting -PhysicalDiskRedundancyDefault 2

New-Volume -FriendlyName <Name> -FileSystem CSVFS_ReFS -StoragePoolFriendlyName S2D* -Size <Size> -ResiliencySettingName Parity

サーバーが 4 台あれば、個々のボリュームで一部がミラーリングを、一部がパリティを実行する、ミラーリングによって高速化されるパリティを使用することもできます。

この場合、4 台のサーバーで初めて Enable-ClusterS2D を実行したときの作成方法と同様に、Performance 階層と Capacity 階層の両方を持つように StorageTier テンプレートを更新する必要があります。 具体的には、データ格納用デバイス (SSD や HDD など) の MediaType と、PhysicalDiskRedundancy = 2 を両方の階層に指定します。 Performance 階層には ResiliencySettingName = MirrorCapacity 階層には ResiliencySettingName = Parity を指定します。

オプション 3

単に既存の階層テンプレートを削除し、2 つの新しい階層を作成するのが一番簡単な方法です。 これは、階層テンプレートを参照して作成された既存のボリュームには影響しません。これは単なるテンプレートです。

Remove-StorageTier -FriendlyName Capacity

New-StorageTier -StoragePoolFriendlyName S2D* -MediaType HDD -PhysicalDiskRedundancy 2 -ResiliencySettingName Mirror -FriendlyName Performance
New-StorageTier -StoragePoolFriendlyName S2D* -MediaType HDD -PhysicalDiskRedundancy 2 -ResiliencySettingName Parity -FriendlyName Capacity

これで完了です。 これらの階層テンプレートを参照することにより、ミラーリングによってパリティが高速化されたボリュームを作成することができます。

New-Volume -FriendlyName "Sir-Mix-A-Lot" -FileSystem CSVFS_ReFS -StoragePoolFriendlyName S2D* -StorageTierFriendlyNames Performance, Capacity -StorageTierSizes <Size, Size>

サーバーが 4 台を超える場合: パリティの効率の向上

サーバーの台数が 4 台を超えるスケーリングの場合、新しいボリュームによって、パリティ エンコーディングの効率が向上します。 たとえば、6 ~ 7 台のサーバーの場合、効率は 50.0% から 66.7% に改善されます。これは、(リード-ソロモン 2+2 ではなく) リード-ソロモン 4+2 を使用できるようになるためです。 この新しい効率を実現するために追加の手順は必要ありません。ボリュームを作成するたびに、最適なエンコーディングが自動的に決定されます。

ただし、既存のボリュームは新しい広範なエンコーディングに "変換" されません。 その理由の 1 つは、変換には、展開全体の文字通りあらゆるビットに影響を与える大量の計算が必要になるためです。 既存のデータを高い効率でエンコーディングできるようにするには、既存のデータを新しいボリュームに移行します。

詳しくは、「フォールト トレランスと記憶域の効率」をご覧ください。

シャーシやラックのフォールト トレランスの使用時にサーバーを追加する

シャーシやラックのフォールト トレランスを使用している展開の場合、新しいサーバーのシャーシまたはラックを指定してから、それをクラスターに追加する必要があります。 こうすることで、記憶域スペース ダイレクトにデータを分散する最適な方法を指示し、フォールト トレランスを最大化することができます。

  1. 管理者特権の PowerShell セッションを開き、次のコマンドを使用して、ノードに一時的なフォールト ドメインを作成します。この <NewNode> は新しいクラスター ノードの名前です。

    New-ClusterFaultDomain -Type Node -Name <NewNode>
    
  2. この一時的なフォールト ドメインを、新しいサーバーを実際に配置するシャーシまたはラックに移行します (<ParentName> で指定します)。

    Set-ClusterFaultDomain -Name <NewNode> -Parent <ParentName>
    

    詳細については、「Fault domain awareness in Windows Server 2016」(Windows Server 2016 での障害ドメインの認識) を参照してください。

  3. サーバーの追加」に従ってクラスターにサーバーを追加します。 新しいサーバーがクラスターに参加すると、(その名前を使用して) プレースホルダー フォールト ドメインに自動的に関連付けられます。

ドライブの追加

ドライブの追加 (スケール アップとも呼ばれます) によって、記憶域容量が増え、パフォーマンスも改善できます。 空きスロットがある場合、サーバーを追加することなく、各サーバーにドライブを追加して記憶域容量を拡張することができます。 キャッシュ ドライブやデータ格納用ドライブはいつでも個別に追加できます。

重要

同じ記憶域構成ですべてのサーバーを構成することを強くお勧めします。

Animation showing adding drives to a sytem

スケール アップするには、ドライブを接続し、Windows から検出されることを確認します。 PowerShell の Get-PhysicalDisk コマンドレットを使用し、CanPool プロパティを True に設定して実行すると、接続したドライブがコマンドレットの出力に表示されます。 CanPool = False と表示された場合、CannotPoolReason プロパティを調べることでその原因を確認できます。

Get-PhysicalDisk | Select SerialNumber, CanPool, CannotPoolReason

短時間で、記憶域スペース ダイレクトから対象のドライブに自動的に要求が送信され、記憶域プールに追加されます。ボリュームは、自動的に、すべてのドライブ全体で均等に再分散されます。 以上で作業は終了です。ボリュームを拡張したり、新しいボリュームを作成したりする準備が整いました。

ドライブが表示されない場合、ハードウェアの変更を手動でスキャンします。 スキャンするには、デバイス マネージャー[操作] メニューを使用します。 古いデータまたはメタデータが含まれている場合は、再フォーマットすることを検討してください。 これを行うには、[ディスクの管理] を使用するか、Reset-PhysicalDisk コマンドレットを使用します。

注意

自動プール機能を使用するには、プール数が 1 つである必要があります。 標準構成を避けて複数のプールを作成した場合、Add-PhysicalDisk を使用して手動で目的のプールに新しいドライブを追加する必要があります。

ドライブまたはサーバーの追加後のドライブ使用率の最適化

ドライブを追加または削除すると、時間の経過とともに、プール内のドライブ間のデータの分散が不安定になることがあります。 これにより、場合によっては、特定のドライブがいっぱいになり、プール内の他のドライブの消費量がはるかに少なくなることがあります。

プール全体でドライブの割り当ての均衡化を図るには、プールにドライブまたはサーバーを追加した後、記憶域スペース ダイレクトによってドライブの使用率が自動的に最適化されます (これは、共有 SAS エンクロージャーを使用する記憶域スペース システムの手動プロセスです)。 最適化は、プールに新しいドライブを追加後 15 分経つと開始されます。 プールの最適化は優先度の低いバックグラウンド操作として実行されるため、特に大容量のハード ドライブを使用している場合は、完了までに数時間または数日かかることがあります。

最適化では 2 つのジョブが使用されます。1 つは "最適化"、もう 1 つは "再調整" と呼ばれ、次のコマンドを使用すると、それらの進行状況を監視できます。

Get-StorageJob

記憶域プールは、Optimize-StoragePool コマンドレットを使用して手動で最適化できます。 次に例を示します。

Get-StoragePool <PoolName> | Optimize-StoragePool