Storage Spaces

Storage Spaces is the new version of Windows VDS and runs on Windows Server 2012 or Windows 8. It is effectively just software RAID. If you use hardware RAID controllers then you do not need Storage Spaces as Storage Spaces just performs the tasks that a good hardware controller does.

Storage Spaces is just a way of virtualising physical disks to make them more manageable. The main concepts is Storage pools, physical disks grouped together into a pool of storage. The disks can be SATA, SAS or SSDs, in either JBOD or RAID enclosures. However if RAID is used then all the RAID functionality must disabled. Disk types can be mixed in the same pool and then Storage tiers can be used to place data on the correct type of disk required for its current access pattern. In other words, high usage data will be kept on SSD and low usage in SATA. Storage Spaces will transparently move data between the tiers at a sub-file level as the data access frequency changes. Pools can be expanded dynamically by simply adding additional drives.

Data Resilience is managed by providing three types of storage layouts:

  1. Simple, where Data is just striped across physical disks with no resilience and so provides no protection from a disk failure.
  2. Parity, like RAID5 or RAID6, where data and parity information are striped across physical disks. At least 3 disks are needed for single parity and 7 disks for dual parity. Online forums suggest that this layout suffers from performance issues.
  3. Mirror. like RAID1, where a full disk is duplicated on at least one more disk. Storage Spaces gives you the option to survive two disk failures with mirroring, but this requires 5 physical disks in the pool. This is the most expensive option in terms of disk space, but the most resilient.

Storage Spaces includes the concept of hot spares, so if a physical disk fails in a Parity or Mirror configuration it can be automatically rebuild using either a dedicated hot spare disk or by using spare capacity on other drives in the pool.

Storage Spaces is fully integrated with Windows Clustering. Storage pools can be clustered across several nodes in a cluster and if the node fails that is running an instance of Storage spaces, the storage will fail over transparently to a different node. Failover can also happen if required for load balancing.

A curiosity is that Storage spaces can be configured on USB drives. USB 3 drives are recommended to get adequate performance.

Virtual Disk Services

Virtual Disk Service (VDS) was introduced in Windows Server 2003. It is intended to simplify disk management on NAS, SAN and direct storage, by providing a scriptable command line interface (CLI) for disk management operations. Disks can be defined as JBOD or RAID. Four CLIs are provided

DISKPART is a command line utility used to manage partitions on both basic and dynamic disks. You also use DISKPART to configure software RAID devices. You can set up a script that will dynamically extend a volume if the used space reaches an alert threshold.

You use the command line utility ISKRAID to configure virtual disks (logical disks that span two or more physical disks) on hardware RAID devices.

DSKMGMT is GUI based and is used to remotely manage disks and volumes on other computers running Windows 2000, Windows XP or Windows Server 2003.

You use the command line utility MOUNTVOL to create, delete or list volume mount points. You can use MOUNTVOL to link volumes without using drive letters.

An especially useful VDS feature is its ability to configure and control disks from several vendors. Most of us populate our SANs with disks from more than one vendor, and each vendor's disks have a different management interface. VDS gives you a single interface to all the disks on your SAN, including NAS systems. The VDS has a command line interface which supports scripts, and that makes the interface even easier, as you can write scripts to perform repetitive work, and VDS then sends the correct commands to the physical disks. For this to work, each hardware provider must translate the VDS standard APIs into instructions specific to their own storage device

VDS Disk Management.

You can use VDS to create partitions on physical or basic disks, to create the volumes that are then mapped to drive letters. These volumes are known as 'simple volumes' and do not span multiple disks. Basic disks are a legacy from pre-Windows 2000 days.
You can also use VDS to create dynamic disks that can consist of either simple volumes or multi-partition volumes that physically span more than a single disk but are logically considered a single volume. You can define dynamic disks as follows, depending on your requirements

  • striped (RAID-0), fast performance with no error protection but cheap
  • mirrored (RAID-1), fast performance with error protection but expensive
  • striped with parity (RAID-5), good performance with error protection and reasonable price

See the RAID section for details. You can use VDS to increase the size of dynamic disks when they are starting to fill up.

You can use VDS to configure, or change the configuration of NAS devices. If you have a NAS 'head' plugged into your SAN, then the storage behind it may be from multiple vendors. You may want to reconfigure that storage as appropriate to your needs. Each storage device will have a different management interface, but if you have VDS, then you can use a common interface for all the different storage boxes.

Multi-path IO

Multi-path Input/Output (MPIO) was introduced in Windows Server 2003

MPIO can provide up to 32 paths to storage, for redundancy on failure, or load balancing to improve performance. MPIO used to be vendor specific and used Windows APIs. That meant that each vendor used their own command set for MPIO. It is now supplied by Microsoft and is HBA agnostic.

Storage Management for SANs

This Microsoft Management Console snap-in facility is used to centrally manage SAN storage devices. This MMC facility will only work on storage devise that support VDS. You would use it to configure and assign LUNs without having to log into each storage subsystem individually.