記憶域スペース」タグアーカイブ

ミラー高速パリティのSSD層を4枚で作る ④障害テスト編

前回の続き。記憶域スペースのミラー高速パリティでは、一般的にSSD Tierが2枚・HDD Tierは3枚~という構成だが、SSD4枚のミラー(NumberOfColumns=2)でやった場合どうなるか、仮想ディスクでテストする。

SSD2枚とHDD1枚までの障害に耐えられるという想定で、ディスクを外してみる。

仮想ディスクの取り外し

取り外したディスクは通信エラーになっているが、エクスプローラでは問題なくボリュームが使える。

新たにディスクを追加

SSD5とHDD4を作成。既存ディスクは可変VHDXなのでCrystalDiskmarkのテストサイズだけ肥大している。

GUIでも3台がエラーとなっている。新規ディスクとして仮想SSDと仮想HDDを1台ずつ追加。

ディスクの修復確認

ディスクの修復が走っているため、この状態で障害ディスクをリタイアさせようとすると次の警告表示となる。

この挙動については以下のサイトで説明されていた。

https://www.ai-plus.com/archives/4746

まとめ

・SSD層を4枚にすることで、障害の許容度が2枚に増える
・リード速度は上がるが、ライトに恩恵はないので用途は限られる
・障害時の対応を考えるとホットスペアも検討

ミラー高速パリティのSSD層を4枚で作る ③ベンチマーク編

前回の続き。記憶域スペースのミラー高速パリティでは、一般的にSSD Tierが2枚・HDD Tierは3枚~という構成だが、SSD4枚のミラー(NumberOfColumns=2)でやった場合どうなるか、仮想ディスクでテストする。

Hyper-VのVMリスト確認

Get-VM WS* | Sort-Object Name -Descending
Windows Serverを意味するWSという名前で検索

VHDXをVMにアタッチ

SAS扱いなのでVM起動中でもOK。

Add-VMHardDiskDrive -VMName "ws2022-vm" -Path D:\VHDX\SSD1.vhdx
Add-VMHardDiskDrive -VMName "ws2022-vm" -Path D:\VHDX\SSD2.vhdx
Add-VMHardDiskDrive -VMName "ws2022-vm" -Path D:\VHDX\SSD3.vhdx
Add-VMHardDiskDrive -VMName "ws2022-vm" -Path D:\VHDX\SSD4.vhdx
Add-VMHardDiskDrive -VMName "ws2022-vm" -Path D:\VHDX\HDD1.vhdx
Add-VMHardDiskDrive -VMName "ws2022-vm" -Path D:\VHDX\HDD2.vhdx
Add-VMHardDiskDrive -VMName "ws2022-vm" -Path D:\VHDX\HDD3.vhdx

ストレージQoSを設定

VHDXファイルごとに速度制限をかける(理由は前回エントリの通り)。

IOPSとMB/sの変換はこのツールで可能。Hyper-Vは8KB基準とのこと。ProxmoxはMB/sで指定できるので不要。
https://wintelguy.com/iops-mbs-gbday-calc.pl

単体VHDXベンチマーク結果

仮想SSDのベンチ結果
仮想HDDのベンチ結果

ランダムがSSD並に早いが、QoSはあくまで上限を決めているだけだからか。VHDX全台に設定して記憶域スペースを再構築する。

メディアタイプ修正

VMにマウントしたVHDXはメディアタイプがUnspecifiedになるので修正。Proxmoxでも同様。

Get-PhysicalDisk -CanPool $True | Where-Object {$_.Size -EQ 1TB } | Set-PhysicalDisk -MediaType HDD
Get-PhysicalDisk -CanPool $True | Where-Object {$_.Size -EQ 512GB } | Set-PhysicalDisk -MediaType SSD

ミラー高速パリティボリューム作成

$VolumeName = 'TestVolume'
New-Volume -StoragePoolFriendlyName $StoragePoolName -FriendlyName $VolumeName -StorageTierFriendlyNames $PerformanceTier.FriendlyName, $CapacityTier.FriendlyName -StorageTierSizes 700GB, 1400GB -FileSystem NTFS -AccessPath "R:" -ProvisioningType Fixed -AllocationUnitSize 4KB

前回との違いはNTFSにした点。ReFS on NTFSはパフォーマンスが落ちるとのこと。

ベンチマーク結果

リードは2倍が出ておりNumberOfColumns =2にした想定通り。ライトはHDD*3のパリティの速度で遅い。次回は障害テストをしてみる。

PowerShellで記憶域プールの解除とアンマウント

コマンド

Remove-VirtualDisk TestVolume
Remove-StoragePool -FriendlyName TestPool
Dismount-VHD -DiskNumber 2
Dismount-VHD -DiskNumber 3
Dismount-VHD -DiskNumber 4
Dismount-VHD -DiskNumber 5
Dismount-VHD -DiskNumber 6
Dismount-VHD -DiskNumber 7
Dismount-VHD -DiskNumber 8
Dismount-VHD -DiskNumber 9

テスト作成したボリューム削除・記憶域プール削除・VHDのデタッチを一括で行える。

ミラー高速パリティのSSD層を4枚で作る ②プール作成編

前回の続き。記憶域スペースのミラー高速パリティでは、一般的にSSD Tierが2枚・HDD Tierは3枚~という構成だが、SSD4枚のミラー(NumberOfColumns=2)でやった場合どうなるか、仮想ディスクでテストする。

仮想ディスクの状態確認

Get-PhysicalDisk -CanPool $true | Sort-Object Size

記憶域プール作成

$Disks = Get-PhysicalDisk -CanPool $True
$StoragePoolName = 'TestPool'
$StorageSubSystem = Get-StorageSubSystem
New-StoragePool -PhysicalDisks $Disks -FriendlyName $StoragePoolName -StorageSubSystemFriendlyName $StorageSubSystem.FriendlyName

記憶域階層を作成

$PerformanceTier = New-StorageTier -FriendlyName Performance -MediaType SSD -StoragePoolFriendlyName $StoragePoolName -ResiliencySettingName Mirror -NumberOfColumns 2
$CapacityTier    = New-StorageTier -FriendlyName Capacity -MediaType HDD -StoragePoolFriendlyName $StoragePoolName -ResiliencySettingName Parity
Get-StorageTierSupportedSize Performance | FT @{E={$_.TierSizeMin/1GB};L="TierSizeMin(GB)"}, @{E={$_.TierSizeMax/1GB};L="TierSizeMax(GB)"}, @{E={$_.TierSizeDivisor/1GB};L="TierSizeDivisor(GB)"} -AutoSize
Get-StorageTierSupportedSize Capacity    | FT @{E={$_.TierSizeMin/1GB};L="TierSizeMin(GB)"}, @{E={$_.TierSizeMax/1GB};L="TierSizeMax(GB)"}, @{E={$_.TierSizeDivisor/1GB};L="TierSizeDivisor(GB)"} -AutoSize

キャパシティ層 3TB-1TB = 2TB
パフォーマンス層 512GB*2/2 = 1TB
となったことを確認 。

仮想ボリュームとパーティション作成

$VolumeName = 'TestVolume'
New-Volume -StoragePoolFriendlyName $StoragePoolName -FriendlyName $VolumeName -StorageTierFriendlyNames $PerformanceTier.FriendlyName, $CapacityTier.FriendlyName -StorageTierSizes 600GB, 1200GB -FileSystem ReFS -AccessPath "S:" -ProvisioningType Fixed -AllocationUnitSize 4KB

サイズは適当。整合性ストリーム有無については別の機会に検証する。

ベンチマーク結果

Sドライブでベンチマークを図ったところ、ReadはVHDXの配置してあるネイティブSSDと変わらず、Writeはちょうど半分の速度となった。4枚分をミラー書き込みしているからだろうか。VHDXを使う前提でのベンチであれば、以下の設計が必要だったと気づく。

・Hyper-VかProxmoxのVMにアタッチしてディスクごとにQoSを有効にする
・仮想HDDのスループットを100MB/sに下げる
・仮想SSDのスループットを500MB/sに下げる

仮想SSDのIOPSがネイティブSSDの1/4に満たないようにすれば、4枚でも物理ディスク速度がオーバーヘッドにならないので、物理接続に近いベンチが取れそう。

ミラー高速パリティのSSD層を4枚で作る ①ディスク準備編

記憶域スペースのミラー高速パリティでは、一般的にSSD Tierが2枚・HDD Tierは3枚~という構成だが、SSD4枚のミラー(NumberOfColumns=2)でやった場合どうなるか、仮想ディスクでテストする。

VHDX作成

New-VHD  "D:\VHDX\HDD1.vhdx" -SizeBytes 1TB
New-VHD  "D:\VHDX\HDD2.vhdx" -SizeBytes 1TB
New-VHD  "D:\VHDX\HDD3.vhdx" -SizeBytes 1TB
New-VHD  "D:\VHDX\SSD1.vhdx" -SizeBytes 512GB
New-VHD  "D:\VHDX\SSD2.vhdx" -SizeBytes 512GB
New-VHD  "D:\VHDX\SSD3.vhdx" -SizeBytes 512GB
New-VHD  "D:\VHDX\SSD4.vhdx" -SizeBytes 512GB
Get-FolderSize D:\VHDX | Sort FullPath
HDDはパリティ用に3枚作成

ダイナミックVHDXなので初期容量は4MBのみ。

VHDXをマウント

Mount-VHD D:\VHDX\HDD1.vhdx
Mount-VHD D:\VHDX\HDD2.vhdx
Mount-VHD D:\VHDX\HDD3.vhdx
Mount-VHD D:\VHDX\SSD1.vhdx
Mount-VHD D:\VHDX\SSD2.vhdx
Mount-VHD D:\VHDX\SSD3.vhdx
Mount-VHD D:\VHDX\SSD4.vhdx
Get-PhysicalDisk -CanPool $True | Where-Object {$_.BusType -Like "*Virtual*"} | Sort-Object Size -Descending | Format-Table Number,BusType,FriendlyName,SerialNumber,MediaType,Canpool,Size,HealthStatus

ちなみに今回はWhere-Objectで仮想ディスクを拾っているが、以下のようにすればNVMEとSATAを指定して、物理ディスクのみが拾えそう。

Get-PhysicalDisk | Where-Object {($_.BusType -Like "NVME") -OR ($_.BusType -Like "SATA") } | Sort-Object Size -Descending | Format-Table Number,BusType,FriendlyName,SerialNumber,MediaType,Canpool,Size,HealthStatus
マウント結果

メディアタイプを修正

HDD層として利用予定の仮想ディスクがSSDと認識されているので修正する。

Get-PhysicalDisk -CanPool $True | Where-Object {$_.Size -GT 999GB }
Get-PhysicalDisk -CanPool $True | Where-Object {$_.Size -GT 999GB } | Set-PhysicalDisk -MediaType HDD
「999GB以上」といった条件は適宜変更する

状態を確認

CUI
GUI

Primordialは「プール未割当て」という意味。次回は記憶域プールを作成する。