What is Storage Spaces
Storage Spaces allows you to use commodity hard drives to create resilient storage. Storage Spaces lets you use multiple hard drives as one virtual hard drive. Windows Server 2012 let users create Tiered storage through a GUI. But this isn’t available in windows 10. But, you can still configure tiered storage through PowerShell.
Looking for some servers or network gear? Check out my new site: https://geargrabber.io
What is Tiered Storage
Tiered storage help solve the problem when you want fast storage and want a lot of storage, but don’t want to pay for all SSDs. Tiered storage lets you use solid state hard drives and traditional hard drives as one. SSDs are typically more expensive per GB than spinning disk.
The math you need to know
Storage spaces has a few terms that need to be understood in order to know how many drives you will need. Storage Spaces has resiliency settings, number of copies and columns. Resiliency settings are (Simple, Mirror and Parity). Think of them this way: Simple = RAID 0, Mirror = Raid 1, Parity = Raid 5…. kind of.
If you don’t care what happens when a drive fails, the you can use the Simple resiliency, otherwise use Mirror or Parity. Mirror has the best performance after simple and Parity has by far the worst. Columns basically translate to how many physical disks will the data be written across. And number of copies is just that. How many copies of the data would you like?
Disk to column ratios
|Resiliency||Minimum Column Count||Column:Disk||Minimum Drive Number / Tier||Maximum Column Count|
|Two-way mirror (1 data copies)||1||1:2||2||NA|
|Three-way mirror (2 data copies)||1||1:3||3||NA|
How to configure:
Launch PowerShell as an administrator to get started. Then run the following.
First we’ll add all the available hard disks to the pool. The hard drives you add should not be formatted yet. You’ll need to remove any partitions from them in order for them to be added in this way. This works best when the drives are new out of the box.
$storage = Get-StorageSubSystem
New-StoragePool -StorageSubSystemId $storage.UniqueId -FriendlyName Pool -PhysicalDisks (Get-PhysicalDisk -CanPool $true)
This should create a storage pool for you. Now you can create your tiers.
Get-StoragePool Pool | New-StorageTier –FriendlyName SSD –MediaType SSD
Get-StoragePool Pool | New-StorageTier –FriendlyName HDD –MediaType HDD
If you have just 1 SSD and 1 HDD run this command
Get-StoragePool Pool | Set-ResiliencySetting -Name Simple -NumberOfColumnsDefault 1
If you have 2 SSD and 2 HDD run this command
Get-StoragePool Pool | Set-ResiliencySetting -Name Simple -NumberOfColumnsDefault 2
Get-StoragePool Pool | Set-ResiliencySetting -Name Mirror -NumberOfColumnsDefault 1
Let’s create the virtual drive now.
$SSD = Get-StorageTier -FriendlyName SSD
$HDD = Get-StorageTier -FriendlyName HDD
You’ll want to change the size of the storage tiers in this next command to suit your drives.
Get-StoragePool Pool | New-VirtualDisk -FriendlyName Space -ResiliencySettingName Mirror –StorageTiers $SSD, $HDD -StorageTierSizes 400GB, 900GB -WriteCacheSize 10GB
This will mount and format the new drive as the letter D:
Get-VirtualDisk Space | Get-Disk | Set-Disk -IsReadOnly 0
Get-VirtualDisk Space | Get-Disk | Set-Disk -IsOffline 0
Get-VirtualDisk Space | Get-Disk | Initialize-Disk -PartitionStyle GPT
Get-VirtualDisk Space | Get-Disk | New-Partition -DriveLetter “D” -UseMaximumSize
Initialize-Volume -DriveLetter “D” -FileSystem NTFS -Confirm:$false
I ran ATTO Benchmark Utility on two different types of virtual drives. My setup includes 4 – and 2 – . With a mirror – 1 column setup this storage spaces drive has 1.26TB available for storage and can survive a drive failure of an ssd and an hdd.
This is with simple resiliency and two columns.