How to Plan Ahead for Windows Storage Spaces Performance and Scalability
With Windows Storage Spaces, the number of disks in a pool impacts performance and scalability.
December 2, 2021
Windows Storage Spaces is designed to, among other things, make storage consumption far more flexible than it might otherwise be. With Storage Spaces, a system’s physical disks are placed into a storage pool, and the pool’s storage can then be used on an as-needed basis. An admin might, for example, create a three-way mirrored volume and a parity volume from disks belonging to the same pool.
Even though Windows Storage Spaces gives you the freedom to use your raw storage in whatever way makes sense at a given moment, it is important to take some time and consider how many disks to include in the storage pool. That one simple decision will ultimately impact both performance and scalability.
To demonstrate why this is the case, take a look at Figure 1. This particular machine contains two storage pools: the primordial pool and a pool named simply “Storage Pool.” Storage Pool contains five physical disks.
windows storage spaces 1
Figure 1
This machine contains a storage pool that is made up of five disks.
Now, let’s take a look at the disks that have been created on top of Storage Pool. The command that I am using is:
Get-VirtualDisk | Format-Table FriendlyName, ResiliencySettingName, NumberOfColumns, NumberOfDataCopies, @{Expression={$_.Size / 1GB}; Label="Size(GB)"}, @{Expression={$_.FootprintOnPool / 1GB}; Label="PoolFootprint(GB)"} -AutoSize
There are, of course, easier ways to display your collection of virtual disks, but I am using this particular command because it includes information on columns and data copies. You can see the command and its output in Figure 2.
windows storage spaces 2
Figure 2
This output shows the number of columns associated with each virtual disk.
As you look at the figure above, you can see that there are three virtual disks built on top of Storage Pool. There are two mirror spaces and one parity space. The mirrored virtual disks are two-way mirrors, as indicated by the Number of Data Copies field.
The main thing I wanted to show in the figure is the column count. The column count indicates the number of disks across which data is striped. In the case of the parity disk, for example, data is being stripped across three drives, hence the column count shows a value of 3.
In the case of a simple parity disk, there is usually a direct correlation between the column count and the virtual disk’s performance. Increasing the number of disks that data is striped across increases the number of IOPS that the virtual disk can handle.
Figure 3 shows the interface used to create a new storage space within a storage pool. As you look at this screen, you will notice that although Storage Spaces tells you the minimum number of disks that are required for the type of virtual disk that you are creating, it does not give you the option of specifying the number of physical disks that you actually want to use.
windows storage spaces 3
Figure 3
This is the interface used for creating a new virtual disk.
If you create a virtual disk (or a storage space, as Microsoft likes to call it) through PowerShell, you can specify how many columns (disks) to include. If you use the GUI, however, Windows will automatically decide how many columns to use based on the amount of space available on each disk within the pool and on the type of storage space that you are creating. By default, Windows will use a maximum of eight columns for a simple storage space.
This matters because you can’t change a storage space’s column size once it has been created. If you want to increase the column size, your only realistic option is to create a brand new storage space and migrate all of your data to it.
So, with that said, consider how the number of disks in your storage space impacts your overall performance. You cannot create a virtual disk with a column count that exceeds the total number of physical disks in the storage pool, and if you add disks to the storage pool later on, you can’t change a virtual disk’s column count in a way that allows it to stripe data across the new disk. As such, it is important to think about your ideal column count when deciding how many disks to include in a storage pool.
As important as this may be, there is an additional implication that is perhaps even more important. Imagine that you have created a storage space that uses four columns. Let’s also pretend that this storage space’s performance is fine, but that you need to add some extra space to it.
Windows Storage Spaces does allow you to increase a storage space’s size by adding physical disks. What you cannot change is the storage space’s column count. What this means in the context of this example is that because the storage space is using four columns (and each column represents a physical disk), you would need to add four new disks to the storage pool to expand the storage pool. This is something that you will need to think about when you are creating the storage pool because the number of drive bays that are available to you will ultimately determine how many disks you can add. If the system in the example had only three empty drive bays, then extending the storage space would not have been an option because the column count necessitates the use of four disks.
All of this is to say that when you are creating a storage pool, it is important to think about how many disks to initially place in your pool, as well as the number of disks that you can potentially add to the pool in the future. These factors will play into the column size that you can get away with using on your storage spaces.
About the Author(s)
You May Also Like