테스트 환경
- Virtual Environment: Windows Server 2019 DataCenter KO, Hyper-V
- Guest OS: Windows Server 2012R2 DataCenter EN
- VM Role: AD 1EA, SMB 2EA
- Server Role
- AD Server: ADDS, DNS
- SMB Server: File Server, Failover Clustering, Multipath I/O
- Cluster Info
- Cluster Name: SMB-Cluster
- StoragePool Name: SMB-Pool
- Physical Disk: 256GB 5EA
- Virtual Disk Name: VM-Data01
- Virtual Disk Layout: Two-way Mirror
시나리오
- 실서비스 운영 중 PhysicalDisk2에 문제가 발생해 Disk 교체
- 문제발생이 되어 교체된 Disk 이름: PhysicalDisk-1
- 신규 Disk 이름: PhysicalDisk2
서버관리자에서 조회시 문제된 Disk를 이미 신규 Disk로 물리적인 조치는 진행되었으며, 기존에 문제되었던 PhysicalDisk2는 PhysicalDisk-1로 변경된 상황, 신규 Disk는 PhysicalDisk2로 인식
Get-PhysicalDisk 로 조회시 PhysicalDisk-1의 경우 연결이 끊긴 것으로 확인
PhysicalDisk-1에 대해 변수로 지정 및 상태를 Retired 로 변경
$misDisk = Get-PhysicalDisk | Where-Object {$_.OperationalStatus -eq 'Lost Communication'}
$misDisk | Set-PhysicalDisk -Usage Retired

- PhysicalDisk2에 대해 변수로 지정 및 스토리지 풀에 편입
$repDisk = Get-PhysicalDisk -FriendlyName 'PhysicalDisk2'
Add-PhysicalDisk -PhysicalDisks $repDisk -StoragePoolFriendlyName 'smb-pool'

- VirtualDisk를 확인하여 Warninf인 경우에 Repair 진행
Get-VirtualDisk | Where-Object {$_.HealthStatus -eq 'Warning'} | Repair-VirtualDisk

- 문제되었던 PhysicalDisk-1을 제거, CLI로 제거 불가시 서버관리자에서 제거
Remove-PhysicalDisk -PhysicalDisks $misDisk -StoragePoolFriendlyName 'smb-pool'



Powershell 명령어 정리
# Get-PhysicalDisk 명령어로 Didks를 조회해서 OperationalStatus 항목에 Lost Communication 메시지가 있는 Disk를 $misDisk로 변수 지정
$misDisk = Get-PhysicalDisk | Where-Object {$_.OperationalStatus -eq 'Lost Communication'}
# $misDisk로 변수 지정된 Disk의 상태를 Retired로 변경
$misDisk | Set-PhysicalDisk -Usage Retired
# 신규로 교체된 Disk명을 $repDisk로 변수 지정
$repDisk = Get-PhysicalDisk -FriendlyName 'PhysicalDisk2'
# smb-pool에 신규 Disk 추가
Add-PhysicalDisk -PhysicalDisks $repDisk -StoragePoolFriendlyName 'smb-pool'
# VirtualDisk 중 HealthStatus에 Warning으로 표기된 Disk를 Repair 진행
Get-VirtualDisk | Where-Object {$_.HealthStatus -eq 'Warning'} | Repair-VirtualDisk
# smb-pool에서 문제가 발생한 Disk를 제거, 제거가 안될시 GUI에서 해당 Disk 제거
Remove-PhysicalDisk -PhysicalDisks $misDisk -StoragePoolFriendlyName 'smb-pool'