hiroの長い冒険日記

主にコンピュータ周辺の興味を持った内容を綴ります

Windows11 で記憶域を使用してみた

当日記ではアフィリエイト広告を利用しています

Synology DS218+ の HDD を 4TB から 8TB に更新し、外付 USB に接続していた物を含めて 3台の SATA HDD 4TB が空く事になりました。3年間連続稼働させていた事もあり信頼性は少し落ちている可能性がありますが、高負荷テストを実施して問題なければ、故障しても大丈夫な用途で余生を過ごさせたいと考えています。その第一弾として、折角3台の HDD がありますので、Windows11 の記憶域 (Software RAID 相当の機能) を使用して、読み書きの速度がどの位になるか試してみました。


2023年12月 追記:
長い長い冒険日記の方で、4TB 3台で Linux のディスクのアクセス速度について調べています。
新しい記事が公開されたら追記します。

hiro20180901.com
hiro20180901.com
hiro20180901.com
hiro20180901.com
hiro20180901.com

追記終わり

外したHDD の高負荷書込テスト

Synology DS218+ に取り付けて約3年間連続稼働させていた HDD ですので、念のため S.M.A.R.T. テストと高負荷書込テストを実施しました。

Western Digital Dashboard

WD Red 4TB WD40EFRX-68N32N0 の 2台の HDD には Western Digital Dashboard を使用しました。
support.wdc.com

Western Digital Dashboard を起動して右上の「デバイスを選択」から該当の HDD を選択します。Western Digial や SanDiskHGST 製の HDD / SSD が選択できます。他メーカーの HDD は選択できません。「ドライブの健全性」が緑の中央付近になっているのは、稼働時間がそれなりに長い為でしょう。

「ツール」の中に診断テストの項目があります。左側の「ドライブユーティリティ」の中の「S.M.A.R.T.」を選択します。

「S.M.A.R.T.診断ショートテスト」「S.M.A.R.T.診断拡張テスト」の二種類があります。一度 Offline にした為に画面では最後の実行が「なし」になっています。拡張テストは長時間を要しますので、別の作業の合間に実行しておきました。

S.M.A.R.T.診断テストで問題がなかった場合には「ドライブユーティリティー」の「ドライブの消去」で全データを消去します。

「完全上書き」の「今すぐ消去」を選択すると、HDD の Sector 単位で全ての領域を上書きしますので、書込負荷の高い状態が維持できます。長時間を要しますが、これで error が発生しなければ、通常使用には問題ないと考えられます。

今回は、

  • S.M.A.R.T.診断ショートテスト
  • S.M.A.R.T.診断拡張テスト
  • ドライブの完全上書きによる消去

の3項目を 2台の HDD に対して実施しました。

Seatools for Windows

Seagate IronWolf 4TB ST4000VN008 の HDD には Seatools for Windows を使用しました。

www.seagate.com

Seatools for WindowsSeagate 以外の HDD/SSD のテストも実行できます。今回は Seagate IronWolf のみ実行しました。(Serial No. 表示は消しています)

Basic テスト :

4種類のテストがあります。ロングリードテストは長時間を要します。

アドバンスドテストを選択して出てくる画面で F8 キーを押すと「高級テスト」メニューが表示されます。「高級テスト」メニューの「Overwrite Erase」を選択すると上書き消去を実行します。長時間の書き込み負荷の高い状態を維持できます。

今回は、

  • S.M.A.R.T. チェック
  • ショートセルフテスト
  • ショートリードテスト
  • ロングリードテスト
  • 高級テスト -> Overwrite Erase による全消去

の5項目を実施しました。

テスト結果

3台ともエラーは発生しませんでしたので、問題なく継続して使用できる状態です。これで安心して使用する事ができます。

Windows11 記憶域とは

Windows11 の Software RAID に相当する機能は「記憶域」と呼ばれています。Windows8 で追加された機能で、Windows10 / Windows11 や Windows Server でも使用することが出来ます。というより Windows Server の機能が Windows8 / 10 / 11 に降りてきた、という方が正解かもしれません。

support.microsoft.com

直訳らしき文章で意味が分かりにくいですが、

  • HDD や SSD (USB接続含む) を追加して一纏めにする機能が記憶域プール
  • 記憶域プールから用途に応じた形式と容量で記憶域を確保
  • シンプルであれば大容量の領域が確保でき、ミラーとパリティであれば耐障害性が向上する
  • 記憶域プールの容量以上の領域を記憶域として確保しておいて、後で追加する事も可能

といった形で柔軟性のある Strage を用意できるというのが記憶域になります。

また、耐障害性は落ちますが、

  • 容量の小さい HDD / SSD を一纏めにして大きな容量で使う
  • HDD を新しく追加して記憶域の容量を増やす

といった使い方も可能です。

記憶域の容量は増やす方向であれば変更できます。別の PC に記憶域プールを構成する HDD 等を移した場合でも、そのまま認識できるとの事です。

一つ残念なのは、起動ドライブに設定できないことです。あくまでもデータ用にしか使用できません。

Windows11 記憶域の作成方法 【GUI編】

Windows11 では GUI の設定画面で記憶域プールと記憶域を作成します。コントロールパネル -> システムとセキュリティ -> 記憶域の管理にあります。または、スタートメニューから「記憶域」と入力すれば「記憶域の管理」が見つかります。

「新しいプールと記憶域の作成」をクリックします。

ドライブの選択画面が出ますので、記憶域プールに組み込む HDD / SSD を選択して「プールの作成」を押します。上の図では3台の HDD を記憶域プールに追加しています。記憶域プールに組み込んだ時点で HDD / SSD のデータは全て消去されますので注意が必要です。

ここで、「プールを作成できません」というエラーが出る事があります。

エラーコードの 0x00000032 で調べると次のページが見つかりました。
vorfee.hatenablog.jp
Device Manager で該当 HDD を一旦 OFF にして ON にするとエラーが解消できました。

記憶域プールが作成できたら記憶域の作成画面になります。

この画面が出た時点で、選択した HDD / SSD を使用した「記憶域プール」が既に作成されています。この画面をキャンセルして「記憶域の管理」に戻ると次の画面になります。

選択した 3台の HDD で記憶域プールが作成されています。

この時点では記憶域が作成されていませんので、「記憶域の作成」で実際に使用する記憶域を作成します。

名前とドライブ文字、ファイルシステムは適宜入力・選択します。

回復性の種類は

回復性の種類 内容
シンプル (回復性なし) Spanning (Striping : RAID0ではない)
双方向ミラー Mirror (RAID1相当)
3方向ミラー 5台の HDD に3つのコピーを保存
パリティ Parityあり (RAID5相当)

の4種類あります。

シンプルは RAID0 相当かと思いましたが、GUI で作成した場合は Spanning (JBOD) でした。Striping (RAID0相当) で作成する方法については後述します。

3方向ミラーはあまり聞いたことの無い考え方でしたが、以下のページに理由が書かれていました。正常な HDD の個数が異常な HDD の個数を上回らなければならない、という考えが基本にあるようです。3台の場合には1台の故障にも耐えられる = Mirror と変わらない、という事で、5台が必須となっているようです。
satsumahomeserver.com

サイズは必要な容量を指定します。

双方向ミラーで 1TB を作成する場合には、下記のように設定します。

これで「作成」を押せば記憶域が作成されます。


Windows11 記憶域の作成方法 【PowerShell編】

前述した通り、GUI の「記憶域の管理」で記憶域シンプルを作成した場合には Spanning (JBOD) になります。耐障害性を犠牲にしても得られるのは容量だけ…というのではもったいないので、Striping (RAID0) 相当の記憶域を作成できるかどうか調べてみた所、以下のページを見つけました。
高速化その1 :
monomake.hatenablog.com
高速化その2 :
mtkdt.blog.fc2.com

PowerShell で記憶域を作成すれば、Striping の状態になるようです。

GUI で記憶域プールまで作成してから、PowerShell でシンプル領域を作成します。
管理者権限の PowerShell :

PS> New-VirtualDisk -FriendlyName WORK -StoragePoolFriendlyName "記憶域プール" -ResiliencySettingName Simple -ProvisioningType Thin -Size 1TB -NumberOfColumns 3

FriendlyName ResiliencySettingName FaultDomainRedundancy OperationalStatus HealthStatus Size FootprintOnPool StorageEff
                                                                                                                iciency
------------ --------------------- --------------------- ----------------- ------------ ---- --------------- ----------
WORK         Simple                0                     OK                Healthy      1 TB          768 MB    100.00%

3台の HDD で 1TB の領域 WORK を記憶域シンプルで作成すると、3台の HDD の Striping となります。最後の '-NumberOfColumns' を 2 とすれば、2台の HDD で Striping となります。

現状では GUI はオマケ程度で、記憶域プールや記憶域は PowerShell で作成するべきなのでしょうね。今回は深追いしませんが、PowerShell を使用すれば、記憶域プールや記憶域の細かな調整が可能なようです。

New-VirtualDisk help (英語) :
docs.microsoft.com

記憶域の速度比較

Windows11 で作成する事のできる記憶域について、速度を比較してみました。比較対象は以下の項目です。

  1. HDD WD Red 4TB WD40EFRX-68N32N0
  2. 記憶域シンプル GUI 作成 2台
  3. 記憶域シンプル PowerShell 作成 2台
  4. 記憶域シンプル PowerShell 作成 3台
  5. 記憶域双方向ミラー GUI 作成 2台
  6. 記憶域パリティ GUI 作成 3台

読み書き速度の測定には、

  • Crystal Disk Mark 8.0.4 (以下 CDM と略称)
  • 25 GB のフォルダ、及びこのフォルダを圧縮した単一のファイルの copy

を使用しました。フォルダ内のファイルは ISO image や download した install 用実行ファイルが入っていて、比較的大きなファイルが多い状態です。

Crystal Disk Mark の結果

測定は 1GiB 〜 64GiB まで行いましたが、傾向は変わらないので 64 GiB の結果のみ示します。先頭に 'R_' の付いたものが読み込み、'W_' の付いたものが書き込みの結果になります。

Sequential Read / Write

初めに Sequential Read / Write です。

HDD 単体の WD40EFRX-68N32N0 の結果を基準にすると、

  • GUI作成の記憶域シンプルは HDD 単体とほぼ変わらない結果でした。Striping (RAID0) ではなく Spanning (JBOD) であれば、効率的な read は行わないので当然の結果になります。
  • PowerShell 作成の記憶域シンプルは、2台 -> 3台と台数が増えるに従って、2倍 -> 3倍の速度となりました。Striping (RAID0) の効果がはっきりと表れています。特に、3台の場合は SATA の転送速度の 550 MB/sec に達する程であり、耐障害性に劣るとはいえ使い道がありそうです。
  • GUI作成の記憶域双方向ミラーは HDD 単体とほぼ変わらない結果でした。こちらも Mirror (RAID1) であれば当然の結果かと思います。
  • GUI作成の記憶域パリティは、read は HDD 単体と同等~若干速く、write は半分~1/3程度の速度でした。記憶域パリティに書き込む際には parity の計算と Random Access に近い書き込みが発生するので、速度が落ちるのも致し方ないと思います。

以上をまとめると、

  • 耐障害性には目をつぶって高速な Sequential Access が必要な用途には、RAID0 相当の PowerShell 作成の記憶域シンプル、特に3台の HDD を使用したもの
  • 耐障害性を考慮した上で使用するのであれば、汎用的には記憶域双方向ミラーを、書き込みの遅さにはガマンして読み込みの速さと容量の効率的な使用を考えるのであれば記憶域パリティ

といった使い方になるかと思います。

Random Read / Write

次に Random Read / Write です。元々 HDD は Random Access を苦手としていますので、Random Access の速さを要求するのであれば SATA SSD や NVMe M.2 SSD を選択するべきです。Random Q1T1 について、手元の SATA SSD では Read / Write = 33.58 / 94.88 MB/sec、NVMe M.2 SSD では Read / Write = 72.30 / 196.00 MB/sec ですので比較になりません。それでも、容量当たりの単価を考えて HDD を利用する状況を考えてみます。

HDD 単体の WD40EFRX-68N32N0 の結果を基準にすると、

  • read に関しては、記憶域パリティが最も速い結果となりました。write の際には parity の計算と書き込みの影響により速度の低下が目立ちますが、read の際には3台に分散された効果が強く表れています。
  • 記憶域シンプル3種類については、read も write も、HDD 単体と同等か向上しています。複数の HDD に分散している効果が出ています。
  • 記憶域双方向ミラーの read は速いですが、write は HDD 単体と同等か若干落ちる結果でした。

以上をまとめると、

  • Random Read を優先するのであれば記憶域パリティ
  • Random Write は耐障害性を考慮しないのであれば記憶域シンプル、耐障害性を向上させたい場合には記憶域双方向ミラー

といった使い方になるかと思います。

ファイル及びフォルダのコピーの結果

実際のファイルやフォルダのコピーについても調べてみました。NVMe M.2 SSD を相手に read / write した際の速度を比較したのが次のグラフになります。

概ね Sequential Read / Write の結果と同じです。フォルダのコピーについては write の速度が下がっていますが、これは HDD 単体の場合も下がっていますので Random Access に近い状態が発生して速度低下が発生していると考えられます。

まとめ

Windows8 以降で対応している記憶域プールと記憶域を Windows11 で使用してみました。Software RAID に相当する機能で、RAID0 / RAID1 / RAID5 と同等の記憶媒体を構成できます。

HDD を3台使用した記憶域シンプルは、PowerShell で作成する必要はありますし耐障害性は落ちますが、SATA の限界である 550 MB/sec の Sequential Read / Write を実現できます。もちろん NVMe M.2 SSD には敵いませんし Random Access は遅いですが、4 TB 以上の容量をそれなりの速度と価格で準備できるというのは魅力的です。

記憶域の双方向ミラーとパリティは、別のハードウェアを使用せずに Windows の機能だけで耐障害性を担保できる有用な機能です。記憶域パリティは Write の速度が極端に落ちますが、Read は HDD 単体と同等か少し速いので、3台の HDD を準備できるのであれば記憶域パリティを選ぶのが良いかと思います。

また、USB 接続でも記憶域を作成できるというのは意外に便利かもしれません。安価な外付 USB 接続の HDD を複数台接続して、故障したら記憶域プールから外して新しい HDD を接続して復旧させる、という事を、PC の電源を切らずに行う事ができます。

Windows11 の Software RAID を探していて見つけた記憶域の機能ですが、当初考えていたよりも有用で使いやすい機能でした。4TB HDD 3台はこの後も色々と試行するのに使用しますので継続して記憶域は使用しませんが、最終的な使用方法の候補として、使い方を記録として残しておきます。