Cannot Extend Simple Virtual Disk in Windows Server 2012 R2

I’m writing this blog to help shed some light on extending simple virtual disks in Windows Server 2012 R2.  We have had questions from various customers that have been using simple virtual disk and need to add more space to them.

Let’s say you used Server Manager to create a new Storage Pool called “Storage Pool1”.  Using 3 x 10Gb physical disks, you have created a new simple virtual fixed disk using all the available disks in Storage Pool1.  This gives the system 24Gb of usable space as E:.

image

You now need to extend the simple fixed virtual disk because it is running out of free space. The logical way to go about this is to use Server Manager and add 1 new physical disk to Storage Pool1 and extend the simple fixed virtual disk.

In the screenshot below, I added physical disk 4 to Storage Pool1 and try expand the simple fixed virtual disk.

image

Go to Server Manager then select File and Storage Services, Volumes then Storage Pools, right click Storage Pool1 and under Virtual Disks right click VDisk1 and select Extend Virtual Disk. A Window comes like the screenshot below but all options are greyed out and the only choice is to click Cancel.

image

This leaves you scratching your head wondering what was missed and why it failed. There is an answer to this and I’ll explain.

When a virtual disk is created using Server Manager, there is a key property created called NumberOfColumns.  The NumberOfColumns property is set according to the number of physical disks used to create the virtual disk and cannot be changed after the virtual disk has been created. You can see the NumberOfColumns property by right clicking VDisk1, select Properties, select Details tab and in the Property drop down select NumberOfColumns.

image

As shown in the screenshot above, the Value is 3.  This is the number of physical disks used from Storage Pool1 to create the simple fixed virtual disk.  The only way to properly extend the simple fixed virtual disk is to add 3 more physical disks to Storage Pool1 (NumberOfColumns).

The way add new physical disks to Storage Pool1 is right click Storage Pool1, select Add Physical Disk, select the physical disks to add and click OK.

image

There are now 6 total physical disks in Storage Pool1 and the simple fixed virtual disk will successfully extend.

image

Right click VDisk1, select Extend Virtual Disk and now all the options are no longer greyed out. You can select to Specify Size or Maximum Size. I choose Maximum Size.

image

Click OK and now the capacity is 48 GB for the simple virtual fixed disk.

image

You can check the properties for VDisk1 and see that the NumberOfColumns is still 3.  You can also use the Get-VirtualDisk PowerShell command.

image

Ok, so now that you understand how the NumberOfColumns is set and why it is set when the virtual disk is created. But hold on, there is a way around this by using PowerShell to create the virtual disk.

PowerShell saves the day!

The quick and easy way to create a new virtual disk specifying the NumberOfColumns of 1 with multiple physical disks is to use PowerShell. But first, a Storage Pool needs to be created and can be done using Server Manager or PowerShell.

Follow the below steps using PowerShell to create Storage Pool named Storage Pool1 with 3 physical Disks.

New-StoragePool –FriendlyName “Storage Pool1” –PhysicalDisks (Get-PhysicalDisk PhysicalDisk1, PhysicalDisk2,PhysicalDisk3 ) –StorageSubSystemFriendlyName *space*

Now, run Get-StoragePool command and there will be two pools listed; Primordial and Storage Pool1 which was just created.

image
 
Now it’s time to create a new Simple fixed virtual disk in Storage Pool1 using 3 physical disk with NumberOfColumns 1 and maximum size.

New-VirtualDisk –StoragePoolFriendlyName “Storage Pool1” –FriendlyName VDisk1 –NumberOfColumns 1 –ProvisioningType Fixed –ResiliencySettingName Simple -UseMaximumSize

image

Now let’s confirm the NumberOfColumns is 1.

Get-VirtualDisk –FriendlyName VDisk1 | FL NumberOfColumns

image

Or for a more detail view of the virtual disk.

Get-VirtualDisk –FriendlyName VDisk1 | FL *

image

I hope this blog helps sheds some light on the NumberOfColumns and how the value is set when the virtual disk is created.

Steven Graves
Senior Support Escalation Engineer
Windows Availability Team