自从了解到Windows2012支持块去重和存储池以后,文件共享服务器装2012R2成了首选
有台N36L跑Windows2012R2,3Tx4做的存储池,里面虚拟磁盘做的mirror方式,所以允许损坏单侧的一半硬盘
刚好发现在拷贝数据的时候忽然变慢,用HDTune查看了一下,发现有坏道,于是换了块硬盘
由于之前在虚拟机下测试过,也在Win8.1下实际应用过更换硬盘,所以就想当然的关机,换硬盘,开机
在进入系统之后,手工添加新增的硬盘到存储池后,发现并没有自动恢复存储池
于是乎搜索了一番(如果是Win8.1它在添加完磁盘后会自动开始重组的)
经过若干个小时的数据备份(因为怕误操作导致数据丢失)
以下就是命令行的恢复方法
输入如下命令列出所有物理磁盘
1 | Get-PhysicalDisk |? { $_.ObjectId.Contains( $PhysicalDiskGUID ) } |
PhysicalDisk-1就是系统记录的更换下去的旧硬盘,显示状态为Lost Communication,我们需要输入以下命令让它“退休”
1 | Set-PhysicalDisk -FriendlyName "PhysicalDisk-1" -Usage Retired |
接着输入命令重组和坏硬盘相关的虚拟磁盘,我的虚拟磁盘命为vd1,你需要替换为你自己的虚拟磁盘名
1 | Repair-VirtualDisk -FriendlyName vd1 |
之后得到如下恢复进度
1 | Repair-VirtualDisk -FriendlyName vd1 |
如果不小心这个窗口关闭了,则输入如下命令是查看存储池任务进度
1 | Get-StorageJob |
得到如下进度
1 | Get-StorageJob |
最后输入以下命令彻底删除损坏的硬盘
1 | Remove-PhysicalDisk -FriendlyName "PhysicalDisk-1" |
在后续的使用过程中,发现修复完的虚拟磁盘在重新启动计算机之后没有自动挂载,另外如果是从其他计算机导入过来的存储池也不会自动挂载,需要自动挂载需要输入以下命令
查看虚拟磁盘状态
1 | Get-VirtualDisk |
可以看到,此时vd1这块虚拟磁盘的IsManualAttach参数为True,将虚拟磁盘vd1变更为自动挂载,输入以下命令
注:必须以管理员身份运行PowerShell
1 | Set-VirtualDisk -FriendlyName vd1 -IsManualAttach $False |
如果有多个虚拟磁盘想同时开启自动挂载,则可以输入以下命令
1 | Get-VirtualDisk | Where-Object {$_.IsManualAttach –eq $True} | Set-VirtualDisk –IsManualAttach $False |