Storage tiers enable the mixing of HDDs and SSDs in one pool to take
advantage of the faster SSDs maximizing IOPS and throughput by using
the SSDs for the most frequently accessed data. Microsoft Microsoft
Storage Spaces constantly analyzes data usage patterns and moves the
most frequently used data from the HDD tier to the SSD tier to speed
up access.
- NOTE: Storage tiers are only supported with mirroring or simple spaces.
Microsoft Storage Spaces creates a heat map based
on the frequency that the data is used. Once a day, an optimization
process automatically runs and the most frequently accessed data (hot
data) is moved to the SSD tier and less frequently accessed data (cold
data) is moved to the HDD tier.
Because the data
on the SSD tier is updated only once a day (by default), if required,
you can manually optimize data by running the following PowerShell
command.
You must run this command on all nodes in the
cluster, because it only optimizes the VDs owned by the node where
the command was run.
When validating the performance
of your solution, perform benchmarks over the course of several days
to allow the SSD tier to optimize for your workload. Alternatively,
you can manually optimize the SSD tier. Manually optimizing storage
tier data using the command above generates a Storage Tier Optimization
Report. The Storage Tier Optimization report provides data on the
storage tier, which can be used to identify methods to optimize performance.
You may want the ability to permanently place a frequently
used file on the SSD tier. For example, a frequently accessed VHDX
file that requires low latency and high throughput. You can accomplish
this by pinning files to the SSD tier.
Consider
the following before running the command:
- You must run the command from the node, which owns
the CSV where the file is stored.
- You must use the local path of the CSV on the node.
Even after pinning the file, it will not
move to the SSD tier until the next optimization (or if you run it
manually).
Dell recommends you to use pin sparingly,
because the primary goal of storage tiers is to allow the heat map
process to optimize the tiers.
Run the following
Powershell command to pin files to the SSD tier.
Set-FileStorageTier –FilePath <localFilePath>
-DesiredStorageTierFriendlyName<ssdTierName>
Run the following Powershell command to unpin files from
the SSD tier.
Set-FileStorageTier –FilePath
<localFilePath>
Run the following PowerShell
command to review all files currently pinned.
Get-FileStorageTier –VolumePath <csvVolumePath>
For example, pinning a VHDX file called myVHDX, which
is on exampleShare on a CSV labeled Volume3. The storage tier is called
MyPool1_SSD.
Set-FileStorageTier –FilePath “C:\ClusterStorage\Volume3\Shares\exampleShare\myVHDX.vhdx” –DesiredStorageTierFriendlyName
“MyPool1_SSD”
Storage tiers are configured for each storage
pool and it is recommended to create one SSD tier and one HDD tier
for each storage pool.
The following equations
are for planning purposes, when you start creating VDs in your storage
pools. The values from the equations are used to understand the upper
limit for capacity planning so that you are always leaving sufficient
HDD and SDD raw disk space free across the pool as you create and
size each VD for automatic rebuilds. These are not intended to be
equations to guide you about sizing the tiers of the individual VDs.
If you are not using automatic rebuilds and plan to only perform manual
rebuilds, subtracting the capacity for automatic rebuilds in the equations
below is not required..
Raw SSD Usable Capacity Per Pool=(Number
of SSDs in the pool*SSD Capacity)-(SSD Capacity+8 GB for automatic
rebuild space)*(Number of disk failures to recover from)
Raw HDD Usable Capacity Per Pool=(Number of HDDs in
the pool*HDD Capacity)-(HDD Capacity+8 GB for automatic rebuild space)*(Number
of disk failures to recover from)
Tier size
is the raw value modified by a resiliency factor depending on the
type of Storage Space you are creating. For example, 1 for a Simple
Space, 1/2 for a two-way Mirror, and 1/3 for a three-way mirror.
SSD Tier Per Pool= Raw SSD Usable Capacity Per
Pool
HDD Tier Per Pool=Raw HDD Usable Capacity
Per Pool
For example, a pool is created with 48 x 4 TB
and 12 x 800 GB disks called tierPool1. Only two VDs exist in this
pool, one with two-way mirroring called 2wayVD1 and one with three-way
mirroring called 3wayVD1.
2wayVD1 HDD tier was
42.7 TiB, which uses 85.5 TiB of the HDD tier because of the 50 percent
resiliency overhead for two-way mirroring. The SSD tier was 2 TiB
in size, which uses 4 TiB of SSD tier because of resiliency overhead.
3wayVD2 HDD tier was 27.9 TiB, which uses 55.8 TiB
of the HDD tier because of the 66 percent resiliency overhead from
three-way mirroring. The SSD tier was 1.2 TiB, which uses 2.4 TiB
of SSD tier because of resiliency overhead.
After both VDs are created, there is 33.42 TiB of disk
space remaining in the HDD tier and 2.3 TiB of disk space remaining
in the SSD tier.
Table 1. Example of disk
space values used for storage tiers for pools and VDs
Pool Name | tierPool1 |
---|
HDDs in pool | 48 |
HDD disk space | 4 TB (3.64 TiB) |
HDD tier disk space (after automatic rebuild) | 141.3 TiB |
SSDs in pool | 12 |
SSD disk space | 800 GB (745 GiB) |
Table 2. Example of disk
space values used for storage tiers for pools and VDs
VD name | 2wayVD1 |
---|
Resiliency | two-way mirror |
HDD tier disk space | 42.76 TiB |
SSD tier disk space | 2 TiB |
SSD tier disk space (after automatic
rebuild)
| 8.18 TiB |
Table 3. Example of disk
space values used for storage tiers for pools and VDs
VD name | 3wayVD2 |
---|
Resiliency | three-way mirror |
HDD tier disk space | 27.9 TiB |
SSD tier disk space | 1.23 TiB |
Run the following PowerShell commands when
creating a new SSD and HDD storage tier (configured for each pool).
New-StorageTier -StoragePoolFriendlyName <poolName> -FriendlyName <ssdTierName>
-MediaType SSD
New-StorageTier -StoragePoolFriendlyName <poolName> -FriendlyName <hddTierName>
-MediaType HDD
For example,
New-StorageTier -StoragePoolFriendlyName “tierPool1”
-FriendlyName“tierPool1_SSD” –MediaType SSDNew-StorageTier
-StoragePoolFriendlyName “tierPool1” -FriendlyName“tierPool1_HDD” –MediaType HDD
Storage tiers are sized for each VD when the
VD is created. You can size the SSD and HDD tiers in the GUI during
VD creation or by using PowerShell.
Run the following
PowerShell command for creating a VD by using existing storage tiers.
New-VirtualDisk -FriendlyName <vdName> -StoragePoolFriendlyName <poolName>
-ProvisioningType Fixed -ResiliencySettingName <Simple| Mirror| Parity>
-PhysicalDiskRedundancy <1|2> -StorageTiers <ssdTierObject, hddTierObject>
-StorageTierSizes <ssdTierSize , hddTierSize>
For example, a new VD is created called 2wayVD1 in the
storage pool tierPool1. This VD is configured as a two-way mirror.
The SSD and HDD tiers for this pool were created in the earlier example.
Because the
StorageTiers attribute requires objects as its
input, the output of the
Get-StorageTier PowerShell command
is assigned to the
$ssd_tier and
$hdd_tier variables,
and then used when creating the VD. The
StorageTierSizes attribute
is set to the size of each tier for which the VD uses the tier disk
space.
$ssd_tier = Get-StorageTier -FriendlyName tierPool1_SSD
$hdd_tier = Get-StorageTier -FriendlyName tierPool1_HDD
New-VirtualDisk -FriendlyName “2wayVD1” -StoragePoolFriendlyName “tierPool1”
-ProvisioningType Fixed -ResiliencySettingName Mirror -PhysicalDiskRedundancy 1
–StorageTiers $ssd_tier, $hdd_tier –StorageTierSizes 2TB, 42.7TB