結論
・シーケンシャルリードは期待の結果に。
・ライトは期待の半分ほどで遅かったですが、HDDのパリティよりは速かったです。
概要
・以下のような構成で、SSDを2枚ないし4枚で高速層(ホットデータ)を作り、HDDはRAID5相当で領域を節約しつつ冗長性を保つ(コールドデータ)、というものになります。
・すみません図は使いまわしです。しかもストラピングではなくミラーです。
なんか面白い製品が出た
・きっかけはセンチュリーさんから2ドライブのUSB NVMEエンクロージャーが出たことです。
・これにより1本のUSBケーブルで記憶域スペースの高速層を作れるのでは?というわけですね。
https://www.century.co.jp/products/cmnv2u10gcp.html
必要なもの
- 余ってるWindowsPC(今回はProxmox上のWindows Server2025)
- 3ベイ以上のUSB HDDエンクロージャー(今回はロジテックの4ベイ)
- センチュリーのこれ
あとはNVME SSDが2枚、HDDが任意の数必要になります。
スペック
・高速層は500GB×2でRAID1相当のミラーリングにより容量は500GBのままですが、冗長化されます。
・USB3.2 Gen2なので、理論上は最大1000Mb/sが出るようです。
・低速層はパリティ(RAID5相当)により容量と冗長性のバランスを取ります。今回1TB×4台なので-1TBで3TBとなります。
・記憶域スペースのパリティの仕様により、低速層の書き込みは単体より低速になってしまいますが、高速層でカバーするということらしいです。
HDDを認識させる
・VMにパススルーしてますが物理マシンでは不要な手順となります。
SSDを認識させる
・こちらはエンクロージャー単位でいけました。メーカーによるのですかね?
・全部で6台のディスクがWindowsからこのように認識していればOKです。
記憶域スペース作成
・PowerShellコマンドで作ります。メディアタイプが不明になっているので、HDDに変換します。
# 情報確認
$disks = Get-PhysicalDisk | where {$_.Canpool -eq $true}
Write-Host "プールが可能なディスクの一覧:" -ForegroundColor Green
$diskInfo = $disks | select UniqueID, ClassName, Manufacturer, Model, BusType, MediaType, CanPool, @{Name="SizeGB"; Expression={$_.Size / 1GB -as [int]}}, OperationalStatus, HealthStatus
$diskInfo | sort MediaType -Descending | ft
メディアタイプをHDDに変換
・今回はHDDの型番が一緒なので型番で検索しています。
・検索条件は適宜変更してみて下さい。
$MediaTypeConversionToHDD = Get-PhysicalDisk | where {$_.Model -eq "DT01ACA100"}
foreach ($disk in $MediaTypeConversionToHDD) {
$disk | Set-PhysicalDisk -MediaType HDD
}
最終容量を計算する
・ミラーだと48%、パリティだと96%にすることでエラーなく作成できたのでそうしています。そういう仕様なのですかね。
# 容量プランの表示
$totalSSD = ($disks | where MediaType -eq "SSD" | measure -property Size -Sum).Sum
$totalHDD = ($disks | where MediaType -eq "HDD" | measure -property Size -Sum).Sum
$SSDSize = $totalSSD * 0.48
$singleHDD = ($disks | where MediaType -eq 'HDD' | select -First 1).Size
$HDDSize = ($totalHDD - $singleHDD) * 0.96
$totalSSDinGB = [math]::Round($totalSSD/1GB)
$totalHDDinGB = [math]::Round($totalHDD/1GB)
$SSDSizeInGB = [math]::Round($SSDSize/1GB)
$HDDSizeInGB = [math]::Round($HDDSize/1GB)
Write-Host "記憶域スペースで予定される最終容量を計算します。(高速層:48%のサイズ、低速層:-1台かつ96%のサイズ)"
Write-Host "SSD高速層(ミラー):トータルは $totalSSDinGB GBで、$ssdSizeinGB GBのボリュームが作成される予定です。" -ForegroundColor Cyan
Write-Host "HDD低速層(パリティ):トータルは $totalHDDinGB GBで、$hddSizeinGB GBのボリュームが作成される予定です。" -ForegroundColor Yellow
階層プールとボリュームの作成
・NumberOfColumnsとNumberOfDataCopyは難しそうだったのでいったんこのようにしています。
・詳しい方お願いします。
$Pool = New-StoragePool -FriendlyName "階層プール" -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks $disks
$SSDTier = New-StorageTier -StoragePoolFriendlyName "階層プール" -FriendlyName SSDTier -MediaType SSD -ResiliencySettingName Mirror -ProvisioningType Fixed -NumberOfColumns 1
$HDDTier = New-StorageTier -StoragePoolFriendlyName "階層プール" -FriendlyName HDDTier -MediaType HDD -ResiliencySettingName Parity -ProvisioningType Fixed -PhysicalDiskRedundancy 1 -NumberOfColumns 4
# ボリュームの作成
New-Volume -FriendlyName "ミラー高速パリティテスト" -DriveLetter M -FileSystem ReFS -WriteCacheSize 16GB -StorageTiers $SSDTier, $HDDTier -StorageTierSizes $SSDSize, $HDDSize
ベンチマーク
・シーケンシャルリードは期待の結果に。
・ライトは期待の半分ほどで遅かったですが、HDDのパリティよりは速かったです。
・記憶域スペースの原因か、エンクロージャーの制約なのかは不明。
コラム
・ベンチマーク中にVMがフリーズするのが気になりました。
・Proxmoxってパススルーまわりはまだ不安定?実機でやってみることをお勧めいたします。
・テストが繰り返せるよう、ボリュームを削除するPowerShellも貼っておきます。
# 削除する
Remove-VirtualDisk -FriendlyName "ミラー高速パリティテスト" -Confirm:$false
Remove-StoragePool -FriendlyName "階層プール" -Confirm:$false