人生エクソダスしてなにものからも自由になりたかった

遁世したい。でもできない中年男の独白。

階層記憶域「ミラー高速パリティ」のSSD帯をパリティにした結果…

Q.ミラー高速パリティでは高価なSSDをミラーに使ってもったいない(50%)。SSDパリティ(66%~)にすれば高速で容量も確保できるのではないか。

A.結果がこちら

恵まれた(そこまででもない)シーケンシャルリードから繰り出されるこの世の終わりのようなランダムリード・ライト。なにげにシーケンシャルライトも酷い。

実用に堪えない。

 


いきさつ

 単純にSSDならHDDより高速だから、遅い遅いと言われる記憶域のパリティでもましだろうと思ったのが発端だった。

 今回の構成はこちら、

 SSD4台、HDD4台の豪華編成である。ちなみにこれで普通通り「ミラー高速パリティ」を作った場合、SSD811GB/HDD18.56TBというSSD:HDD=20:468(4.2%)の比率となり、Microsoft推奨の20:80なんか比べ物にならないしょぼさの高速帯となる。仕方ないね。

 実はこの構成でパリティに変えたところで2049440956416/1024^4/4*3*0.8=1229664573850≒1.12TB
 となり、ミラー構成時の871012406477≒0.79TBに比べれば1.4倍だが構成比としては20:331.8(6%)の厳しい比率であることは間違いない。

 しかし、例えば書き込み450MB/sくらいの、大容量データを書き込むとSLCキャッシュが切れて書き込み速度が200MB/sまで落ちるような安くて容量は大きいSSDを束ねればよいのである。この場合書き込み速度が500MB/sを超える高級なSSDは必要ない。価格対容量が良いSSDが良いのである。

 なので1TB・11000円超えない、2TB・22000円超えないSSDを複数束ねれば、これはミラーよりパリティの方が利用効率が良くなり、仮想ストレージの大きさも確保できる。

 そう思った。

 

作成過程

①Get-StoragePool 記憶域プール | Get-PhysicalDisk | where MediaType -EQ unspecified | Set-PhysicalDisk -MediaType HDD

 いきなりGet-PhysicalDiskから始めると記憶域プールに突っ込まないunspecifiedもHDDにされてしまう。USB接続のSSDもunspecifiedと表示されるので、変更範囲を指定することは大事。

②Get-StoragePool 記憶域プール | New-StorageTier -FriendlyName SSD -MediaType SSD -ResiliencySettingName Parity -NumberOfColumns 4

 いつもはResiliencySettingName Mirrorで作成するが、今回パリティなので記述変更。

Get-StoragePool 記憶域プール | New-StorageTier -FriendlyName HDD -MediaType HDD -ResiliencySettingName Parity -NumberOfColumns 4

$SSDTier = New-StorageTier -StoragePoolFriendlyName '記憶域プール' -FriendlyName 'SSD' -MediaType SSD -ProvisioningType Fixed -ResiliencySettingName Parity -NumberOfColumns 4

$HDDTier = New-StorageTier -StoragePoolFriendlyName '記憶域プール' -FriendlyName 'HDD' -MediaType HDD -ProvisioningType Fixed -ResiliencySettingName Parity -NumberOfColumns 4

 特筆することのない、階層記憶域を作成するいつものやつである。ここもSSD帯はミラーでなくパリティなので記述変更。

④Get-StoragePool 記憶域プール | Get-PhysicalDisk | ft friendlyname,mediatype,size

 容量決定の際に〇〇MBとかの表記が使えないのでbyteで求めるために表示。コピペにあたって他が邪魔なのでsizeだけにして再表示。

⑤Get-StoragePool 記憶域プール | New-virtualdisk -FriendlyName '記憶' -WriteCacheSize 16GB -StorageTiers $SSDTier,$HDDTier -StorageTierSizes 1306518609715,20403986216141

 このときSSDパリティを*0.8ではなく*0.85で計算したため1306518609715となり若干膨らむ。windows標準の電卓は桁にコンマが入り消す手間が面倒なので、エクセルで計算した値をプレーンテキストで張り付けた方が楽である。

⑥Get-StorageTier | ft FriendlyName,TierClass,MediaType,ResiliencySettingName,Size,NumberOfColumns

 作成後の構成を確認。ちゃんと自分の想定通りの仮想ストレージができている。

 しかし期待した通りのパフォーマンスを発揮するかというと、最初に張り付けた写真のとおりである。

 

結論

 実際にコピーを試みると250MB/sくらいで始まり、一定ラインを超えると0MB/sになり完全にブレーキする。このときディスク使用率は100%でビジー状態となっているが、読み込み書き込みがされている様子もない、どん詰まりの状態になる。

 この250MB/sというのはヘリウム充填式の14TBのHDDシングルと同程度であり、16TBだとこれより若干速い。全くSSD帯の存在が必要ない。黙ってRAIDカードでヘリウム充填式のHDDをパリティしたほうがましである。空気充填式の8TBのHDDよりコスパは悪いが、14TBのHDDはかなり値段が下がっている。また故障率も16TBより低い。

 階層記憶域を使うなら、SSDはミラーしかない。