RAID1とRAID5のどちらか迷ったらWindows 10の記憶域スペースを使うのもあり

記憶域スペースのパリティと双方向ミラー
今までアーカイブ用ストレージは安いRAIDケースで済ませていました。
ソフトウエアRAIDは大したメリットもなく転送速度が遅いので使う意味を感じませんでした。
Windows 10のアップデートで新しいフォーマットReFSが使えるようになり記憶域スペースを使うメリットが出てきたかもしれないので試してみます。
RAID1とRAID5が同居できたら便利そうですよね。


保存用のストレージは毎年一度はどうしようか悩みます。冗長性を持たせていても壊れたHDDが出た時ちゃんと修復できるか不安ですよね。
HDDの値段が思いのほか下がらないのも困ります。そろそろ空き容量が無くなるかも・・・増設するにはお金がかかる・・・

RAIDケースも高価なものを買えません。安いRAIDケースで誤魔化しています。こんなのですね。

過去の記事
このところRaidのHDDがよく壊れてしまいます

値段も安くお手軽です。幸いケースの回路が壊れる事はありませんでした。
過去記事にも書きましたが、こういった安いケースではHDDの健康状態を知ることができません。S.M.A.R.T.情報を得ることができないのでHDDがいつ壊れるか不安なまま使っています。HDDに異常を起こしても警告の表示が小さく気づくのが難しいです。
1台のHDDが壊れた時には残りもかなり危ういはず。

しかし高価なRAIDケースを使う気にはなりません。NASの高いのを買えば良さそうな気もします。ですが、それならもう1台PC作った方が・・・と考えてしまいます。
買うとしてもこれくらいが限界な感じ。


それならばパソコンにHDDをたくさんつなげた方が便利なんじゃないか?
当然そういう考えも出てくるのでインテル ラピッド・ストレージ・テクノロジーなどを試しました。
私のパソコンはSandy Bridge世代が一番新しく、時代に取り残されつつある環境です。とはいえ普通の利用なら未だに現役バリバリでしょう。この世代で不満があるのはSATAポートが6つしかない事です。HDDをつなげようにもSATAポートの空きがない。

まぁ、4台くらいのHDDでRAIDを組む事は何とかできます。あまりHDDにお金をかけないためRAID5を組みます。

ソフトウエアRAIDを試すとその転送速度の遅さに実際の運用をあきらめる事になるでしょう。
HDDの異常を検知するためのS.M.A.R.T.情報を常に見られるのが良い点でしょうか。しかし、異常が起きたらすぐに気づけるかというとあまり良い通知機能がありません。
HDDが壊れた時の復旧の練習をすると、意外と難しい感じです。HDDが壊れた時にしかやらない操作なのに一つ間違えるとデータが一瞬で消えてしまう綱渡りです。
パソコンの調子が悪くなったら他のパソコンにHDDをつないでファイルを簡単に救出できるか?とも思ったのですが、SATAポートの数が足りず他のパソコンにつなげないとか・・・
運用もミスをする危険が増えるだけで楽になる感じがしませんし、書き込み速度の遅さをカバーするメリットが見つけられませんでした。

Creators Update で記憶域スペースが強化された

Windows 10のCrestors Updateでは見た目の進化が全く感じられませんが、見えないところで進化をしています。一般ユーザーには意味があまりないのですが。

これまでWindows Serverで使われていた記憶域スペースの機能がほぼそのままWindows 10に降りてきました。
記憶域スペースとは何か? とかの説明は他の詳しい方にお任せします。ググってください。記憶装置の仮想化と言われるやつです。
記憶装置の仮想化では記憶装置を架空の装置として見せかけます。実際のHDDは2TBしかないのに10TBあるように見せかけたり、複数のHDDを一つのドライブに見せかけたりします。実際に存在するHDDを架空の記憶装置の仕組みで覆い隠してしまいます。
RAIDと同じような仕組みでファイルのデータは架空のドライブが複数のHDDへ分散して保存します。こうすることで実際のHDDを自由に入れ替える事ができるようになります。
実際のHDDの容量より大きい容量を持っていると見せかけたり、後からHDDを増やして本当の容量を増やせます。
現状ではソフトウエアRAIDのHDDを自由に増やし交換できると思えばいいでしょう。

この機能はWindows 8のころからだんだんと強化されてきました。Creators Updateでは新しいフォーマット形式のReFSが使えるようになり、よりメリットが増えたのではないかというのでお試しで動かし始めました。

ReFS形式のメリット

今までのNTFSなどではディスク検査を行うと検査中はHDDのファイルへアクセスできませんでした。ReFSでは検査中でもファイルへアクセスできるようになっています。
大容量の記憶装置でchkdskを行うと二日以上かかる事もあるでしょう。その間、ファイルへアクセスできなくなるのでchkdskをしたくてもやらなかった・・・という事が無くなります。
ReFSでは明示的なchkdskコマンドは使えなくなりOSが自動的にやってくれるようになります。ファイルへアクセスできる状態のまま検査をしてくれます。
これがお試しする最大の理由でしょうか。

記憶域プールを作ってみる

それでは記憶域スペースの機能を使って記憶域プールを作ってみます。詳細は他のサイト様へお任せしますのでググってください。
簡単に説明します。
記憶域プールとは実際のHDDをまとめて管理する仕組みです。パソコンにつながっているHDDを一つの入れ物に入れて大きな容量の貯まり場を作ります。
記憶域は今までのパーティションやドライブと同じように見せかける機能です。見せかけなのでこのドライブの容量は好きな大きさを設定できます。実際の容量を大きく超えた数十テラバイトでもかまいません。記憶域は実際にファイルを保存する時に必要な容量を記憶域プールから使います。RAIDの様に複数のHDDへ分散して保存する設定もきます。普段いじっているプログラムから見えるのは記憶域のドライブとなります。
記憶域にファイルをどんどん保存するとそのうち記憶域プールの容量を使い切ってしまいます。その時は記憶域プールがHDDを増やすよう知らせてくれます。新しいHDDを追加すると記憶域プールの容量が増えます。
HDDの状態は記憶域プールが常に見守ってくれていると思いましょう。

記憶域プールは実際のHDDの管理をするもの、記憶域は見せかけのドライブを作るところと思えば良いでしょう。普段見えるのは記憶域だけです。

記憶域をパリティで作ってみる

記憶域スペースといっても現状できる事はRAIDとさほど変わりません。個人で3方向ミラーを使う人はいないと思いますから双方向ミラーがRAID1相当でパリティがRAID5相当です。ファイルを失わない事を優先しているのかRAID0相当は無いようです。(シンプルがRAID0相当でした。)


まずは新しいHDDをパソコンにつないでおきましょう。フォーマットはしておかない方が良いです。
ここでは3TBのHDDを3台つないで回復性の種類をパリティにして記憶域を作ってみます。

設定→システム→ストレージ と開くと"記憶域の管理"があります。クリックしてみましょう。

記憶域の管理

"新しいプールと記憶域の作成"をクリックします。
フォーマットされていないディスクがあればそれらが表示され記憶域プールに使うHDDを選択します。

記憶域プールのドライブ選択

フォーマットしてあっても選択できますが消してはいけないHDDを選んでしまう可能性があり危険です。この作業は慎重に行いましょう。何度も確認しましょう。

使うHDDを選択したら"プールの作成"をクリックします。

次は記憶域の設定になります。
記憶域の名前、使うファイルシステム、回復性の種類、サイズ(容量)を設定する画面が表示されます。

記憶域パリティの作成

ここではファイルシステムにReFSを選択します。サイズは適当に32TBとしました。
これで設定する項目は以上です。値を確認したら"記憶域の作成"をクリックします。
するとHDDのフォーマットと記憶域が作成されます。

記憶域のフォーマット

エラーが出たら・・・

ここでエラーが出てフォーマットができない場合が多くあるようです。
私の場合はSATAコントローラが原因と思われる症状がありました。
JMicronのSATAコントローラでは記憶域プールを作ることができない

このためチップセットのSATAポートにHDDをつなぎ直しました。HDDを内蔵するついでにパソコンの中の大掃除も・・・
さぁインテルのインターフェースなら安心・・・とはいかない場合もあるようです。
例えばBIOSでSATAのモードをRAIDにしていると不具合が出るようです。AHCIにする必要があるようです。

記憶域スペースができた

無事に記憶域スペースができるとこんな表示になります。

記憶域パリティ

パリティのベンチマークを見てみる

チップセットはSandy Bridge世代のZ68です。チップセットのSATA 3Gb/sのポートにHDDをつないでいます。
HDD単体のベンチは省略させていただきます。

それでは記憶域パリティでの結果がこちら

記憶域パリティのベンチマーク

シーケンシャルリードは3台並列になるので単体より早くなります。2倍強から3倍弱になるはずです。シーケンシャルライトはパリティの計算や保存場所の決定など処理が複雑な分遅くなります。ランダムリード/ライトは悲惨です。SSDに慣れるとイライラしてしまいます。

んー?シーケンシャルライトが思ったよりいい値です。テスト容量が1GiBで少ないから?というわけではないようでした。
これなら使ってられるかな? と少し期待したのですが実際にファイルコピーをすると20MB/sほどしか出ません。

少し大量のファイルをコピーして書き込んだ様子がこちらです。

記憶域パリティへの書き込み

初めのうちは100MB/sでコピーが進みます。おや?と思っているとそのうち20MB/sほどへ落ちます。その後はずーっと20MB/sです。これが本当の速度ですね。
なんで最初は速いのかというと、メインメモリでキャッシュしてくれます。


メインメモリーは16GB積んでいます。この時は1.7GBほどキャッシュに割り当てられました。1.7GBを貯め込むまではリードの最大速度でコピーが進むように見えます。
いつもメモリーを持て余してるのでもっとキャッシュに使ってくれてもいいのになぁ。

パリティで転送速度を簡単に見てみましたが、やはり書き込み速度が遅いのが気になります。最初にデータを移す時、エラーが生じて修復する時などは多くの時間が必要になります。
しかし、アーカイブとして一度書き込み終われば読み出しは速いです。それにキャッシュのおかげで少々のファイル移動なら全くストレス無く使える事がわかります。

双方向ミラーも作ってみる

一つの記憶域で運用するとRAIDとあまり変わりなく、記憶域プールを使うよりRAID専用のマシンを使った方が便利なんじゃないか? と、一番最初に戻ってしまいます。
記憶域スペースの便利さを実感するにはもう一つ記憶域を作ると良いかもしれません。

普通にRAIDを組む場合、RAID5で組んだけど書き込みが遅くて嫌だなぁ・・・でもRAID1をもう一つ組むお金は出せないよなぁ・・・なんて思う場合があるでしょう。

記憶域スペースを使うならソフトウエアに任せきるつもりで使うと便利さが出てきます。
先ほどパリティで記憶域を作りましたが、同時に双方向ミラーでも記憶域を作ってみましょう。
SATAポートの空きがもうないのでもう一つ記憶域プールを作る事もできません。記憶域プールは共用です。実際のHDDは今のまま、見かけのドライブである記憶域を2種類作るのです。

記憶域の管理画面をもう一度開きます。そして記憶域の作成をクリックします。


記憶域プールは既にできているので記憶域だけを双方向ミラーで作ります。

記憶域双方向ミラーの作成

容量を遠慮気味に1TBで作ります。もちろん好きな容量でかまいません。

記憶域スペースのパリティと双方向ミラー

出来上がると上のようにパリティと双方向ミラーの2つの記憶域が出来上がります。
これでRAID5相当のドライブとRAID1相当のドライブが使える事になります。

双方向ミラーのベンチマークを見てみる

それではベンチマークを見てみましょう。

記憶域双方向ミラーのベンチマーク

最近の大容量HDDを見てると少し遅く感じます。でも普通に使える速度が出ています。
ビデオ編集など大きなファイルの一時保管・作業場所などに使うと良いでしょう。

あとがき

お試しとしてWindows 10の記憶域スペースを使ってみました。
安いRAIDケースを使っているとHDDの健康状態がわからず不安になる事が多いです。記憶域スペースを使えばローカルにHDDをつないでいるのでいつでもHDDの状態をチェックできます。
新しいReFSファイルシステムを使えば自動的に整合性チェックもしてくれます。

今回使ったHDDは新品ではなくRAIDケースで使っていた物です。S.M.A.R.T.情報でC6や05の数値が出てきたので交換しました。RAIDケースでは悪化に気づかないので使えません。とはいえ完全に壊れたわけでもないので捨てるのはもったいない。使い道に困っていたものです。

記憶域スペースのデメリットとしてはパリティを使うと書き込み速度がとても遅くなる事です。また、SATAポートをたくさん使うためマザーボードによってはSATAホスト・バス・アダプタ(HBA)が必要になります。HBAは高価です。
安く済ますにはポートマルチプライヤでHDDを増設する事も考えられます。HDD程度の速度ならポートマルチプライヤを使っても実用的な速度は出ると思います。

今回はパリティと双方向ミラーの2種類の記憶域を一つの記憶域プールに作ってみました。HDDの容量をできるだけ多く使うストレージと高速アクセスを必要とする作業用スペースをある程度両立できます。これは普通のRAIDではできない大変便利な使い方だと思います。
HDDを大量に買わない貧乏な運用にはいいかも!

今回3台のHDDをつなぎました。3台同時に使うパリティと2台だけ同時の双方向ミラーが同居しているのでHDDの実際の使用量がちぐはぐになってしまうかもしれません。
あるいは後でより大容量なHDDを追加したとしても個々のHDDの容量を適切に再分配できるのか不安があります。
記憶域を検索すると列数とHDDの数を同じにした方が良いと書かれていたりします。それを気にしすぎるとただのRAIDになってしまい記憶域スペースのメリットが無くなってしまうと私は思います。気にせずプールにHDDを放り込んでいけば良いと思います。
試しに2TBのHDDを4台でパリティ記憶域を作り様子を見ると、3台づつ適当に交互に選んで書き込んでいるようです。列数が違うと少し使える容量が減ってしまいますけど。

ソフトウエアによる記憶域スペースの良い所はその仕組みが改善されていく事です。記憶域プールがもっと賢くなれば・・・まぁ、期待が実現する事は少ないですけど期待しておきましょう。

Windows 10はちょくちょく大きなアップデートが出てきて面倒くさいOSになってしまいました。使い慣れたと思ったら変わっちゃったり・・・仕事をさせまいとしているのか?というほどにUpadateの時間がかかったり・・・
ですが、いままでサーバーで使われていた技術が少しづつクライアント側に降りてきています。気づかない所で面白く変わっています。Bash on Ubuntu on Windows等もそうです。
ほとんど一般ユーザーに関係ない所が問題ですけどね。

コメント

最近のコメント

Threaded Recent Comments will be here.