Normally in Windows, you can create a Virtual Hard Disk (VHD), see it in the Disk Management, right-click, and remove it:
No problem.
Storage Spaces Hides Disks
I want to test the resiliency of Storage Spaces, and the ability to migrate them between servers. Once a disk has been added to a Storage Pool, it no longer appears in Disk Management. I need to surprise remove a VHD from the server, but there's no UI option to do it.
If i were using a physical disk, it would be trivial to disconnect the drive from the computer (thus ensuring that Storage Spaces doesn't expect it, and has no chance to rebalance beforehand):
How to unplug a vhd?
But once a disk is added to a storage pool, there is no longer any UI options for that disk. I don't want to use the Storage Spaces UI to Remove a physical disk from the pool:
Because:
- storage spaces will migrate data from that disk onto other disks in the pool (defeating the point of a surprise removal)
- storage spaces will migrate data from that disk onto other disks in the pool (defeating the point of the test of migrating disks to another server)
I need the surprise removal
In the same way i can unplug a physical hard disk, how do i unplug a virtual hard disk?
Microsoft has the exact PowerShell commandlet to disconnect a vhd:
Dismount-VHD
Dismounts a virtual hard disk.
PS C:> Dismount-VHD –Path c:\test\testvhdx.vhdx
Unfortunately it doesn't work - for the same reason. The VHD is "gone", "invisible", absorbed into the Storage Pool, gone from any ability to interact with it:
PS C:\Windows\system32> Dismount-VHD –Path D:\VirtualMachines\StorageSpaceTest\StorageSpaceTest1.vhdx
Dismount-VHD : Windows cannot dismount the disk because it is not mounted.
At line:1 char:1
+ Dismount-VHD –Path D:\VirtualMachines\StorageSpaceTest\StorageSpaceTest1.vhdx
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (Microsoft.Vhd.P...mountVhdCommand:DismountVhdCommand) [Dismount-VHD], VirtualizationOperationFailedException
+ FullyQualifiedErrorId : InvalidParameter,Microsoft.Vhd.PowerShell.DismountVhdCommand
It seems once a VHD has been added to a storage pool, it cannot be dismounted.
How do i dismount a VHD that has been added to a storage pool?
DiskPart
The command line tool diskpart has a command to detach a virtual disk:
DISKPART> select vdisk file="F:\Foo\Contoso37.vhd"
DiskPart successfully selected the virtual disk file.
DISKPART> detach vdisk
Virtual Disk Service error:
The virtual disk is already detached.
But it fails for the same reason, the .vhdx
has already been "detached" when it went into the StoragePool.
Bonus Chatter
The current VHDX files are sitting in D:\...
, which itself is a Parity Space. I cannot simply turn off the PC and simply rename the files. Not only is turning off the server not a viable option right now, it defeats the point of the test: having Storage Spaces react while it is running
Edit: Same thing happens in Windows Server 2016
0 Answers