ストレージ階層では、1 つのプール内に HDD および SSD を混在させ、さらに高速の SSD を利用して、SSD を最も頻繁にアクセスするデータに使用することにより、IOPS とスループットを最大限にすることができます。Storage Spaces は常にデータ使用パターンを分析し、最も頻繁に使用されるデータを HDD 階層から SSD 階層に移動します。
Microsoft Storage Spaces は、データが使用される頻度に基づいてヒートマップを作成します。1 日に 1 回、最適化プロセスが自動的に実行され、最も頻繁にアクセスされるデータ(ホットデータ)は SSD 階層に移動し、アクセス頻度の低いデータは HDD に移動します。
SSD 階層のデータは 1 日に 1 回(デフォルト)しか更新されないため、必要に応じて、次の PowerShell コマンドを実行して、データを最適化できます。
defrag.exe /C /H /K /G
このコマンドは、実行されたノードが所有する仮想ディスクのみを最適化するため、クラスタの全ノードで実行する必要があります。
お使いのソリューションのパフォーマンスを検証する際、数日かけてベンチマークを実行して SSD 階層をワークロードに合わせて最適化します。または、手動で SSD 階層を最適化することができます。上記のコマンドを使ってストレージ階層データを手動で最適化すると、ストレージ階層最適化レポートが生成されます。ストレージ階層最適化レポートは、ストレージ階層にデータを提供しますが、これはパフォーマンスを最適化する方法を識別するために使用できます。
頻繁に使用されるファイルを SSD 階層に永続的に配置する機能が便利な場合があります。たとえば、アクセス頻度の高い、低いレイテンシと高いスループットを必要とする VHDX ファイルなどです。これは、SSD 階層にファイルをピンすることにより実行できます。
ピンした後でも、次の最適化まで(あるいは手動で実行するまで)は、SSD 階層に移動することはありません。
ストレージ階層の主な目的は階層を最適化するヒートマッププロセスを可能にすることであるため、デルはピンの使用には慎重になることをお勧めします。
次の PowerShell コマンドを実行して、SSD 階層にファイルをピンします。
Set-FileStorageTier –FilePath <localFilePath> -DesiredStorageTierFriendlyName<ssdTierName>
次の PowerShell コマンドを実行して、SSD 階層にピンしたファイルを解除します。
Set-FileStorageTier –FilePath <localFilePath>
次の PowerShell コマンドを実行して、現在ピンされているすべてのファイルをレビューします。
Get-FileStorageTier –VolumePath <csvVolumePath>
たとえば、Volume3 というラベルがついた CSV の exampleShare にある myVHDX という VHDX ファイルをピンします。ストレージ階層の名前は MyPool1_SSD です。
Set-FileStorageTier –FilePath “C:\ClusterStorage\Volume3\Shares\exampleShare\myVHDX.vhdx” –DesiredStorageTierFriendlyName “MyPool1_SSD”
ストレージ階層は各ストレージプールに設定されており、SSD 階層 1 つと HHD 階層 1 つを各ストレージプールに作成することをお勧めします。
次の各式は、ストレージプール内で仮想ディスクを作成し始める際の計画に使用します。計算式の値は容量の上限を理解するために使用し、各仮想ディスクを作成してサイズを決定する際に、自動リビルド用にプール全体で十分な HDD ディスク容量と SSD ディスク容量を常に空けておくようにします。これらは、個別の仮想ディスクの階層のサイズを決定するための計算式ではありません。自動リビルドを使用せず、手動リビルドのみを実行する予定の場合は、自動リビルド用に以下の数式で容量を減算する必要はありません。
プール当たりの Raw SSD の使用可能な容量 =(プール内の SSD 数*SSD 容量) - (SSD 容量 + 自動リビルド用の容量 8GB)*(回復するディスクエラーの数)プール当たりの Raw HDD の使用可能な容量 =(プール内の HDD 数*HDD 容量) - (HDD 容量 + 自動リビルド用の容量 8GB)*(回復するディスクエラーの数)
階層サイズは、作成している Storage Space のタイプによって異なる回復性係数によって修正される Raw 値です。たとえば、シンプル容量の場合は 1、2 方向ミラーの場合は 1/2、3 方向ミラーの場合は 1/3 です。
プール当たりの SSD 階層 = プール当たりの Raw SSD の使用可能な容量
プール当たりの HDD 階層 = プール当たりの Raw HHD の使用可能な容量
たとえば、1 つのプールは 48 の 4 TB と 12 の 800 GB ディスクで作成され、tierPool1 と呼ばれます。このプール内の仮想ディスクは 2 つのみで、1 つは 2wayVD1 と呼ばれる 2 方向ミラーリングで、もう 1 つは 3wayVD1 と呼ばれる 3 方向ミラーリングです。
2wayVD1 HDD 階層は 42.7 TiB で、2 方向ミラーリングの 50% の回復性オーバーヘッドのため、85.5 TiB の HDD 階層を使用します。SSD 階層のサイズは 2 TiB で、回復性オーバーヘッドのため 4 TiB の SSD 階層を使用します。
2.4wayVD2 HDD 階層は 27.9 TiB で、3 方向ミラーリングの 66% の回復性オーバーヘッドのため、55.8 TiB の HDD 階層を使用します。SSD 階層のサイズは 1.2 TiB で、回復性オーバーヘッドのため 3 TiB の SSD 階層を使用します。
両方の仮想ディスクが作成された後は、HDD 階層には 33.42 TiB のディスク容量が残っており、SSD 階層には 2.3 TiB のディスク容量が残っています。
プール名 | tierPool1 |
---|---|
プール内の HDD 数 | 48 |
HDD ディスク容量 | 4 TB (3.64 TiB) |
HDD 階層ディスク容量(自動リビルド後) | 141.3 TiB |
プール内の SSD 数 | 12 |
SSD ディスク容量 | 800 GB (745 GiB) |
仮想ディスク名 | 2wayVD1 |
---|---|
復元 | 2 方向ミラー |
HDD 階層ディスク容量 | 42.76 TiB |
SSD 階層ディスク容量 | 2 TiB |
SSD 階層ディスク容量(自動リビルド後) | 8.18 TiB |
仮想ディスク名 | 3wayVD2 |
---|---|
復元 | 3 方向ミラー |
HDD 階層ディスク容量 | 27.9 TiB |
SSD 階層ディスク容量 | 1.23 TiB |
新しい SSD と HDD ストレージ階層を作成する際には、次の PowerShell コマンドを実行します(各プールに対して設定)。
New-StorageTier -StoragePoolFriendlyName <poolName> -FriendlyName <ssdTierName> -MediaType SSD
New-StorageTier -StoragePoolFriendlyName <poolName> -FriendlyName <hddTierName> -MediaType HDD
たとえば、次のとおりです。
New-StorageTier -StoragePoolFriendlyName “tierPool1” -FriendlyName“tierPool1_SSD” –MediaType SSDNew-StorageTier -StoragePoolFriendlyName “tierPool1” -FriendlyName“tierPool1_HDD” –MediaType HDD
仮想ディスク作成時、各仮想ディスクに対してストレージ階層のサイズが決定されます。仮想ディスク作成中、または PowerShell を使用することにより、GUI で SSD および HDD のサイズを決定することができます。
既存ストレージ階層を使って仮想ディスクを作成するための次の PowerShell コマンドを実行します。
New-VirtualDisk -FriendlyName <vdName> -StoragePoolFriendlyName <poolName> -ProvisioningType Fixed -ResiliencySettingName <Simple| Mirror| Parity> -PhysicalDiskRedundancy <1|2> -StorageTiers <ssdTierObject, hddTierObject> -StorageTierSizes <ssdTierSize , hddTierSize>
ストレージ tierPool1 には 2wayVD1 と呼ばれる新しい仮想ディスクが作成されます。この仮想ディスクは、2 方向ミラーとして構成されます。このプールの SSD と HDD 階層は、上記の例で作成されました。 StorageTiers 属性には入力としてオブジェクトが必要であるため、 Get-StorageTier PowerShell コマンドの出力は $ssd_tier$hdd_tier 変数に割り当てられ、次に仮想ディスク作成時に使用されます。 StorageTierSizes 属性は、仮想ディスクがその階層ディスク容量を使用する各階層のサイズに合わせて設定されます。
$ssd_tier = Get-StorageTier -FriendlyName tierPool1_SSD
$hdd_tier = Get-StorageTier -FriendlyName tierPool1_HDD
New-VirtualDisk -FriendlyName “2wayVD1” -StoragePoolFriendlyName “tierPool1” -ProvisioningType Fixed -ResiliencySettingName Mirror -PhysicalDiskRedundancy 1 –StorageTiers $ssd_tier, $hdd_tier –StorageTierSizes 2TB, 42.7TB