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

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

記憶域を用いてStoreMIを超えたい

 StoreMIがリニューアルされたことで仕様が公開され、新StoreMIはHDDのうちよく使うデータをミラーリングしてSSDからのアクセスで高速化を図るものに変わった。これによって旧StoreMIのように256GB容量が増えることはなくなったが、ドライブは完全に隠され誤操作されることは基本なくなった。

 一方記憶域Windows8から続くWindows謹製のソフトウェアRAIDのようなものであり、その一方従来のRAIDカードなどによるRAID構成と違い容量は足し算で計算される。つまりJBODのようでいて、構成はストライピング・2ミラー・3ミラー・パリティから選べる。この記憶域を四苦八苦して構成した顛末を記そうと思う。さらに旧StoreMIを卒業して記憶域に入部したことで変わったことを考えたい。

 ※普通に記憶域を作った場合、利用率は不均衡のためHDDのサイズは適当でもどうにかなるが、階層化した記憶域を作る場合はあらかじめ設定した大きさで作るので、HDDの使用率は容量の小さい方に依存する。つまり8TBと10TBの組み合わせで記憶域を作った場合、10TBの方を多めに使うのではなく均等量に書き込みし、先に8TBの方がいっぱいになりアラートになるようだ。つまり普通のRAIDと一緒。

 

 記憶域は「システムとセキュリティ」から確認できるが、基本「記憶域の操作」という項目を使い操作する。ちなみにスタートメニューにコントールパネルのコラムがあると、右クリックすることで最近使ったものから順番に表示されるので入りやすくなる。

 ここから新しいプールを作るために使っていない(未フォーマット)HDDやSSDをチェックして取り込む。この後すぐ記憶域を作成し増やしていくことができるが、この操作ではパーティションを増やすように新規区画を増やすのではなく、新しい仮想ドライブをどんどん作ることになる。そして、この状態では基本ディスクは使った分だけ緑のバーが増えていき、容量を超えそうになったら警告マークが表示され追加を促される。新規ディスクの取り込みが容易なのも記憶域の特徴で、SATAのみならずUSBやSCSIも対象になる。そもそもサーバ用の技術をWin10でも使えるようにしたものなのでサーバっぽいものなのだ。

 しかし高速化をもくろんだ場合、この「記憶域の操作」から新しい記憶域を作るのは罠だ。よく言われる”ミラーリングされたキャッシュでHDDをパリティ構成する”というものはここからではできない。また一度ここで新しい記憶域を作ると、このパリティ構成が失敗するので、やってしまったら一度記憶域を削除後プールも解除する必要がある。

 

 用意するもの…HDD3台以上、SSD2台以上、それらをつなぐケーブル

 ※WindowsではコールドストレージとしてHDD、キャッシュとしてSSDを構成する場合、HDDの総容量の10%キャッシュが欲しいとしている。つまりHDDが8TB*3なら2.4TBのSSDを求めることになる。が1TBのSSDSATAでも12000円なことを考えるとハードルが高い。ちなみに私は8TB-HDD*3、500GB-SSD*2で挑んだ。

 1.まず記憶域に使うディスクを取り込む

 このとき記憶域の作成も促されるがキャンセルで抜ける。

 2.PowerShellを管理者権限で開き、Get-PhysicalDiskと入力

 すると物理ディスクの一覧が表示される。このときSSDは問題なく”SSD”と表示されるものの、HDDはどういうわけか”Unspecified”と表示される。これは分類不能であり、以下の操作で対象にされなくなってしまうので、必ずHDDに変えていく。

f:id:jinsei-exodus:20201004164848j:plain

  2-1.UnspecifiedのHDDをきちんとHDDにする

 これはGet-PhysicalDiskをすると、併せてシリアルナンバーも表示されるので、

Get-PhysicalDisk -SerialNumber ****** | Set-PhysicalDisk -MediaType HDD

 の******を↑のシリアルナンバーのコピペで一台ずつ入力していく。

 3.ストレージの階層を作っていく

  3-1.SSD

Get-StoragePool 〇〇〇〇 | New-StorageTier -FriendlyName SSDtier -MediaType SSD -ResiliencySettingName Mirror

 これの〇〇〇〇は記憶域プールの名前のことであり、デフォルトだと記憶域プールとしているはずだろう。またResiliencySettingNameはMirrorでもSingleでもいいが、記憶域のパリティハードウェアRAIDパリティと違い絶望的に遅いので、いわゆるストライピングとなるSingleにするのはキャッシュが消えてHDD保存前にデータが飛ぶ事故を考えるとおすすめしない

  3-2.HDD

Get-StoragePool 〇〇〇〇 | New-StorageTier -FriendlyName HDDtier -MediaType HDD -ResiliencySettingName Parity -NumberOfColumns 3

 これの〇〇〇〇は(ry 

 まず第一に、HDDtierやSSDtierは名前は好きにしていい。が後々も使うのでわかりやすく、ちゃんと通ったかわからないからと再度書き込みすると複数のHDDtierなどが乱立して失敗するので、不安ならget-StorageTierでTierの確認をして、いくつかの種類が乱立しているなら一度記憶域を解除してもう一度最初からやり直した方がいい。

 第二にMediaTypeをUnspecifiedのまま放置しているとHDD階層を作るときに対象外にしてしまうのでさぼらずシリアルナンバーと属性HDDとを結びつけておくこと。

 第三に、NumberOfColumns は構成するHDDの数である。できればautoでなく実数値を入力した方がいい。実数値を入力しない場合例えば4台HDDをつなげたとき3台しか書き込まず4台目を放置したりすることがあるらしいためだ。

 言うまでもなくResiliencySettingName Parityである。singleでもmirrorでもない。

 4.記憶域を構成するディスク容量を正確に確認する

Get-StoragePool 〇〇〇〇 | Get-PhysicalDisk | Format-Table MediaType,Size

f:id:jinsei-exodus:20201004164852j:plain

 5.SSD階層、HDD階層の容量を設定する

 4で確認したバイト数をコピーし、

$WriteCacheSize = 16GB

$SSDSize = 525112713216*0.9 - $WriteCacheSize

$HDDSize = 8001563222016*3*0.9

 のように構成する。HDDSizeの*3は3台だから。また*0.9しているのは、9割に留めておかないと不具合を生じるケースがあるらしいからである。つまり、HDD3台でパリティすると、買ったとき8TB*3Windowsで確認7.27TB*3→パリティだから-1台で計算7.27TB*2→0.9倍→13.095TBとなり、素直に使うことの6割程度まで目減りする。えぐい。

 ちなみにSSDのサイズが2つで違っている(厳密には525GB/500GB)が、0.9倍したことで500GB以下に収まったので問題なかったようだ。記憶域構成の物理ディスクで使用率が97%だったのでかなりギリギリには違いないが…

 6.仮想ディスクをつくる

Get-StoragePool 〇〇〇〇 | New-VirtualDisk -FriendlyName △△△ -StorageTiers $SSD,$HDD -StorageTierSizes $SSDSize,$HDDSize -WriteCacheSize $WriteCacheSize

 ここの△△△は普通に記憶域プールからつくると名前が”記憶域”になるのでそう入力してもいい。ディスクの名前がこれになり、パーティションの名前のように後から変えられない。

 この操作がエラーメッセージなく完了する(それなりに時間がかかる)と仮想ディスクが作成される。この仮想ディスクは”未フォーマット”扱いであり、「記憶域の操作」からフォーマットすることで初めて使えるようになる。無論Win10ではNTFSしかない。

 

 こうして作成されたほぼ全容量の9割を使った仮想ディスクはパーティションソフトやディスクの管理からの編集が可能であり、さながら1台のHDDをパーティションするかのように区分けすることができる。

f:id:jinsei-exodus:20201004165054j:plain

 この場合SSDの方だけを見てなのか2ミラーになっている。また20.5TB使ったことになっているが、厳密にデータが入っているわけではなく枠が確保されているという話だ。13.095TBの容量という話をしたが、singleでない限り回復性を持たせるために1.5倍指定サイズから拡張することになっているので、それを後からじわじわやるか最初から確保しておくかの違いに過ぎない。

 肝心のスペックは、ざっくり言うと「キャッシュが効けばSSD、切れたらHDD/台数」であり、場合によっては驚くほどの遅さになる。具体的にはデータ引っ越しの際に3TBのデータのコピーに2日かかるくらい。そりゃ10%はSSDにしろと言いますわ。もっとも、HDDがとりわけランダムライトに弱いSMRだから特にそう感じるのかもしれないが…