2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

USBエンクロージャだけで記憶域スペースのミラー高速パリティを作ってみる

Last updated at Posted at 2024-06-20

結論

・シーケンシャルリードは期待の結果に。
・ライトは期待の半分ほどで遅かったですが、HDDのパリティよりは速かったです。
image.png

概要

・以下のような構成で、SSDを2枚ないし4枚で高速層(ホットデータ)を作り、HDDはRAID5相当で領域を節約しつつ冗長性を保つ(コールドデータ)、というものになります。
・すみません図は使いまわしです。しかもストラピングではなくミラーです。
image.png

なんか面白い製品が出た

・きっかけはセンチュリーさんから2ドライブのUSB NVMEエンクロージャーが出たことです。
・これにより1本のUSBケーブルで記憶域スペースの高速層を作れるのでは?というわけですね。
https://www.century.co.jp/products/cmnv2u10gcp.html

cmnv2u10gcp_g03.jpg

必要なもの

  1. 余ってるWindowsPC(今回はProxmox上のWindows Server2025)
  2. 3ベイ以上のUSB HDDエンクロージャー(今回はロジテックの4ベイ)
  3. センチュリーのこれ

あとはNVME SSDが2枚、HDDが任意の数必要になります。

スペック

・高速層は500GB×2でRAID1相当のミラーリングにより容量は500GBのままですが、冗長化されます。
・USB3.2 Gen2なので、理論上は最大1000Mb/sが出るようです。
・低速層はパリティ(RAID5相当)により容量と冗長性のバランスを取ります。今回1TB×4台なので-1TBで3TBとなります。
・記憶域スペースのパリティの仕様により、低速層の書き込みは単体より低速になってしまいますが、高速層でカバーするということらしいです。

HDDを認識させる

・VMにパススルーしてますが物理マシンでは不要な手順となります。
image.png

SSDを認識させる

・こちらはエンクロージャー単位でいけました。メーカーによるのですかね?
image.png
・全部で6台のディスクがWindowsからこのように認識していればOKです。
image.png

記憶域スペース作成

・PowerShellコマンドで作ります。メディアタイプが不明になっているので、HDDに変換します。

.ps1
# 情報確認
$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

image.png

メディアタイプをHDDに変換

・今回はHDDの型番が一緒なので型番で検索しています。
・検索条件は適宜変更してみて下さい。

.ps1
$MediaTypeConversionToHDD = Get-PhysicalDisk | where {$_.Model -eq "DT01ACA100"}
foreach ($disk in $MediaTypeConversionToHDD) {
    $disk | Set-PhysicalDisk -MediaType HDD
    }

・メディアタイプがHDDになりました。
image.png

最終容量を計算する

・ミラーだと48%、パリティだと96%にすることでエラーなく作成できたのでそうしています。そういう仕様なのですかね。

.ps1
# 容量プランの表示
$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

image.png

階層プールとボリュームの作成

・NumberOfColumnsとNumberOfDataCopyは難しそうだったのでいったんこのようにしています。
・詳しい方お願いします。

.ps1
$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のパリティよりは速かったです。
・記憶域スペースの原因か、エンクロージャーの制約なのかは不明。
image.png

コラム

・ベンチマーク中にVMがフリーズするのが気になりました。
・Proxmoxってパススルーまわりはまだ不安定?実機でやってみることをお勧めいたします。
・テストが繰り返せるよう、ボリュームを削除するPowerShellも貼っておきます。

.ps1
# 削除する
Remove-VirtualDisk -FriendlyName "ミラー高速パリティテスト" -Confirm:$false
Remove-StoragePool -FriendlyName "階層プール" -Confirm:$false

ポエム

・センチュリーさんの製品ですが、2枚のNVMEにアクセス時に交互にチカチカ光るのでわかりやすかったです。
image.png

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?