2014/07/29

PowerShell を使って記憶域プール(パリティ+NTFS)を再構築してみた

個人用メモ。
記憶域プールは複数の物理ディスクを単一の仮想ディスクにするテクノロジーです。
今回は、Windows Server 2012 R2 Essentials の記憶域プールをPowerShellから再構成した際に使用したコマンドレットをメモします。

再構築した環境と設定

  • 記憶域プールは、2TBの物理ディスク 3本を使用する
  • データ保護は、パリティ(Parity)を選択する
  • ファイル システムは、NTFSでフォーマットする
    Windows Azure Backup を利用するためです
image

記憶域プールの再構築手順

私が行った再構築手順になります。
データを退避する
記憶域プール上の全データを退避ディスクへ移動させます。
RoboCopy コマンドや、Windows Server 2012 R2 Essentialsの[サーバー フォルダーの移動]機能を使いました。
ボリュームを削除する
  1. パーティションを削除
    > Remove-Partition -DriveLetter D
  2. 確認
    > Get-Partition
記憶域スペースを削除する
  1. 記憶域スペースを削除
    > Remove-VirtualDisk -FriendlyName "VirtualDisk"
  2. 確認
    > Get-VirtualDisk
記憶域プールを削除する
  1. 記憶域プールを削除
    > Remove-StoragePool -FriendlyName “StoragePool”
  2. 確認
    > Get-StoragePool
記憶域プール削除後のHDDリセット
不要な操作かもしれませんが、念のため。
  1. リセット
    > Reset-PhysicalDisk -FriendlyName PhysicalDisk1, PhysicalDisk2, PhysicalDisk3, PhysicalDisk6
記憶域プールを作成する
  1. プール可能な物理ディスクを確認
    > Get-PhysicalDisk -CanPool $True | Sort FriendlyName | ft FriendlyName, CanPool, Size -AutoSize
  2. StorageSubSystemのFriendlyNameをメモ
    > Get-StorageSubSystem
  3. 物理ディスクを変数に格納
    > $PhysicalDisks = Get-PhysicalDisk -FriendlyName PhysicalDisk1,PhysicalDisk2,PhysicalDisk3
  4. 記憶域プールを作成
    > New-StoragePool -StorageSubSystemFriendlyName "Storage Spaces on nasunoserver" -FriendlyName "StoragePool" -PhysicalDisks $PhysicalDisks
メディアタイプを指定する
  1. 対象可能な物理ストレージのMediaTypeを手動で設定
    > Set-PhysicalDisk -FriendlyName PhysicalDiskX -MediaType HDD
    ※複数本ある場合は、複数回指定。メディアタイプはHDD/SSDがあるので注意。
    imageimage
  2. 5の設定結果を確認
    > Get-StoragePool -FriendlyName "StoragePool" | Get-PhysicalDisk | Sort FriendlyName | Format-Table FriendlyName, Size, MediaType -AutoSize
3番で全物理ディスクを追加したい場合は、下記のようになります。
> $PhysicalDisks = Get-PhysicalDisk -CanPool $True
話が少し逸れます。
SSDを使った記憶域階層を作成する場合は、この操作をした方が良いです。
特にGUIから設定する場合、SSDにメディアタイプが指定されていないと「この仮想ディスクに記憶域階層を作成する(C)」のチェックが出来ませんでした。
仮想ディスクを作成
仮想ディスクの作成はいくつかのパラメータを指定できます。
シンプロビジョニングを使う場合
> New-VirtualDisk -StoragePoolFriendlyName "StoragePool" -FriendlyName "VirtualDisk" -ProvisioningType Thin -Size 10TB  -NumberOfColumns 3 -ResiliencySettingName parity
固定の場合
> New-VirtualDisk -StoragePoolFriendlyName "StoragePool" -FriendlyName "VirtualDisk" -ProvisioningType Fixed -Size 3.63TB  -NumberOfColumns 3 -ResiliencySettingName parity
記憶域スペースをフォーマット
  1. ディスクを確認
    > Get-Disk -FriendlyName "*space*"
    image
  2. 初期化
    > Initialize-Disk -VirtualDisk (Get-VirtualDisk -FriendlyName "VirtualDisk")
    ※初期化せずに他操作を行うとエラーになりました
    image
  3. パーティションを作成
    > New-Partition -DiskNumber X -UseMaximumSize -DriveLetter D
  4. NTFS フォーマット
    ※場合によっては時間がかかります。コーヒーでも飲んで待ちましょう
    > Format-Volume -DriveLetter D -FileSystem NTFS -Force -Confirm:$False
ボリューム ラベルを変更
  1. ラベルを変更
    > Set-Volume -DriveLetter D -NewFileSystemLabel "StoragePool"
余談:PowerShellらしくワンライナーで書くことも可能
仮想ディスク作成後の処理をワンライナーで書くことも可能です。
PowerShell、やっぱり便利ですね!
Get-VirtualDisk -FriendlyName "VirtualDisk" | Get-Disk | Initialize-Disk -Passthru  | New-Partition -UseMaximumSize -DriveLetter D | Format-Volume -DriveLetter D -FileSystem NTFS -Force -Confirm:$False
    スポンサーリンク

    スポンサーリンク