The goal of Storage Spaces is to create highly available storage solution that has all the advantages of SAN (power and flexibility),but is significantly cheaper.Storage spaces “virtualizes” storage (which consist of HDD and SSD.A storage pool is a container that is used to group physical disks (mixing SSD and HDD).It provides the ability to store more frequently accessed data on SSD media,with both types of media used as block based storage for the same virtual disk: the best of both types of storage
In this lab i used machine VMWare workstation VM with 4 HDD and 2 SSD disks (each with 10 GB)
To simulate SSD disk in VMWare,we need to edit virtual machine’s vmx file
scsix:y.virtualSSD=1,where x:y is scsi disk number
Check VM configuration:
Get-PhysicalDisk -CanPool $true | sort size |ft deviceid,friendlyname,canpool,size,mediatype -AutoSize
As we can see,non-SSD disks are specified as “unspecified”,we need to set its media type as HDD,in order to avoid errors
Get-PhysicalDisk | where MediaType -EQ unspecified | where Size -LT 60GB | Set-PhysicalDisk -MediaType HDD
i used filter to exclude system disk (60 GB) because that disk won’t be member of storage pool
Get-PhysicalDisk | sort size |ft deviceid,friendlyname,canpool,size,mediatype -AutoSize
Create storage pool
$pool=Get-StorageSubSystem New-StoragePool -StorageSubSystemUniqueId $pool.UniqueId -FriendlyName mypool -PhysicalDisks (Get-PhysicalDisk -CanPool $true)
Get-StoragePool mypool | Get-PhysicalDisk | ft FriendlyName,MediaType,Size
Configuring Tiers
As we mentioned before,we need to create storage tiers to group SSD and HDD media types
Get-StoragePool mypool | New-StorageTier –FriendlyName HDDTier –MediaType HDD Get-StoragePool mypool | New-StorageTier -FriendlyName SSDTier -MediaType SSD
Get Pool capacity
Get-StoragePool mypool | fl Size,AllocatedSize
Storage Spaces reserves 256 MB for each disk (6×256=1,5 GB)
Get Tier capacity
HDD tier (mirror):
Get-StorageTierSupportedSize hddtier -ResiliencySettingName mirror | ft -AutoSize
If we want to use tier in “mirror” mode,maximum space is 8 GB (10+10)/2
SSD tier
Get-StorageTierSupportedSize ssdtier -ResiliencySettingName mirror | ft -AutoSize
Maximum free space is 16 GB
Configuring resilency settings
Storage Spaces offers increased performance by striping data across multiple disks,these disks are named NumberOfColumns.NumberOfDataCopiesDefault parameter specifies on how many disks data will be stripped across
Get-StoragePool mypool | Set-ResiliencySetting -Name mirror -NumberOfDataCopiesDefault 2
Creating mirrored spaces with tiering
$ssd=Get-StorageTier -FriendlyName ssdtier $hdd=Get-StorageTier -FriendlyName hddtier Get-StoragePool mypool | New-VirtualDisk -FriendlyName space1 -ResiliencySettingName mirror -StorageTiers $ssd,$hdd -StorageTierSizes 16gb,8gb -WriteCacheSize 1gb Get-VirtualDisk | ft -AutoSize
Creating Partition and Volume
Get-VirtualDisk Space1 | Get-Disk | Set-Disk -IsReadOnly 0 Get-VirtualDisk Space1 | Get-Disk | Set-Disk -IsOffline 0 Get-VirtualDisk Space1 | Get-Disk | Initialize-Disk -PartitionStyle GPT Get-VirtualDisk Space1 | Get-Disk | New-Partition -DriveLetter "F" -UseMaximumSize Initialize-Volume -DriveLetter “F” -FileSystem NTFS -Confirm:$false