In parts 1 and 2 of this series I’ve given an introduction to some of the differences in the interface and features of Storage Spaces in Windows Server 2012 R2 and Windows 8.1, but there is one thing they definitely have in common and that’s the ability to use PowerShell cmdlets to create and mange Storage Spaces.
On Windows Server, you can get quite a bit of additional information out of Server Manager than the Windows 8.1 interface can give you, including at a glance information about whether the space is clustered, tiered, and what server it is associated with, amongst other things.
What we want to do here is take a look at further properties for the Storage Space I created called 3Disk, which is includes 3 disks, and it has the VDisk virtual disk created on it.
When we take a look at the Properties of 3Disk, we can see that details allows us to drill down to view a variety of different properties.
If we go to the properties of VDisk, we can see that we have the same ability to see more details.
Jumping back to Windows 8.1, this is all we can see through the UI. We can’t dig any further to see what the properties of the Storage Space are without resorting to PowerShell. I won’t go through all the possible cmdlets and options that are available, just a few of the essentials to get you moving.
The first command that I’ve run is a simple one, and you can it just gives the number of columns and the number of data copies
Get-VirtualDisk -FriendlyName MyVirtualDisk | ft FriendlyName, NumberOfColumns, NumberOfDataCopies
The second one shows a bit more of what PowerShell is capable of, but again, this is a simple disk structure.
Get-VirtualDisk | ft FriendlyName, ResiliencySettingName, NumberOfColumns, NumberOfDataCopies, @{Expression={$_.Size / 1GB}; Label=”Size(GB)”}, @{Expression={$_.FootprintOnPool / 1GB}; Label=”PoolFootprint(GB)”} -AutoSize
For the next few samples I’ve deleted that virtual disk, and added a bit more complexity, but still working with the same 3 disk setup.
Here you can see that I’ve created a 2 way mirrored space (which requires a minimum of 3 drives), a parity space (which also requires a minimum of 3 drives) and the simple volume (which requires a minimum of 1 drive).
I’ve simply re-run the last command again, but this time you can see information that isn’t obvious from the client UI above. We can see the number of columns, which ranges up to 3 for the parity disk, as well as the number of copies, which is 2 for the 2 way mirror. Realistically, anyone playing around with Storage Spaces on the client side is probably not going to be your typical user, so it’s not as if PowerShell is being forced upon end users at this point in time.
Now what I want to do is create another vdisk, but this time I want to force it to use 3 columns, which will improve performance.
New-VirtualDisk -StoragePoolFriendlyName “Storage Pool” -ResiliencySettingName Simple -Size 200GB -FriendlyName Simple3ColumnsVDisk -ProvisioningType Fixed -NumberOfDataCopies 1 -NumberOfColumns 3
Now you can see the final vdisk has 3 columns, which compares closely to a 3 drive RAID 0 array.
Copying from the c: drive, which is an SSD, to the 3 column g: drive, you can see that it is scaling pretty well.
If we compare that to the single column F: drive, you can see it is effectively limited to single drive speeds.
The two way mirror has to write it out twice, but still manages to stay close to the single column vdisk.
Last, and certainly least, is the Parity Disk. The information is striped across the 3 columns with parity, and you can see that once it clears the system cache speed bump at the beginning, it really slows down. Parity is great for longer term archiving, but you don’t really want to be writing to it repeatedly with large files.
Once we copy back from the parity vdisk we see that performance is back up around two drives or two columns, so for retrieving data it’s not a bad option at all.
If we take a look at what Disk Management reports you can see that it reports the vdisks as I’ve created, them, and thin provisioning is definitely in play as these are three 2TB drives. If these weren’t thinly provisioned I’d need another 15 drives or so added to provide this amount of storage.
Now the final piece of today’s post, and more a teaser for future updates, is that Microsoft’s next gen file system, ReFS, or Resilient File System, is included as part of Windows 8.1. It creates multiple copies of the data and allows for higher degree of resiliency in case bit rot hits your data. There is both a performance penalty and a storage penalty, but there are always tradeoffs when it comes to this level of availability.