2022年7月17日日曜日

記憶域プールのディスクを交換してWindows Power Shellで再構成する

記憶域プールで作成していたボリュームのHDDが1台天に召されたため、交換して再構成しました。RAID0構成なので回復性がありませんので、データはバックアップから復旧します。
以下の手順は、OS上の記憶域プールに対しては何も操作を行わないまま、障害発生したHDDを交換した場合の手順となります。

1 パーテーションの削除
障害が発生したパーテーションを削除します。
※この時点で対象ドライブの全データが消えます。今回はもうアクセスできませんので気にせず削除
Remove-Partition -DriveLetter E

2 仮想ディスクの削除
仮想ディスクの状況を確認します。
Get-VirtualDisk | Sort FriendlyName | ft FriendlyName, HealthStatus, Size

FriendlyName HealthStatus           Size
------------ ------------           ----
Documents    Healthy      16000900661248
Multimedia   Unhealthy    30000346562560 → 障害発生したやつ

障害発生した仮想ディスクを削除します。
Remove-VirtualDisk -FriendlyName "Multimedia"

削除されたことを確認します。
Get-VirtualDisk | Sort FriendlyName | ft FriendlyName, HealthStatus, Size

FriendlyName HealthStatus           Size
------------ ------------           ----
Documents    Healthy      16000900661248

3 記憶域プールの削除
記憶域プールの状況を確認します。
Get-StoragePool | Sort FriendlyName | ft FriendlyName, HealthStatus, IsPrimordial, Size

FriendlyName HealthStatus IsPrimordial           Size
------------ ------------ ------------           ----
DOCUMENTS    Healthy             False 16001781465088
MULTIMEDIA   Warning             False 30002511872000 → 障害発生したやつ
Primordial   Healthy              True 47009206960128 → システムが自動的に作成

障害発生した記憶域プールを削除します。
Remove-StoragePool -FriendlyName "MULTIMEDIA"

削除されたことを確認します。
Get-StoragePool | Sort FriendlyName | ft FriendlyName, HealthStatus, IsPrimordial, Size

FriendlyName HealthStatus IsPrimordial           Size
------------ ------------ ------------           ----
DOCUMENTS    Healthy             False 16001781465088
Primordial   Healthy              True 47009206960128

4 物理ディスクのチェック
一度記憶域プールが作成された物理ディスクは、記憶域プールが作成可能になっていない可能性があるので、それを確認します。
Get-PhysicalDisk | Sort FriendlyName | ft FriendlyName, SerialNumber, CanPool, Size -AutoSize

FriendlyName         SerialNumber         CanPool          Size
------------         ------------         -------          ----
CSSD-M2M1TEG1VNE     6479_A74B_9020_0DDA.   False 1000204886016
ST6000DM003-2CY186   ZR131BKP                True 6001175126016
WDC WD60EZAZ-00SF3B0 WD-WX22DC0LVURZ         True 6001175126016
WDC WD60EZAZ-00SF3B0 WD-WX22DC02TJ94         True 6001175126016
WDC WD60EZAZ-00ZGHB0 WD-WX11D59KEKZ9         True 6001175126016
WDC WD60EZAZ-00ZGHB0 WD-WX11D59ACYS3         True 6001175126016
WDC WD80EFZX-68UW8N0 VJH4JUKX               False 8001563222016
WDC WD80EFZX-68UW8N0 VJH4JTHX               False 8001563222016
※今回は問題なく再作成できるようです。

5 物理ディスクのリセット
4で記憶域プール作成対象のディスクのCanPoolがFalseになっている場合はリセットします。
Reset-PhysicalDisk -FriendlyName "WDC WD60EZAZ-00SF3B0"
Reset-PhysicalDisk -FriendlyName "WDC WD60EZAZ-00ZGHB0"
実行後は4をもう1回実行し、記憶域プール作成対象のディスクのCanPoolがすべてTrueになっていることを確認します。
※FriendlyNameに複数の物理ディスクが該当している場合は、当然同じFriendlyNameのディスク全部に働くため、操作対象外のディスクが同じFriendlyNameの場合はSerialNumberで指定する必要があります。

6 StorageSubSystemのFriendlyNameをコピー
記憶域プール作成コマンドでStorageSubSystem(PC名で自動的に決まっている?)を指定する必要があるので確認してコピーします。
Get-StorageSubSystem

FriendlyName              HealthStatus OperationalStatus
------------              ------------ -----------------
Windows Storage on srv100 Healthy      OK

7 物理ディスクを変数に格納
物理ディスクのオブジェクトを変数に格納します。
$PhysicalDisks += Get-PhysicalDisk -FriendlyName "WDC WD60EZAZ-00SF3B0"
$PhysicalDisks += Get-PhysicalDisk -FriendlyName "WDC WD60EZAZ-00ZGHB0"
$PhysicalDisks += Get-PhysicalDisk -FriendlyName "ST6000DM003-2CY186"
※FriendlyNameが複数あるため追記しています。「,」で複数指定できるように記載されているWebサイトもありましたが、エラーで出来ませんでした。

変数を確認します
Write-output $PhysicalDisks | Sort FriendlyName | ft FriendlyName, SerialNumber, CanPool, Size -AutoSize

FriendlyName         SerialNumber    CanPool          Size
------------         ------------    -------          ----
ST6000DM003-2CY186   ZR131BKP           True 6001175126016
WDC WD60EZAZ-00SF3B0 WD-WX22DC0LVURZ    True 6001175126016
WDC WD60EZAZ-00SF3B0 WD-WX22DC02TJ94    True 6001175126016
WDC WD60EZAZ-00ZGHB0 WD-WX11D59KEKZ9    True 6001175126016
WDC WD60EZAZ-00ZGHB0 WD-WX11D59ACYS3    True 6001175126016

8 記憶域プールを作成
記憶域プールを作成します。
New-StoragePool -StorageSubSystemFriendlyName "Windows Storage on srv100" -FriendlyName "MULTIMEDIA" -PhysicalDisks $PhysicalDisks

FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly     Size AllocatedSize
------------ ----------------- ------------ ------------ ----------     ---- -------------
MULTIMEDIA   OK                Healthy      False        False      27.29 TB       1.25 GB

9 仮想ディスクの作成
仮想ディスクを作成します。
New-VirtualDisk -StoragePoolFriendlyName "MULTIMEDIA" -FriendlyName "Multimedia" -ResiliencySettingName Simple -ProvisioningType Fixed -NumberOfColumns 5 -WriteCacheSize 0 -UseMaximumSize

FriendlyName ResiliencySettingName FaultDomainRedundancy OperationalStatus HealthStatus     Size FootprintOnPool Storag
                                                                                                                 eEffic
                                                                                                                  iency
------------ --------------------- --------------------- ----------------- ------------     ---- --------------- ------
Multimedia   Simple                0                     OK                Healthy      27.29 TB        27.29 TB ...00%

10 パーテーションの作成
ディスクの管理でパーテーションを作成します。

連休の初日からディスクの復旧作業とか、やれやれ。
でも大事にならなくて良かった。