Windows11で記憶域プールに再挑戦

始めに

ファイルサーバーをWindows 11 Pro 25H2 に移行したことにより、ストレージ構成を記憶域プールとReFSとSATA SSDを使って、高速且つ安全に運用する事にしました。

SATA SSDはストレージとして使うよりも記憶域プールでジャーナルで使う事により、ライトバックキャッシュとしてHDDへの書き込みのバッファにすることで、ファイルの書き込み速度を向上できることは分かっていました。ただ、かつて挑戦したときはWindowsクライアントOSでの構成の仕方が分かりづらかった事もあって断念していました。AIの普及により手順の確認が容易になったことで、改めて記憶域プールにジャーナルとして組み込むことにしました。

HDDは3TBが2台、4TBが2台ですが、これを一つのプールに入れて、ミラーで構成することで連続した一つのドライブとして利用できます。

さらにReFS(開発者ドライブ)を使うことにより、ビット欠損を防ぐことが可能になり、安全性の高いバックアップとなります。

また、メインPC(AI画像生成)、サブPC1(AI画像拡大)と計算力が分散しているので、それらの作業をファイルサーバーで仲介し、共有フォルダをネットワークドライブを割り当てた方がストレージ資産の統合と管理コストの削減が図れます。

ただしメインPC上のデータを正、ファイルサーバー上のバックアップデータを副として管理します。

ハードウェア構成

ItemDiscrption
OSWindows11 Pro 25H2
CPUAMD Ryzen 7 3700X
M/BASUS ROG STRIX X570-F GAMING (AMD X570)
RAMG.SKILL F4-3600C18D-16GTZN 16GB x2 (DDR4-3600CL18 8GB*4)
GPUGigabyteGV-N1050OC-4GL (GeForce GTX 1050Ti 4GB)
NVMeWD BLACK SN750 250GB (WDS250G3X0C-EC)
SATA SSDWD BLUE 1TB
SATA SSDWD BLUE 1TB
HDD東芝 3.5" HDD 4TB(CMR) (MN08ADA400E /JP)
HDD東芝 3.5" HDD 4TB(CMR) (MN08ADA400E /JP)
HDD東芝 3.5" HDD 3TB (DT01ACA300)
HDD東芝 3.5" HDD 3TB (DT01ACA300)
NIC2RealTek PCIe 2.5GbE

記憶域プールの構築

以下の作業を「ターミナル(管理者)」(PowerShell)で行います。

  1. 全ディスクを変数に格納

    まず、プールに含める全てのディスク(HDD 4本、SSD 2本)を一括で取得します。

    $allDisks = Get-PhysicalDisk -CanPool $true
    
  2. ストレージプールの作成

    New-StoragePool -FriendlyName "ArchiveMaster" `
                    -StorageSubsystemFriendlyName "Windows Storage*" `
                    -PhysicalDisks $allDisks
    
  3. SSD 2本を「Journal(キャッシュ用)」に指定

    これにより、Windowsは2本のSSDをペアとして扱い、キャッシュ自体のミラーリング(冗長化)を自動で行います。

    Get-StoragePool -FriendlyName "ArchiveMaster" | Get-PhysicalDisk | Where-Object { $_.MediaType -eq "SSD" } | Set-PhysicalDisk -Usage Journal
    
  4. 仮想ディスクの作成(ミラー + 128GBキャッシュ)

    ここで -NumberOfColumns 2 を指定するのがミソです。3TB×2と4TB×2の合計4本のHDDを「2列のミラー」として効率よく配置します。

    New-VirtualDisk -StoragePoolFriendlyName "ArchiveMaster" `
                -FriendlyName "Archive_Volume" `
                -ResiliencySettingName Mirror `
                -NumberOfDataCopies 2 `
                -NumberOfColumns 2 `
                -ProvisioningType Fixed `
                -WriteCacheSize 128GB `
                -UseMaximumSize
    
  5. 開発者ドライブの設定

    「設定」→「システム」→「ストレージ」→「ストレージの詳細設定」→「ディスクとボリューム」に進み、追加された「記憶域プール」を選択し、「GPT」に設定します。次に開発者ドライブを作成します。

  6. ReFSの「整合性」を有効にする

    # Dドライブ(または割り当てた文字)の整合性ストリームを有効化
    Set-FileIntegrity D: -Enable $True
    

終わりに

記憶域プールにジャーナルを設定する場合には、SATA SSDが2台必要になります。これはかなり古い資料で見た覚えがあるのですが、SATA SSDも記憶域プールの安全性を考慮してミラーリングを必須として設計していたはずです。エンタープライズ向けに記憶域プールが設計されているため、書き込み量が多くSSDの消耗が早くなることを考慮していたと思います。

連続した大量書き込みではキャッシュをすぐに使い切り、結局はHDDの素の速度が記憶域の速度に一番影響がありますが、キャッシュに収まるような書き込みにはジャーナルがよく利きます。