Despite the many benefits of Windows Storage Spaces, those who have deployed it have one common complaint: In some situations, Windows Storage Spaces can exhibit very slow write performance. Thankfully, there are some things that you can do to improve Windows Storage Spaces’ level of performance.
First Things First ...
Before I get started with recommendations, there are a couple of things that I want to address.
First, many IT pros recommend setting a virtual disk’s logical sector size to match the physical sector size of the disks within the pool. I’m going to avoid discussing this method because so much has already been written about it, and because its results are inconsistent. Some admins use this technique and see a tremendous improvement in performance, while others do not see an improvement at all. Incidentally, if you are curious as to whether your physical and logical sector sizes match, you can find out by using this PowerShell command:
Get-VirtualDisk | Select-Object FriendlyName, PhysicalSectorSize, LogicalSectorSize
The second thing that I want to mention is that although it may sound cliché, try rebooting your Storage Spaces server (if you are able to). I have seen several situations in which Storage Spaces’ performance has slowly diminished over time, but was restored by a reboot.
With all that said, here are some things to try when Windows Storage Spaces starts to slow.
1. Test Your Disks
One of the things that I have noticed when working with Windows Storage Spaces is that a virtual disk’s performance can be negatively impacted by a single physical disk within the storage pool. Therefore, if you are having performance problems, it’s a good idea to check the individual disks within your storage pool to make sure that you don’t have a disk that is going bad.
There are several different techniques you can use to examine the individual disks. The Performance Monitor is often the go-to tool for assessing storage health, but it may be easier to use PowerShell to get the information that you need. An article on MSNoob provides a single PowerShell command that can be used to retrieve latency and reliability statistics from your physical disks. That command is:
Get-VirtualDisk -FriendlyName VirtualDisk01 | Get-PhysicalDisk | Get-StorageReliabilityCounter | Select DeviceId,FlushLatencyMax,ReadLatencyMax,WriteLatencyMax,ReadErrorsCorrected,WriteErrorsCorrected,ReadErrorsTotal,WriteErrorsTotal
If you would rather do a more thorough examination of your physical disks, I recommend using the Storage Spaces Physical Disk Validation Script found in the TechNet Gallery. This script tests physical disks and compares their performance to various threshold values. The script generates errors and warnings for any disks that do not measure up.
2. Update Your Firmware
Another thing that you should do if you are experiencing performance problems with Windows Storage Spaces is update your firmware. As important as it is to ensure that your server is running up-to-date firmware, it is also important to check your disks. Not every disk contains updatable firmware, but the practice of providing firmware updates for disks is becoming far more common, especially for enterprise-class storage.
3. Examine Your Virtual Disk Architecture
There are two architectures that are often responsible for Windows Storage Spaces performance problems.
The first of these architectures is virtual disks that use parity. Now, don’t get me wrong--sometimes there are perfectly valid reasons for using parity. For instance, you might not have enough disks available to create a virtual disk of the required capacity using a better performing architecture. Even so, parity-based RAID structures such as RAID 5 and RAID 6 do not perform as well as mirror-based architectures like RAID 10.
If you have a parity-based virtual disk that had previously performed well but is now exhibiting slow read or write performance, you should check to see if a physical disk has failed, or if a disk has been recently replaced and the virtual disk’s rebuild operation is still in progress.
The other architecture that commonly causes performance problems involves creating multiple virtual disks within the same storage pool, and using those disks for I/O-intensive workloads. The reason why this can be a problem is that virtual disks within a storage pool often share physical disks with one another. If you create multiple virtual disks from a single storage pool, then it’s possible that I/O-intensive workloads might overwhelm the physical hardware.
Ultimately, there are any number of things that can cause Windows Storage Spaces to perform poorly. The items discussed in this article are some of the things that most commonly cause Windows Storage Spaces performance issues, and are a good place to start, but this is by no means a comprehensive list.