Windows 8.1でPowerShellを使った記憶域の作成

Windows 8の新機能の1つであった記憶域プールですが、いろいろあって作り直しました。

今回作成する記憶域プールは以下の通りです。
※2個の記憶域プールを作成します。

記憶域プール
(FriendlyName)
ローカルディスク 外付けディスク
PhysicalDisk PhysicalDisk1
PhysicalDisk2
PhysicalDisk3
PhysicalDisk4
PhysicalDisk6
PhysicalDisk7
PhysicalDisk8
PhysicalDisk9
記憶域スペース
(FriendlyName)
データ用ディスク 共有用ディスク
PhysicalDisk PhysicalDisk1
PhysicalDisk2
PhysicalDisk3
PhysicalDisk4
PhysicalDisk6
PhysicalDisk7
PhysicalDisk8
PhysicalDisk9
回復性
(ResiliencySettingName)
パリティ パリティ
列数
(numberofcolumns)
4 4
データコピー
(numberofdatacopies)
1 1
サイズ UseMaximumSize UseMaximumSize
ボリュームラベル Data ServerShared
ドライブレター D G
ファイルシステム NTFS NTFS
ディスク情報 Microsoft Storage Space Device
Disk Number 10
Microsoft Storage Space Device
Disk Number 12

内臓HDDと外付けHDDとで別々に記憶域プールを作成し、外付けHDD(5ドライブケース)を別PCへそのまま接続して利用することを想定しています。


以下、記憶域プール「ローカルディスク」の作成手順です。
 

準備

作業PCで記憶域プールに追加するディスクを接続した状態にします。
※ボリュームを作成した状態のディスクの場合、容量が同じサイズのディスク間では見分けがつかないなどで誤って使用中のディスクを初期化してしまう可能性があるので作業前にはボリュームを削除した状態にするのがお勧めです。
 

GUI画面で確認した例

記憶域管理画面で確認すると、ボリュームが作成されていないドライブは「未フォーマトドライブ」に、ボリュームが作成されたドライブは「フォーマット済みドライブ」に分類されて表示されます。
このとき、フォーマット済みドライブに分類されているドライブには、すでに使用しているドライブも含まれています。

未フォーマットドライブ

たとえば、フォーマット済みドライブに分類されている「I-O DATA RHDM-U US...」(ディスク5)というドライブは、USBドライブですでにWindows8.1のバックアップイメージ保存用に利用しているドライブです。
このドライブは、未フォーマットドライブに分類されている「Hitachi HDP725050GL...」(ディスク1~4)と容量が全く同じため、PowerShellで表示すると区別がつかなくなります。
ミスをしないように記憶域プールに登録するドライブは慎重に確認してボリュームを削除した状態にしてから作業することをお勧めします。

フォーマット済みドライブ

 

作業手順

PowerShellを起動

PowerShellを管理者として実行します。
 

使用可能な物理ディスクの確認

次の例では、CanPoolがTrueの物理ディスクの一覧を表示しています。

 PS C:\Windows\system32> Get-StoragePool -IsPrimordial $true | Get-PhysicalDisk | Where-Object CanPool -eq $True
 
FriendlyName        CanPool             OperationalStatus   HealthStatus        Usage                              Size
------------        -------             -----------------   ------------        -----                              ----
PhysicalDisk3       True                OK                  Healthy             Auto-Select                      465 GB
PhysicalDisk2       True                OK                  Healthy             Auto-Select                      465 GB
PhysicalDisk4       True                OK                  Healthy             Auto-Select                      465 GB
PhysicalDisk1       True                OK                  Healthy             Auto-Select                      465 GB

※CanPoolがTrueのドライブは、GUI画面で未フォーマットドライブに分類されているドライブと同じはずです。
 

記憶域プールの作成

次の例では、新しい記憶域プール「ローカルディスク」を作成します。作成にはすべての使用可能な物理ディスク(CanPool=True)を使用しています。

 PS C:\Windows\system32>  New-StoragePool –FriendlyName "ローカルディスク" –StorageSubsystemFriendlyName “Storage Spaces*” –PhysicalDisks (Get-PhysicalDisk –CanPool $True)

FriendlyName            OperationalStatus       HealthStatus            IsPrimordial            IsReadOnly
------------            -----------------       ------------            ------------            ----------
ローカルディスク        OK                      Healthy                 False                   False



使用するディスクを1個ずつ指定する場合は以下のようになります。

 PS C:\Windows\system32> New-StoragePool –FriendlyName "ローカルディスク" –StorageSubsystemFriendlyName “Storage Spaces*” –PhysicalDisks (Get-PhysicalDisk PhysicalDisk1, PhysicalDisk2, PhysicalDisk3, PhysicalDisk4)
 

 

仮想ディスクの作成

次の例では、「ローカルディスク」という記憶域プールに「データ用ディスク」というパリティ構成の仮想ディスクを作成します。このディスクは、記憶域プールの最大記憶域容量を使用します。プロビショニングタイプは固定です。

PS C:\Windows\system32> New-VirtualDisk –StoragePoolFriendlyName "ローカルディスク" –FriendlyName "データ用ディスク" –ProvisioningType fixed -ResiliencySettingName parity –UseMaximumSize

FriendlyName        ResiliencySettingNa OperationalStatus   HealthStatus        IsManualAttach                     Size
                    me
------------        ------------------- -----------------   ------------        --------------                     ----
データ用ディスク    Parity              OK                  Healthy             False                           1.36 TB

 

仮想ディスクの確認

以下の例では、仮想ディスクのフレンドリー名、回復性、列数、コピー数とサイズを表示しています。

PS C:\Windows\system32> get-virtualdisk | ft friendlyname,resiliencysettingname,numberofcolumns,numberofdatacopies,@{expression={$_.size/1TB};Label=”Size(TB)”}

friendlyname            resiliencysettingname           numberofcolumns      numberofdatacopies                Size(TB)
------------            ---------------------           ---------------      ------------------                --------
データ用ディスク        Parity                                        4                       1                1.359375

 

ボリュームの作成

次の例は、仮想ディスク「データ用ディスク」 のディスクを初期化し、ドライブ文字Dを割り当てたパーティションを作成し、既定の NTFS ファイル システムを使用してボリュームをフォーマットします。

PS C:\Windows\system32> Get-VirtualDisk –FriendlyName "データ用ディスク" | Get-Disk | Initialize-Disk –Passthru | New-Partition -DriveLetter D –UseMaximumSize | Format-Volume 

確認
この操作を実行しますか?
Warning, all data on the volume will be lost!
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): y

DriveLetter       FileSystemLabel  FileSystem       DriveType        HealthStatus        SizeRemaining             Size
-----------       ---------------  ----------       ---------        ------------        -------------             ----
D                                  NTFS             Fixed            Healthy                   1.36 TB          1.36 TB

※自動でドライブレターを割り振るには「-DriveLetter D」の箇所を「–AssignDriveLetter」に変更します。
※Windows8.1では回復性で双方向ミラーの場合のみreFSファイルシステムを使用可能です。
 

ボリュームラベルの変更

次の例は、ドライブレターDのボリュームラベルを「Data」に設定します。

PS C:\Windows\system32> Set-Volume -DriveLetter D -NewFileSystemLabel "Data"


以上で記憶域プールで構成したドライブを使用可能になります。
今回は2つの記憶域プールを作成しますので、上記手順を2回実施しました。

完成した状態は以下の通りです。
ローカルディスク


外付けディスク

PCから外付けHDDケースを外した場合
ローカルディスクのみ


回復性のエラーなどもでず、期待通りうまくいきました。
 

感想

そもそも記憶域プールは1つの大きなストレージBOXを作るものなので、私の用途では記憶域プールの中に仮想ディスクを2個つくると悲惨な結果になるのは当然でした。
最初から今回のように記憶域プールを2つ作成しておけばよかっただけです。
Windows8とWindows8.1とでは少し仕様も変更されているようで、Windows8では3までしか設定されなかった列数は指定しなくてもディスクの数になっていました。

記憶域プールの容量に対して仮想ディスクで実際に使用可能なディスクサイズが不明であったため、–UseMaximumSizeを使用して作成しました。
シンプロビショニングタイプの場合は可変なのであまり気にすることはないのかもしれません。
プロビショニングタイプを固定にすると記憶域管理画面で使用率がほぼ100%に表示されるのは仕様なのかは不明です。

今回はシングルパリティ構成なので3台以上のドライブが必要になります。また、1台までのドライブの故障に対しては修復可能です。
パリティを書き込むための分、ミラーよりもディスクアクセスは遅くなると思いますが、利用可能サイズは大きくなります。
このあたりの選択は用途次第だと思います。