Removing a physical disk from Windows 2012 Essentials / Windows 8 Storage Spaces:
Microsoft has yet to write a fancy GUI button-clickable tool to do this job for us, as there was previously in Windows Home Server. Why this is… who knows – its really the only major downfall to Storage Spaces I’ve run across in the 8 months I have been using it.
Google searches tend to lend toward the “Accepted” method of replacing/removing a drive from the Storage Spaces array is to remove it, and repair your Virtual Disks. Granted, the whole point to resiliency in storage arrays is to be able to recover from a failure, I don’t feel that intentionally placing my storage array in a compromised position is a reasonable method.
First – I think this should go without saying, but backup your data. This shouldn’t just apply with messing around with your drives, but always. Multiple failures can occur – I’ve seen it more than once on traditional RAIDs. Backup your data – BE WARNED! I have all of my storage space data backed up (via rsync) to a secondary NAS, so I’m not just spewing crap I don’t follow myself.
Anyway… In my example, all of my storage spaces contain some sort of resiliency, either parity or mirror. I have NOT attempted to complete this procedure with a non-resilient Virtual Disk. I’m not saying it won’t work, I just don’t know it will.
Basically, the process is to set the disk to be removed as “retired”, migrate the data off of it, and remove it from the storage pool.
To figure out the names of the disk, you can use the Windows PowerShell command Get-PhysicalDisk. This will output the list of drives attached to your storage spaces. I’ll be removing an old 2TB drive, named ST2000DL003–C to make room for a larger drive.
Now, use the PowerShell command (you’ll need to be running PowerShell as an administrator) to mark the disk as retired:
Set-PhysicalDisk -FriendlyName ‘ST2000DL003–C’ -Usage Retired
Windows will chug for a few seconds, and you’ll see the drive marked as retired in the Storage Spaces control panel.
Now, we’ll need to repair the Virtual Disks (IE “move” the data on the retired disk elsewhere on the storage pool. We’ll need to know what Windows calls our Virtual disks, and we can figure that out with the PowerShell command Get-VirtualDisk. Next, we’ll issue the repair command for ach Virtual Disk within this Storage Space.
Repair-VirtualDisk -FriendlyName ‘DomainData’
Repair-VirtualDisk -FriendlyName ‘ServerData’
The jobs are queued, so only one runs at a time.
You can check on the progress of the data copy by watching the blinkie lights on your NAS, the PowerShell command Get-StorageJob, or within the Storage Spaces GUI:
Personally? Blinkie lights…
Depending on the speed, and consumed data size of the drive you’re removing, this is going to take a while. Windows was reading the drive I was removing while it was repairing, so I can only assume it was actively moving the data from it, rather than simply breaking the array, and fixing it. The Storage Spaces GUI never indicated a degraded state, and I wasn’t about to pull a second drive to find out – so your guess is as good as mine.
My Virtual Disks remained online, and accessible while my repair process was ongoing. It felt a bit sluggish, but worked.
Once all of your “repair” jobs are complete, you can remove the drive from the Storage Space, either through the GUI (2012 Essentials), or with the PowerShell command:
Remove-PhysicalDisk -FriendlyName ‘ST2000DL003–C’
You should now be able to pop the drive out of the NAS, and replace it with a larger/working drive, and add it to your Storage Pool.