Содержание
Как устроен Storage Spaces
Storage Spaces — технология виртуализации дискового пространства, которая впервые появилась в Microsoft Windows Server 2012. Storage Spaces является дальнейшим развитием механизма управления динамическими дисками в Windows. Основой является широко применяемая в решениях различных вендоров концепция дисковых пулов: отдельные физические диски сервера объединяются в один или несколько пулов, на базе которых создаются тома с различными уровнями производительности и отказоустойчивости. Использование Storage Spaces вместо аппаратного RAID-контроллера имеет ряд преимуществ и недостатков, которые будут подробно рассмотрены ниже.
Термины
- Storage pool (пул хранения) — набор физических дисков. В одном пуле могут находится диски, отличающиеся по объёму, производительности и интерфейсу подключения.
- Virtual disk (виртуальный диск) — термин для определения логический том в Storage Spaces. Для создания виртуального диска используется ёмкость выбранного дискового пула. При этом доступны несколько вариантов отказоустойчивости (их можно комбинировать в пределах одного пула), большинство из которых являются аналогами традиционных RAID-массивов различных уровней.
- Simple (простой) — аналог RAID-0. Поток данных разбивается на страйпы (по умолчанию размером в 256КиБ), которые распределяются по дискам в пуле. Виртуальный диск simple обеспечивает оптимальное использование ёмкости дисков и является самым производительным, но не предполагает никакой отказоустойчивости.
- Mirror (зеркальный): для каждого страйпа в зеркальном виртуальном диске записывается дополнительно одна (двойное зеркало, 2-way mirror) или две (тройное зеркало, 3-way mirror) копии. Аналогом в плане использования ёмкости дисков для двойного зеркала является RAID-10 (или 1E для нечётного числа дисков). Зеркальный ВД защищён от потери одного или двух дисков соответственно.
- Parity (виртуальный диск с контролем чётности): запись страйпов на диски чередуется с записью контрольной суммы. В Windows Server 2012 R2 появились диски с двойной чётностью (dual parity), в которых дополнительно пишется вторая контрольная сумма. Как и аналогичные RAID-5 и RAID-6 ВД с контролем чётности допускают потерю одного или двух дисков соответственно и обеспечивают минимальную потерю дискового пространства (-1 или -2 диска соответственно). Традиционным недостатком любых реализаций томов с контрольными суммами является низкая производительность на запись из-за необходимости модификации всего полного страйпа вместе с контрольными суммами. Отсутствие фиксированного размещения страйпов в Storage Spaces и RAM-кэша на контроллере (используются обычные HBA) усугубляет данную проблему, сравнение производительности ВД single parity и dual parity с RAID-5 и RAID-6 будет ниже.
- В Windows Server 2012 R2 появился функционал enclosure awareness: при размещении страйпов учитывается размещение дисков по различным дисковым полкам (SAS JBOD’ам) для получения отказоустойчивости на уровне дисковых полок. Например, ВД с двойным зеркалированием (2-way mirror), размещенный на трёх дисковых полках, допускает потерю одной дисковой полки целиком.
- Параллельность распределения страйпов в виртуальном диске определяется числом т.н. столбцов (columns). Для получения максимальной производительности число столбцов для виртуальных дисков с уровнем отказоустойчивости simple и parity должно соответствовать количеству физических дисков, но в настройках по умолчанию максимальное число столбцов, например, для simple равно 8. Это связано с особенностями механизма расширения ёмкости пула: для оптимального использования ёмкости число добавляемых дисков должно соответствовать максимальному числу столбцов, которое используется виртуальными дисками, а для зеркальных дисков — числу столбцов * числу копий страйпа (2 для 2-way mirror, 3 для 3-way mirror).
- Storage tiers (ярусное хранение данных). В Windows Server 2012 R2 появилась поддержка 2-ярусного (SSD и HDD) размещения данных на виртуальных дисках Storage Spaces. Приоретизация доступа к быстрому ярусу из SSD возможна путём управления ёмкостью (при создании ВД указываются комбинация объёмов SSD и HDD ярусов) либо на файловом уровне: необходимый файл можно привязать к SSD-ярусу для обеспечения гарантированной производительнности.
- Write-back cache (кэш на запись). Для компенсации низкой производительности на случайную запись небольшая часть SSD в пуле используется для кэширования записи. При этом оставшаяся часть ёмкости SSD может быть использована для ярусного хранения.
Ограничения
Количество дисков и ёмкость:
- До 240 дисков одном пуле (в Windows Server 2012R2, ранее — до 160-ти), но пулов может быть несколько.
- До 80-ти дисков в кластеризованном пуле, до 4-х пулов на кластер.
- До 64-х виртуальных дисков в одном пуле.
- Общая ёмкость пула — до 480ТиБ.
Storage Spaces в кластерах
Одна из самых востребованных возможностей Storage Spaces — использование в failover-кластере Windows. Архитектура решения предельно проста: требуются диски SAS (см. дополнительные требования к дискам и организации томов), SAS JBOD (дисковая полка) с двумя SAS-экспандерами и минимум двумя разъемами для подключения к каждому из экспандеров (для двухузлового кластера). На серверах в качестве контроллеров используются обычные SAS HBA. Мы рекомендуем LSI (любые SAS2 и SAS3 HBA с внешними портами, например LSI 9207-8e), но можно использовать и Adaptec серий 6H и 7H.
Минимальной конфигурация выглядит так: два сервера, в каждом из них двухпортовый SAS HBA с подключением к 2-экспандерному SAS JBOD’у на базе корпуса Supermicro и SAS диски.
Для использования в качестве SAS JBOD’а можно использовать любой корпус Supermicro с двумя экспандерами (E26 или E2C в наименовании для SAS2 и SAS3 соответственно). Каждый экспандер в корпусах Supermicro имеет минимум два разъема x4 SAS (SFF-8087 или SFF-8643), которые можно использовать в качестве входов. При наличии третьего разъема его можно использовать для каскадирования (подключения дополнительных дисковых полок) или для построения топологии с тремя узлами в кластере.
Существуют варианты в одном корпусе, т.н. Cluster-in-a-box (CiB): готовые комплекты SSG-6037B-CIB032 и SSG-2027B-CIB020H на базе Supermicro Storage Bridge Bay с предустановленным Windows Storage Server 2012 R2 Standard, которые отлично подходят для построения отказоустойчивых файловых и/или iSCSI серверов:
Варианты отказоустойчивости и минимальное количество дисков
Настройка Storage Spaces на Server 2016
Настраивать мы будем в виртуальной лабаратории , где существуют 2 сервера , DC1( как контроллер домена с предустановленной Windows Server 2016 Standart) , и сервер Storage Spaces с названием SERVER1 ( с предустановленной Windows Server 2016 Datacenter) . Также на сервер добавлены 5 виртуальных SAS дисков , емкостью по 10gb.
- Переходим Server Manager > File and Storage Services > Servers > Storage Pools
Powershell commands
Удаление сломанного диска из пула
$disk = get-physicaldisk -friendlyname "generic physical disk"
remove-physicaldisk -physicaldisks $disk -storagepoolfriendlyname storagepool1
Get physical disks that can be pooled
Get-physicaldisk | ? {$_.canpool -eq $true}
or$canpool = get-physicaldisk -canpool $true
Create a new pool
New-StoragePool -FriendlyName Pool1 -StorageSubSystemFriendlyName (Get-StorageSubSystem).FriendlyName -PhysicalDisks (Get-PhysicalDisk -CanPool $True)
orNew-StoragePool -FriendlyName Pool1 -StorageSubSystemFriendlyName "Windows Storage" -PhysicalDisks (Get-PhysicalDisk -CanPool $True)
Rename DiskGet-PhysicalDisk | Select-Object friendlyname,UniqueID,size
Get-PhysicalDisk -UniqueId 60022480F0D1DE600607F4F2B10A2917 | Set-PhysicalDisk -newFriendlyName HDDTEST
Rename Virtual DiskGet-VirtualDisk | Set-VirtualDisk -NewFriendlyName Vdisk1
Get disk on Storage Pool
get-storagepool -friendlyname StoragePool1 | get-physicaldisk | select friendlyname , mediatype, usage , bustype
Get physical disk info in the pool
Get-StoragePool Pool1 | Get-PhysicalDisk | Select FriendlyName,MediaType,UniqueId
New non-tiered thin size virtual disk
New-VirtualDisk -StoragePoolFriendlyName Pool1 -FriendlyName vDisk1 -Size 3TB —ResiliencySettingName Simple -ProvisioningType Thin
New non-tiered fixed size virtual disk with write-back-cache
New-VirtualDisk -StoragePoolFriendlyName Pool1 -FriendlyName vDisk1 -Size 3TB -ResiliencySettingName Simple -ProvisioningType Fixed -WriteCacheSize 92GB
Change disk MediaType in pool using FriendlyName (Распределить диски на быстрые и медленные)
Перед применением диск не должен быть участником Виртуального диска или будет ошибка Failed
Set-PhysicalDisk -FriendlyName PhysicalDisk1 -MediaType SSD
Set-PhysicalDisk -FriendlyName PhysicalDisk2 -MediaType HDD
Change disk FriendlyName in pool using UniqueId
Set-PhysicalDisk -UniqueId “{8433b759-314d-11e5-94f3-806e6f6e6963}” -NewFriendlyName “SSD1”
New tiered disk witch custom write-back-cache
New-VirtualDisk -StoragePoolFriendlyName “My Storage Pool” -FriendlyName TieredSpace -StorageTiers @($ssd_tier, $hdd_tier) -StorageTierSizes @(50GB, 300GB) -ResiliencySettingName simple -WriteCacheSize 2GB
Extend virtual disk
Get-VirtualDisk vDisk1 | Resize-VirtualDisk -Size 4TB
Assign a frequent accessed file permanently to the SSD Tier
Set-FileStorageTier -FilePath F:\disk.vhd -DesiredStorageTier ($vdisk1 | Get-StorageTier -MediaType SSD)
ORNew-StorageTier -StoragePoolFriendlyName storagepool1 -FriendlyName HDD_tier -MediaType HDD
New-StorageTier -StoragePoolFriendlyName storagepool1 -FriendlyName SSD_tier -MediaType SSD
Информация взята из источников
https://www.truesystem.ru/solutions/khranenie_danny/360884/
https://habr.com/ru/company/etegro/blog/257089/
https://social.technet.microsoft.com/wiki/contents/articles/11382.storage-spaces-frequently-asked-questions-faq.aspx