Windows storage spaces tier

Время на прочтение4 мин

Количество просмотров32K

Привет, Хабр! Уже много лет я читаю замечательные посты, и, кажется, наконец нашел чем сам могу поделиться с сообществом. 

Сегодня я хотел бы рассказать про технологию создания программного гибридного локального диска на основе SSD и HDD. Впервые я заинтересовался этой технологией когда купил себе новый процессор от Ryzen и прочитал статью про AMD StoreMI, но к сожалению поддержка данного продукта прекратилась, а покупать FuzeDrive или PrimoCache не хотелось. 

upd. оказывается AMD выпустили вторую версию StoreMI, хотя еще недавно заявляли что прекращают поддержку. Напомню, что StoreMI работает только при наличии материнской пла​ты с чипсетом AMD X570, B550, 400 серии, X399 или TRX40.

В серверных версиях windows существует весьма интересная технология Tiered Storage Spaces, которая позволяет легко объединять один или несколько SSD и HDD в общий пул — логический диск, на котором часто используемые “горячие” данные будут незаметно для пользователя переноситься на SSD, а “холодные” данные, к которым пользователь обращается не так часто, будут при этом храниться на HDD. Про настройку данной технологии на серверных продуктах можно почитать тут по ссылке, также уже существует несколько статей на Хабре. Но, как оказалось, данная технология присутствует также и на настольной версии windows, правда настраивается она только через командную строку так как нет GUI. Для упрощения этого процесса существует репозиторий со скриптами, которые позволяют автоматизировать процесс создания tier storage. 

Для хранения важных данных не рекомендуется использовать конфигурации windows storage spaces с выключенным mirroring. Mirroring позволяет создать массив RAID c функцией коррекции ошибок, которая должна помочь сохранить данные в случае поломки одного из дисков, но для этого необходимы дополнительные диски, объем которых не получится использовать для хранения данных.

Перейдем к делу

Для начала советую запустить PowerShell от имени администратора и использовать команду

Get-PhysicalDisk

Параметр CanPool должен соответствовать Trueоколо всех ваших SSD и HDD, которые вы хотите добавить в пул. Если по запросу команды Get-PhysicalDisk у одного из ваших накопителей, которые вы хотите добавить в пул будет состояние False, то необходимо при помощи утилиты diskpart запущенной от имени администратора выполнить команды:

list disk #выбрать номер нужного диска, для примера диск 2
select disk 2
clear

А затем в Powershell запущенной от имени администратора выполнить команду:

Reset-PhysicalDisk ST2000DM008-2FR102 

где ST2000DM008-2FR102 — это параметр friendly name диска, который вы хотите вернуть в состояние True. Обратите внимание, что диски, у которых значение CanPoolравно True будут отформатированы в процессе выполнения скрипта, и, если вы не хотите добавлять их в пул, то необходимо заранее отсоединить эти диски, либо переписать скрипт.

Затем просто клонируйте репозиторий, и запустите запустите скрипт new-storage-space.ps1 Во время выполнения закройте окна, которые будут предлагать вам отформатировать диск, и ждите завершения скрипта.

По поводу того, что будет, если один из дисков пула отвалится. Я пытался просто отключать SSD на выключенном компьютере и, к сожалению, до тех пор пока я его не присоединил SSD обратно и не перезагрузил компьютер, локальный диск не был виден в системе (думал может хотя бы данные, которые были на HDD отображаться будут, но нет).

А что там по скорости?

Автор репозитория указал следующие скорости при тестировании системы:

Также интересным мне показалось сравнение из этого видео на youtube.

Я сам не производил тестирования на чтение, но сравнивал скорость записи на чистый 2 Тб HDD Seagate BarraCuda 7200 rpm и 256 MB cache, и tier storage space из этого же HDD диска и SSD Crucial BX500 на 240 Гб. 

При копировании больших файлов (установленный stalker anomaly, который почти полностью состоит из больших файлов .db размером примерно в 1 Гб) storage tier изначально копировал на скорости чуть более 400 Мб/сек, но затем, скорость копирования опускалась до 110 Мб/сек, что даже меньше чем скорость записи на HDD без storage tier (160 Мб/сек на тех же файлах).

К сожалению, в тот момент когда я производил тесты я не думал что буду писать статью и не догадался использовать snipping tool а просто делал фото на телефон.

слева storage tier справа просто HDD

слева storage tier справа просто HDD

Зато, при копировании порядка 10 Гб стандартных фоток (размер одной примерно 4-5 Мб) storage tier практически стабильно имел скорость порядка 260 Мб/сек против скачущих 180 Мб/сек у HDD.

Для того чтобы посмотреть какой процент данных на самом деле сейчас находится именно на SSD диске нужно в PowerShell с правами администратора запустить:

defrag D: /g /h /#

Наиболее интересными для нас тут являются параметры Percent of total I/Os serviced from the Performance tier — процент данных, которые при чтении были считаны именно с SSD. Также в таблице можно увидеть зависимость процента данных, которые будут взяты с высокопроизводительного накопителя от минимальной требуемой емкости SSD диска.

Для создания задачи автоматической оптимизации используется команда 

Get-ScheduledTask -TaskName "Storage Tiers Optimization" | Start-ScheduledTask

Модификация скрипта

После произведенных тестов мне захотелось изменить несколько вещей. Первое — отдельно изменять процент неиспользуемого места на дисках, так как даже 1 процент от 2 Тб диска это 20 Гб. (объяснение почему нельзя использовать весь диск можно найти тут). По итогу экспериментальным путем при моих параметрах удалось добиться всего 0.13 процента неиспользуемого места на жестком диске.

Во-вторых, я пытался изменить размер параметра WriteCacheSize для увеличения скорости записи данных на tiered storage, но к сожалению даже установив размер в 20 Гб, скорость записи совершенно не отличалась от дефолтного параметра AutoWriteCacheSize (при котором размер WriteCacheSize равен 1 Гб).

Также я нашел информацию, что можно использовать параметр представленный ниже для увеличения скорости, но это может быть небезопасно с точки зрения хранения данных.

Set-StoragePool -FriendlyName "SSHD Storage Pool" -IsPowerProtected $True

Все мои изменения для удобства я залил в свой репозиторий на github.

Выводы

Как я уже отметил выше, не стоит хранить важные данные, если вы используете схожую с моей конфигурацию 1 SSD 1 HDD (без использования Mirroring). Но для хранения не особо нужных тестовых виртуальных машин, игр, фильмов, и другой локальной файловой помойки такое решение подходит отлично. Загрузка игр заметно ускоряется, и обычно со второго запуска скорость на глаз не отличима от запуска с SSD.

ssd, hdd

SSD-диски все еще дороги. Цена на них постепенно понижается, но на единицу хранения они пока еще не могут конкурировать с традиционными HDD. Последние, кстати, вовсе не собираются сдавать свои позиции. И дело не только во все увеличивающихся объемах хранения и снижающейся стоимостью записи на HDD. Традиционные HDD обеспечивают куда большую надежность хранения данных на протяжении длительного времени и существенно большую износостойкость в плане записи. И эти свойства HDD появились не вчера, их планомерно развивали в течение десятилетий. К надежности хранения данных на HDD можно привести множество примеров, когда в различных НИИ и замшелых банках все еще используются жесткие диски выпущенные десятки лет тому назад. И при этом они полностью сохранили свою работоспособность. Кстати, ленточные накопители тоже остались у дел, в тех же банках, финансовых компаниях, замшелых НИИ. Магнитные ленты отлично выполняют функции по архивному хранению информации, например, резервных копий и по самой минимальной стоимости при высочайшей надежности.

Но есть у HDD и неоспоримые недостатки. Это все, что связано со временем доступа и вообще скоростью чтения и записи данных. Конечно, HDD почти что космические ракеты, если сравнить их с решениями на магнитной ленте, но скорости HDD, в нынешних реалиях, все равно недостаточно. По сути, это самый медленный компонент современного ПК. Именно по этой причине на свет появились SSD. Они лишены механической части и соответственно недостатков, связанных со временем доступа и скоростями чтения/записи. В SSD все эти операции происходят «мгновенно» и с максимально доступной производительностью.

А можно ли совместить достоинства HDD и SSD дабы нивелировать их недостатки? Как оказывается можно. Еще до появления SSD обычные HDD уже оснащались крупными буферами из оперативной памяти для ускорения операций чтения-записи. Данная технология помогала лишь отчасти, в основном для операций связанных с записью данных, либо на очень медленных компьютерах, где интерфейс не мог переварить поставляемый жестким диском объем данных. Чуть позже появились комбинации, когда HDD дооснащался еще и небольшим встроенным SSD. SSD-часть в этом случае использовалась как SSD-кэш. Большой популярности подобные решения не нашли, так как объемы SSD встраивались небольшие, а износу они подвергались существенному. Но производители пошли дальше.

На сцену вышла концепция, декларирующая ранжирование данных на дисковом массиве по важности быстрого доступа к ним. Ведь какие-то фотографии с позапрошлогоднего отпуска, можно вполне себе хранить хоть на ленте, а вот файл динамичной игры должен подгружать как можно быстрее. В этой стезе засветилась корпорация Intel, разработавшая совместно с Micron новый вид памяти для твердотельных дисков. Для конечного потребителя новинка предстала под торговой маркой Optane и предназначалась как раз для ускорения операций ввода-вывода традиционных HDD. Иначе работала как «умный» SSD-кэш. Да, кстати, объемы Optane-дисков, как правило, были небольшими, а стоимость соответствовала амбициям электронных гигантов.

Но технологии не стоят на месте, а неумолимо приближаются к технологической сингулярности. Усилиями многих производителей SSD-диски становятся все дешевле и быстрее. И вот в некоторых компьютерах есть только просто SSD-диск и больше ничего. Но, а в мощных рабочих станциях, игровых ПК, да и в большинстве ПК, что стоят на производствах, в офисах и просто по домам разнокалиберных граждан, по-прежнему присутствуют HDD. И вроде бы компьютеры не старые, вполне рабочие, но дисковая подсистема основанная на HDD оставляет желать лучшего, а выкинуть вполне еще рабочий HDD на терабайт, ну просто, рука не поднимается. Но и тут есть решение. Можно использовать технологию по созданию автоматических tiered drives (или иерархичных дисков, лучшего русскоязычного термина я не подобрал). В основе технологии tiered drives лежит объединение быстрых, но небольших SSD-дисков, и медленных, но надежных и объемных HDD-дисков, в один виртуальный пул, тем самым устраняя недостатки каждой из технологий хранения данных.

Автоматичность в случае с tiered drivers означает, что система сама, самостоятельно, без всякого AI, SMS и регистраций, будет определять, какие данные следует помещать на быструю часть (SSD), а какие разумнее оставить на HDD. В некоторых реализациях можно дополнительно «привязывать» те или иные файлы к быстрой части виртуального пула или медленного. Кроме того, некоторые производители дополнительно оснащают свои программные решения по организации tiered drives еще и дополнительным кэшем в оперативной памяти, для еще большей производительности. Но, прежде чем перейти к разбору программным продуктов «без SMS и регистраций», необходимо разобраться в отличиях между SSD-cache, RAID-массивами и tiered drives.

SSD-cache – простой механизм по прозрачному кэшированию данных на быстром SSD-диске перед их записью на медленный HDD-диск, либо аналогичное кэширование данных при чтении. Все зависит от реализации. Технология интересная, но особого признания не нашла в силу очень узкой специализации. Небольшое количество данных она запишет быстро, а вот с чем покрупнее никакого преимущества уже не будет.

RAID-массив — механизм объединения нескольких физических дисков в единый пул. Способ объединения зависит от потребности, но в основном используется в промышленных системах хранения данных, где требуется высокая надежность хранения и низкий процент отказов с нулевым простоем. Как правило в массив объединяются одинаковые по характеристикам диски.

Tiered drive — механизм разделения данных на требующих и не требующих быстрого доступа с соответствующим местом хранения на SSD или HDD.

AMD StoreMI

Мое первое знакомство с tiered drives началось с AMD StoreMI. Еще с первой версии, перелицованной enmotus FuzeDrive. Перейдя с Intel на платформу AMD, я с удовольствием обнаружил, что весь мой парк старых HDD можно безболезненно использовать с моим новым ПК, а заодно и ускорить их до самого доступного максимума при помощи освободившихся SATA SSD (а основными рабочими дисками у меня стали NVME PCI накопители).

Первая версия StoreMI имела существенные ограничения, так, например, можно было использовать для создания tiered drive SSD размером не более 256 Гб. Хорошо, что у меня был именно такой диск. Система tiered drive собралась оперативно, скорость работы с HDD выросла до адекватных показаний, все бегало и приятно урчало. Но локальный праздник жизни был омрачен двумя факторами:

  1. Система падала из-за StoreMI при высокой нагрузке. Например, при копировании данных с HDD на tiered drive от StoreMI.
  2. Спустя некоторое время AMD убрала StoreMI первой версии из открытого доступа, а никакой замены не предложила. Другими словами, если вам потребовалось восстановить систему, в которой присутствует tiered drive StoreMI, то все данные вы потеряете на этом диске, так как подключиться к нему никак.

В качестве дополнительного удобства я несколько раз получал заблокированный tiered drive, так как StoreMI не могла проверить свою лицензию. Ну и полностью отсутствующая поддержка по продукту означала, что использовать его можно только на свой страх и риск. Из плюсов, что были в первой версии StoreMI, можно отметить лишь наличие дополнительно кэша в оперативной памяти, что несколько ускоряло работу всей связки.

Чуть позже AMD выпустила вторую версию StoreMI уже без всяких ограничений на объемы дисков и прочей ереси в виде лицензий. Вторая версия оказалась несовместимой с первой. Провести апгрейд — нельзя. По всей видимости это связано с тем, что вторая версия StoreMI уже была написана без специалистов enmotus. Интерфейс хоть и стал чуть более лицеприятным, но все также отдавал Delphi.

Вторую версию StoreMI я установил на свой второй компьютер, первую установить я на него не успел, апгрейд закончился позже, чем появилась обновленная StoreMI. Установку удалось завершить далеко не с первой попытки. Пришлось ждать около полугода, пока появятся исправления и StoreMI наконец-то заработает и на моем втором ПК.

Вообще, драйвера дисковых подсистем штука до крайности важная. Они не должны содержать никаких ошибок, а их код должен быть «вылизан» программистами и тестировщиками до последнего байта. Ведь малейшая, даже самая крохотная ошибка в программном обеспечении дисковой подсистемы способна привести к краху ценных данных. Ваших данных. И именно по этой причине, мы меняем программное обеспечение как перчатки, но все еще продолжаем работать с файловыми системами, разработанными в прошлом веке. Лучше оставаться на проверенной системе, хоть и чуть медленнее, чем терять свои данные.

Но вернемся к StoreMI второй версии. Через некоторое время использования я с удивлением заметил, что некоторые фотографии, которые я синхронизирую с компьютером оказываются испорченными. Хотя на всех других устройствах они открываются и читаются без особых проблем. Фотографии, как не трудно догадаться, хранятся как раз на диске StoreMI. Дабы отвести напрасные мысли о ненадежности второй версии StoreMI, я решил переустановить Windows.

Но, после первой же перезагрузки после установки второй версии StoreMI (и даже без создания tiered drive) моя установка Windows становилась полностью неработоспособной. UEFI (BIOS) напрочь отказывался видеть загрузочный диск, а инсталляционная утилита Windows не обнаруживала никаких признаков установленной операционки для восстановления. Проведя подряд 7 переустановок операционной системы, я окончательно убедился, что проблема как раз в StoreMI от AMD.

В общем, пришлось идти, искать альтернативу. Ведь к хорошему быстро привыкаешь.

enmotus FuzeDrive

Естественным первым порывом стало желание посмотреть на родную утилиту для организации tiered drives от производителя первой версии StoreMI. Ведь она худо, но все же продолжала работать, тянуть мой домашний комп.

Неоспоримым преимуществом FuzeDrive является наличие RAM-кэша, который дополнительно ускоряет операции записи в системе. Данные сначала записываются в быструю оперативную память, а потом уже отправляются на tiered-диск по мере возможности. Но мой опыт работы с первой версией StoreMI, проблемы с лицензией и аварийные остановки операционные системы при высокой нагрузке на дисковую подсистему несколько охладили мой пыл в отношении FuzeDrive. Пошли искать альтернативу дальше.

ROMEX PrimoCache

Альтернативой FuzeDrive для Windows можно считать PrimoCache от ROMEX. Утилита PrimoCache — применяется как продвинутое решение для кэширования данных при чтении или записи с медленных устройств. В качестве быстрых устройств, используемых для кэширования, в PrimoCache можно применять ОЗУ, SSD-диск и даже Flash-диски. Кстати, в Windows уже есть технология по ускорению медленных накопителей за счет использования кэширования на USB Flash-дисках. Но решение ReadyBoost, опять же, не стало популярным. Ускорение за счет USB-флешки медленного HDD, установленного в медленном компьютере, обычно приводило к еще большим тормозам, так как на обработку данных с Flash-дисков тратились дополнительные ресурсы, которых и так было мало.

Но вернемся к PromiCache. Тут следует учитывать, что это именно кэш, т.к. данные всегда проходят через «быстрое» устройство.

Благодаря такому активному кэшированию при помощи PrimoCache можно получать фантастические скорости общения с жестким диском. Еще одним преимуществом PrimoCache можно считать отсутствие необходимости в переносе данных с «медленного» носителя перед включением его кэширования. Т.е. установка утилиты — максимально безопасна. Кстати, PrimoCache можно скачать на попробовать, в приложении присутствует «триальный» период.

К сожалению, никакой функции по ранжированию данных по иерархии хранения в PrimoCache нет, поэтому ее не следует рассматривать как прямого конкурента StoreMI или FuzeDrive.

При дальнейшем исследовании можно обнаружить, что на рынке присутствует некоторое количество RAM-cache утилит, предоставляющих примерно один и тот же сервис под разными названиями. Не будем их всех перечислять, а перейдем сразу к герою настоящей статьи, а именно…

Служба Storage Spaces появилась в Windows Server 2012 как способ объединения физических дисков в единые пулы, на основе которых могут быть организованы виртуальные диски. Данная же технология мигрировала с Windows Server 2012 и на Windows 8.

Изначально в Storage Spaces были доступны следующие варианты объединения:

  • Simple — дисковое пространство всех дисков объединяется в одно.
  • Two-way mirror — обычное зеркалирование данных по дискам, всего хранится две копии.
  • Three-way mirror — усиленное зеркалирование данных по дискам, всего хранится три копии.

Получался эдакий аналог программного RAID встроенного в операционную систему. Позже, с выходом Windows Server 2012 R2 появились дополнительные виды объединения дисков:

  • Parity — хранение данных с избыточной информацией необходимой для восстановления. Данные «размазываются» сразу по нескольким дискам и в случае выхода из строя части дисков, данные все равно можно будет восстановить благодаря избыточности.
  • Tiered — как раз интересующий нас случай с поддержкой иерархического хранения и сегрегации данных на быстрые и медленные носители.

storage spaces

Состояние дисковой подсистемы после создания Tiered Drive из двух дисков

Последняя редакция также была перенесена в десктопные решения. Создание и управление пулами дисков и виртуальными дисками под Windows 10 (Widows 8 рассматривать уже не будем по причине старости) доступно через апплет (оснастку) Storage Spaces, либо через команды в среде Windows PowerShell. К сожалению, в оснастке Storage Spaces доступны все варианты создания объединения, за исключением Tiered. Он доступен только через команды в PowerShell.

disk management, storage spaces

Как выглядит созданный виртуальный диск в оснастке Disk Management

Как работает механизм сегрегации данных в tiered варианте объединения? Новые данные обычно записываются на HDD, а затем, если к ним часто и много обращаются, то перемещаются уже на SSD. Если же системе требуется записать большое количество небольших и случайных изменений данных, то такие изменения записываются в первую очередь на SSD (используется механизм кэширования на SSD), с последующим перенесением на HDD если это необходимо. Все перемещения между слоями (иерархиями) дисков происходят либо автоматически (если такая опция была выбрана при создании пула дисков), либо во время обслуживания виртуального диска (та самая дефрагментация), либо командами через PowerShell.

Можно ли добавлять диски к пулу после его создания? Да, можно. Причем проделать эту процедуру можно уже в оснастке Storage Spaces. В целом Windows позволяет добавлять в пул более, чем достаточное количество дисков. Общее пространство можно разделять между различными виртуальными дисками. Виртуальные диски можно делать даже больше, чем есть физического места для хранения. В случае исчерпания свободного места на диске он переводится в режим Read Only до тех пор, пока не будет добавлен новый диск в пул дисков.

При использовании хранения данных одновременно на нескольких дисках увеличивается вероятность потери данных по причине выхода из строя накопителя или сразу нескольких. Опытные системные администраторы сразу же упомя́нут, что ценные данные вообще-то нужно периодически резервировать на сменных носителях (те самые магнитные ленты) и хранить их в отдельном помещении или лучше здании (городе, стране и т.п.). Но можно попробовать поднять надежность хранения данных и в случае использования tiered disk при использовании Storage spaces. Во-первых, совершенно никто не мешает организовать аппаратное зеркалирование на уровне UEFI (BIOS) и включать в пул дисков уже зеркалированные диски. Во-вторых, согласно документации от Microsoft, создав пул из hdd и sdd (и соответственно tiered drive) у нас есть возможность создавать на его основе и так называемые вложенные (nested) виды объединения, которые уже могут зеркалироваться или иметь избыточность. Однако, данное действие имеет смысл только при наличии действительно достаточного количества физических дисков для организации зеркалирования или избыточности.

Кстати, даже при использовании обычного tiered объединения некоторые диски можно исключать из пула для их замены (однако, для их замены они должны быть настроены в системе как извлекаемые (hot swap)).

Итак, для добавления своего tiered пула в Windows 10 можно воспользоваться либо командами в PowerShell (в документации Microsoft достаточно подробно описана пошаговая процедура создания tiered drive через PowerShell), либо воспользоваться скриптами win10-storage-spaces от freemansoft специально предназначенными для автоматизации создания Tiered Storage.

storgae spaces

Возможность создания Nested Drives на свободном месте Storage Spaces

Процедура использования скриптов достаточно проста, требуется подредактировать скрипт создания пула, изменить наименование пула и виртуального диска, подумать над буквой, которая будет назначена виртуальному диску. Затем освободить диски от разделов и запустить скрипт создания. Он автоматически добавит в пул все свободные от разделов диски, исправит неверные или отсутствующие идентификаторы у HDD-дисков, создаст один виртуальный диск по всему размеру всех подключенных дисков.

Если вдруг, по каким-то причинам, касающимся безопасности, скрипт не будет исполняться, то необходимо изменить настройки безопасности для скриптов и запустить процедуру заново.

После создания пула им уже можно управлять через оснастку Storage Spaces. Например, в пул можно добавить еще дисков. Однако, если изначально у нас создавался tiered пул на двух дисках (т.е. сформирован Simple пул), то его нельзя будет переконвертировать в Two-way Mirror пул, хотя можно будет организовать Nested Two-way Mirror диск при создании нового виртуального диска.

storage spaces, disk optimization

Storage Spaces после добавления в пул еше одного SSD и проведения оптимизации

При добавлении нового физического диска в пул система сразу предлагает провести оптимизацию. Я добавил к системе еще один 120 Гб SSD-диск (к уже добавленному 240 Гб SSD и 1 Тб HDD) и после оптимизации я получил загрузку в 74% 240 Гб SSD и 50% от 120 Гб SSD. Таким образом, на обоих SSD осталось примерно поровну не назначенного в пул места. И именно это место я могу использовать в качестве пространства для создания нового Storage Space (по сути, это и есть виртуальный диск).

После добавления нового диска и оптимизации можно провести изменение размера виртуального диска. Осуществить эту операцию через оснастку Storage Spaces нельзя, система возвращает ошибку. Дело в том, что легкого способа увеличить размер виртуального диска не существует. Проблема кроется в том, как организуются пулы в Storage Spaces. Все дело в так называемом Number of Columns, а именно в количестве физических дисков, на которых физически располагается виртуальный диск. И для успешного изменения размера виртуального диска необходимо добавить в пул количество диско равное Number of Columns. Звучит немного странно, но таковы ограничения. Однако, в моем случае, Tiered disk создался с пустым количеством Columns, т.к. у меня, при создании пула был только один SSD и один HDD. В общем и целом, мне не удалось увеличить размер общего пула после добавления дополнительного SSD-диска в пул. Тем не менее, оба диска работают в пуле совместно. О проблемах с увеличением или уменьшением места в Storage Pool сообщают пользователи и серверных операционных систем. Не помогает в том числе и ручное создание пулов с несколькими разнокалиберными дисками. Так что экспериментировать со Storage Spaces еще есть куда.

disk mark, storage spaces

Данные по работе виртуального диска (отображается производительность моего SSD-диска)

Для измерения полученного результата можно воспользоваться как обычными средствами типа Crystal Disk Mark или же использоваться специализированное средство от Microsoft DiskSpd. Disk Mark, как и положено будет давать результаты с SSD-диска, так как он первым воспринимает удар синтетической цифровой стихии, а DiskSpd дает более интересный результат, но его нужно еще правильно интерпретировать.

Полезные ссылки:

  1. Intel Optane
  2. RAID
  3. AMD StoreMI
  4. enmotus FuzeDrive
  5. Delphi
  6. ROMEX PrimoCache
  7. Статья на Habr об использовании Storage Spaces
  8. Storage Spaces на Microsoft Docs
  9. Описание утилиты DiskSpd и ее репозиторий на GitHub
  10. Использование DiskSpd
  11. Скрипты win10-storage-spaces
  12. Страница на GitHub Joe Freeman-а, автора скриптов по автоматизации
  13. Оригинальная запись блога Nils Schimmelmann-а, который провел изыскания по включение tiered pool в Win10
  14. Настройка политики запуска скриптов в PowerShell
  15. Использование tiering на LVM под Linux при помощи LVM-Cache
  16. Storage Spaces: Understanding Storage Pool Expansion
  17. Cannot Extend Simple Virtual Disk in Windows Server 2012 R2
  18. Storage Spaces: Understanding Storage Pool Expansion
  19. ReadyBoost


Storage Spaces в Windows Server 2012 R2

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ТиБ.

Столбцы и количество дисков в ВД:

Тип ВД Минимальное число столбцов Соотношение столбцы/диски Минимальное число дисков Максимальное число столбцов
Simple (простой) 1 1:1 1
Two-way mirror (двойное зеркало) 1 1:2 2
Three-way mirror (тройное зеркало) 1 1:3 5
Single parity (одиночная чётность) 3 1:1 3 8
Dual parity (двойная чётность) 7 1:1 7 17

Прочее

  • Виртуальный диск Storage Spaces не может использоваться в качестве загрузочного.
  • Для Storage Spaces можно использовать только диски с интерфейсами SAS, SATA и USB. Тома, презентуемые RAID-контроллерами; тома iSCSI, FC и прочие не поддерживаются.

Требования при использовании в кластере

  • Нельзя использовать «тонкие» диски, допускается только фиксированное выделение ёмкости (fixed provisioning).
  • Минимальное количество дисков для двойного зеркала — 3, для тройного зеркала — 5.
  • В кластере можно использовать ВД с Parity, но только начиная с Windows Storage Server 2012 R2
  • Используемые диски — только SAS с поддержкой SPC (SCSI persistent reservation). Многие ранние SAS-диски не поддердивают SPC. Аналогичное требование существует и для LSI Syncro CS.

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 может масштабироваться до более чем миллиона IOPS при использовании SSD и зеркальных томов. Но производительность на запись в Parity и Dual Parity по-прежнему оставляет желать лучшего, и такие конфигурации без write-back кэша на SSD подходят лишь для узкого круга задач с преимущественной нагрузкой на чтение.

Всестороннее исследование производительности Storage Spaces в разных конфигурациях было проведено компанией Fujitsu. В нашей тестовой лаборатории мы повторили некоторые из этих тестов, дополнив измерение IOPS и пропускной способности значениями средней и максимальной задержек.

Условия тестирования

  • Два процессора E5640
  • 8GB RAM
  • Системная плата Supermicro X8DTL-iF
  • Контроллер Adaptec 6805 (тесты с аппаратным RAID), кэш на чтение включен, кэш на запись включен
  • Контроллер LSI 9211-8i (тесты со Storage Spaces, прошивка P19 IT
  • Диски HGST HUA723030ALA640 (3ТБ 7200об/мин SATA3): 12шт для тестов RAID-10 vs Storage Spaces 2-way mirror и 13шт для тестов RAID-6 vs Storage Spaces dual parity
  • 2шт SSD Intel 710 100ГБ для тестов с tiering’ом и write-back кэшом
  • Microsoft Windows Server 2012 R2 Standard
  • Для генерации нагрузки применялся FIO версии 2.1.12

Для тестирования использовался скрипт, реализующий серию 60-секундных раундов нагрузки с различными шаблонами и варьированием глубины очереди. Для определения окна установившегося состояния используется та же методика, что и в нашем пакете для тестирования SSD, разработанного в соответсвии со спецификацией SNIA Solid State Storage Performance Test Specification Enterprise v1.1. Для всех замеров использовался тестовый файл объёмом 100ГиБ, кроме тестов с ярусным хранением, где использовался файл объёмом 32ГиБ.

Для наглядности использовались шаблоны аналогичные использованным в тестах от Fujitsu:

Шаблон Доступ Чтение Запись Размер блока, КиБ
File copy случайный 50% 50% 64
File server случайный 67% 33% 64
Database случайный 67% 33% 8
Streaming последовательный 100% 0% 64
Restore последовательный 0% 100% 64

Результаты

RAID-10 vs Storage Spaces 2-way mirror

Сравнивались: RAID-10 из 12-ти дисков на контроллере Adaptec 6805, 2-way mirror из 12-ти дисков (6 столбцов), 2-way mirror из 12-ти дисков с 2ГиБ write-back кэшом на двух SSD Intel 710 и ярусным хранением — SSD-tier’ом из тех же объёмом в 40ГБ (40ГБ SSD + 200ГБ HDD).

Шаблоны Database (IOPS), File copy, File Server (пропускная способность). Для шаблона Database используется логарифмическая шкала. По графикам видно, что 2-way mirror заметно уступает в производительности традиционному аппаратному RAID-10: в два с лишним раза на шаблонах Database и File copy, примерно в 1,5 раза на шаблоне File Server. Выравнивание результатов с ростом глубины очереди больше 16-ти нельзя рассматривать с точки зрения практического использования из-за неприемлемого роста задержек (графики ниже). Серьезный рост производительности обеспечивает использование SSD в качесте кэша на запись и быстрого яруса. Всего пара даже устаревших на сегодняшний день Intel 710 поднимает производительность на случайном доступе малыми блоками на порядок. Есть смысл использовать такое сочетание не только для OLTP, но и для нагруженных файловых серверов.

Шаблоны Database, File copy, File Server: средняя задержка. Никаких сюрпризов: Storage Spaces проигрывает, но естественно вырывается вперёд при добавлении SSD.

Шаблоны Database, File copy, File Server: максимальная задержка. При более высокой средней задержке Storage Spaces демонстрирует более стабильные значения — максимумы при небольшой глубине очереди меньше на шаблонах Database и File copy.

Шаблоны Streaming, Restore: пропускная способность. Зеркальный Storage Spaces не уступает аппаратному RAID при последовательном чтении, но существенно уступает при последовательной записи (шаблон Restore). Рост при запредельных значениях глубины очереди (>64) имеет значение только в синтетических тестах из-за большого значения задержки. Использование SSD в данном случае оказывается бесполезным из-за последовательного доступа и соотношения числа HDD и SSD. Обычные HDD, тем более в количестве 12-ти штук, отлично справляются с последовательной нагрузкой и оказываются существенно быстрее пары SSD.

Шаблоны Streaming, Restore: средняя задержка.

Шаблоны Streaming, Restore: максимальная задержка. Появляется хоть какая-то польза от SSD в виде стабилизации значения задержки..

RAID-6 vs Storage Spaces dual parity

Сравнивались: RAID-6 из 13-ти дисков на контроллере Adaptec 6805 и Dual Parity из 13-ти дисков (13 столбцов). К сожалению, у нас не оказалось минимально требуемого для использования в таком пуле количества SSD аналогичных использованным в первой серии тестов — для Dual Parity их нужно минимум три. Но соответствующее сравнение производительности с SSD tier’ом и кэшированием записи есть в вышеупомянутом исследовании Fujitsu.

Шаблоны Database (IOPS), File copy, File Server (пропускная способность). Storage Spaces с Dual Parity существенно отстаёт от аппаратного RAID во всех сценариях со случайным доступом. Это не удивительно с учётом того, что в распоряжении Adaptec 6805 есть 512МБ RAM-кэша, что позволяет существенно оптимизировать неудобный для RAID-6 доступ на случайную запись. Среди тестов, проведённых Fujitsu, есть вариант «RAID-6 8xHDD против Dual Parity 8xHDD + 1ГБ WB кэша на 3xSSD» — на всех трёх шаблонах производительность при добавлении WB-кэша на SSD не уступает аппаратному RAID, причём без использования ярусного хранения.

Шаблоны Database, File copy, File Server: средняя задержка.

Шаблоны Database, File copy, File Server: максимальная задержка. Ситуация аналогична предыдущей серии тестов с зеркальным Storage Spaces. При более высокой средней задержке Storage Spaces демонстрирует более стабильные значения — максимумы при небольшой глубине очереди меньше на шаблонах Database и File copy.

Шаблоны Streaming, Restore: пропускная способность. Dual Parity хорошо справляется с чтением, но с последовательной записью наблюдается давно известная катастрофическая ситуация с отставанием более чем на порядок. Использование даже большого по объёму write-back кэша (можно выделить диски целиком, присвоив диску Usage=Journal) на нескольких SSD может на какое-то время компенсировать относительно кратковременные нагрузки на запись, но при непрерывной записи (например, при использовании в системе видеонаблюдения) кэш рано или поздно будет заполнен.

Шаблоны Streaming, Restore: средняя задержка. Для шаблона Restore используется логарифмическая шкала.

Шаблоны Streaming, Restore: максимальная задержка (логарифмическая шкала).

Преимущества и недостатки Storage Spaces

Преимущества

  • Снижение затрат на оборудование.

    Для простых проектов с одиночным сервером: SAS HBA или чипсетный контроллер вместо аппаратного RAID-контроллера; возможность использовать недорогие диски SATA, формально не совместимые с аппаратными RAID (например, WD Red) вместо дисков nearline класса.

    Для проектов с одиночной неотказоустойчивой СХД и большими требованиями к плотности размщениния дисков можно использовать такие платформы (72 диска в 4U, до 432ТБ сырой ёмкости при использовании 6ТБ дисков):

    Для кластерных решений: простые дисковые полки (SAS JBOD’ы) вместо дорогостоящих СХД.

  • Высокая производительность. Решение на базе Storage Spaces и SSD легко масштабируется по пропускной способности и IOPS путём добавления дисковых полок и HBA вплоть до нескольких миллионов IOPS и десятков ГБ/с. Сравнительно невысокая производительность обычных HDD может быть компенсирована применением ярусного хранения с размещением «горячих» данных на SSD и/или использованием SSD для кэширования операций записи.

    Использование tiering’а (ярусного хранения) в сочетании с кэширование записи на SSD в Storage Spaces в большинстве случаев работает эффективнее, обходится дешевле и имеет большие пределы масштабирования в сравнении с реализацией SSD кэша на аппаратных RAID-контроллерах (например, LSI CacheCade или Adaptec MaxCache).

  • Гибкое использование дискового пространства. В Storage Spaces можно комбинировать на одной дисковой группе (в одном пуле) тома с любым уровнем отказоустойчивости, при добавлении в пул SSD — с любым соотношением ёмкости между HDD- и SSD-ярусами и/или ёмкостью write-back кэша.

    Для всех видов томов, за исключением использования в кластере, томов с ярусным хранением и томов Dual Parity поддерживается Thin Provisiong (тонкое выделение ресурсов) — это позволяет выделять ёмкость только по мере реального использования.

Недостатки

  • Низкая производительность на запись при использовании обычных HDD, особенно в Parity и Dual Parity

    Определенный тип нагрузки на запись (случайный доступ небольшими блоками, сосредоточенный в определённой области) может быть легко компенсирован добавлением SSD в качестве быстрого яруса и кэша на запись. Но продолжительную линейную нагрузку на запись компенсировать не получится, так что рекомендовать использование Storage Spaces, например, для видеонаоблюдения нельзя.

    Для бюджетных кластерных решений под Windows (с похожей архитектурой на базе SAS JBOD) с высокой нагрузкой на запись мы советуем использовать вместо Storage Spaces специальные RAID-контроллеры LSI Syncro CS.

  • Ограниченное масштабирование кластера. Для использования Storage Spaces в кластере необходим совместный доступ к дискам через дисковую полку с двумя SAS-экспандерами (SAS JBOD). SAS JBOD не является отдельной самостоятельной СХД, поэтому кластер с использованием Storage Spaces может состоять максимум из 4-х узлов (необходим специальный SAS JBOD с 4-мя входами на каждый экспандер), а в типовых конфигурациях с SAS JBOD Supermicro — максимом из 3-х узлов (или 2-х при необходимости подключать дополнительные JBOD’ы каскадом).

Советы по оптимальному использованию Storage Spaces

  • При использовании в кластере используйте только SAS HDD и SSD, избегайте использования SATA дисков с дополнительными интерпозерами.
  • При создании виртульных дисков учитывайте число т.н. столбцов. Данный параметр может очень сильно влиять на производительность. Нестандартное число столбцов можно задать только при использовании PowerShell. Использование большего числа столбцов повышает производительность, но накладывает ограничение на добавление дисков в пул.

    Пример (виртуальный диск Dual Parity, 13 столбцов, 1000ГиБ, Fixed Provisioning):


    New-VirtualDisk -StoragePoolFriendlyName Pool1 -FriendlyName VD02 -ResiliencySettingName Parity -NumberOfColumns 13 -PhysicalDiskRedundancy 2 -Size 1000GB -ProvisioningType Fixed

  • Избегайте использования виртуальных дисков Parity и Dual Parity при наличии большой нагрузки на запись и/или случайного доступа малыми блоками.
  • Одним из самых востребованных на сегодня решений является небольшой 2-узловой кластер для Hyper-V. Из-за конкурентного обращения нескольких ВМ достаточно высокий процент нагрузки на дисковую подсистему будет состоять из случайного доступа. При расчёте дисковой подсистемы планируйте использование зеркальных виртуальных дисков (2-way mirror — стандартное двойное зеркалирование, для особых сценариев можно использовать тройное), производительность Parity и Dual Parity будет достаточно только для архивных данных. Планируйте использование минимум двух SSD для tiering’а и кэширования записи.
  • Избегайте добавления дисков с разной производительностью (например, HDD 7200 и 10000 об/мин) в общий пул либо создавайте виртуальные диски только из HDD с одинаковой производительностью, выбирая их вручную в GUI или через параметр -PhysicalDisksToUse при создании через PowerShell. Диски SSD должны быть либо вынесены в отдельный пул, либо использоваться совместно с HDD только в качестве быстрого яруса и/или write-back кэша.

Ссылки

  • Часто задаваемые вопросы по Storage Spaces
  • Обзор Storage Spaces
  • Storage Cmdlets in Windows PowerShell
  • Пример PowerShell скрипта для создания пула, ярусов и ВД
  • Deploy Clustered Storage Spaces
  • Корпуса Supermicro с SAS-экспандерами
  • White Paper: Fujitsu Server PRIMERGY Windows Server 2012 R2 Storage Spaces Performance
  • Storage Spaces — Designing for Performance

First published on TechNet on Oct 20, 2013

Storage Tiers allow for use of SSD and hard drive storage within the same storage pool as a new feature in Windows Server 2012 R2.  If you’ve not read Jose Barreto’s Step-by-step post on this subject already, it is a great source for links about Storage Tiers as well as a fantastic place to find examples of how to use PowerShell cmdlets to implement Storage Tiers with Storage Spaces.   In this episode, I’m going to show you how to implement Storage Tiers using mostly the UI.

If you’re not familiar with Storage Tiers, the idea is to be able to mix Solid State Disk (SSD) storage with conventional disks (HDD).  However, Storage Tiers 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.   That’s a pretty high level summary…and a pretty awesome concept.  Previously, in my basement lab I had two different pools:  one for each type of storage.

If implementing tiers using PowerShell, some calculations may be required…and it looks a bit complicated if you’re just attempting to try out.   Granted, below are quite a few screen shots and this is a lengthy post.  However, the process using the UI is fairly easy.   I made one diversion into PowerShell to show how to define MediaTypes for storage devices if they’re not detected automatically.  The technique I use for that is very similar to Jose’s example but is another variation to show that you’re not limited to just one technique.

If you’ve read my recent post about expanding a storage pool , you may have a better understanding of how Storage Spaces uses columns .  Using the UI to configure Storage Tiers will attempt to use the defaults for the number of columns.  Using some quick and easy PowerShell during the creation process, you may change the column defaults for a specific storage pool.

Remember: If you have difficulty reading any of the screenshots below, you can obtain a full size image by clicking on them.

1. The first step involves attaching the devices you intend to use.  You must have at least one SSD and one physical drive attached.   For this example, I chose 4 SSD devices, and 9 1 TB drives.   This is indeed an odd arrangement but I’ve chosen it with a purpose: to show the layout of a defined virtual disk, and to show that Storage Spaces will use what it can from this arrangement and leave remaining space for other uses.   In this example, I’ve connected the devices and can see them within Server Manager.

Figure1: Server Manager view of attached disks

2. Next, drop into Storage Pools within Server Manager to see the Primordial pool of available disks.

Figure 2: The Primordial Pool

3. Right-click the Primordial pool, and create a new pool.

Figure 3: Create a new pool

4. Give the new pool a name.

Figure 4: Naming the pool

5. In my example, I’m choosing 2 of the disks to be hot spares.   The only reason I chose the specific devices below is because they’re the top drives in each external eSATA cabinet and are easy for me to keep track of this way.  😉  In this section of the wizard, you will also choose the devices to include in the pool.  You may click the checkbox on the line with column labels to select all available devices should you so choose.

Figure 5: Assign device uses

Figure 6: Manually setting MediaType with PowerShell

Notice that the SSD devices were detected as SSD media.  However, in this case the physical drives show as unknown.   If yours are not detected like in this example, they should be set correctly which can be done using PowerShell.  We will proceed for now but will need to correct this later.  Leaving the majority of the devices as Unknown will result in error in a later step.  Next, confirm choices and proceed.

Figure 7: Confirm Selections

Figure 8: Successful Pool Creation

6. If you proceed forward from here and attempt to create a virtual disk, you may receive the following status message.  Also note that the new option to create tiered storage is grayed out.  This is because the devices in the pool currently don’t meet the minimum requirements due to the Unknown MediaType of my physical disk storage.

Figure 9: Can’t proceed if storage type needs to be defined

7. The above problem is an easy fix.  If your storage was properly detected as HDD, then you can skip this step.  Otherwise, open a PowerShell prompt and use commands like in the example below:

Figure 10: Assigning MediaType to Unknown disks.

In PowerShell, the disks show as Unspecified.  Since all my physical disks show as Unspecified that are part of the pool, I’m simply using the PowerShell WHERE command (can be abbreviated with a question mark) to filter results and only act on those devices that need definition…setting them to HDD.

8. This is also a good time to override the defaults on number of columns to be used within this particular storage pool.  By default, as you’ll note from the first command below, the pool is defined to use automatic selection.  I am planning to use a mirroring on the virtual disk to be created and want to use two columns.   If I were going to create a simple volume, I would want 4 columns as I have 4 SSD drives.   You may also be thinking that I’m crazy for mirroring SSD drives.  SSD drives are not exempt from failure.

Figure 11: Changing resiliency defaults for a storage pool

9. Getting back to the UI…now is a good time to refresh Server Manager.  The UI needs to be refreshed to be aware of the changes just made or subsequent steps may yield errors.

Figure 12: Refresh Server Manager

10. Next, we will create the virtual disk.  You don’t have to create the tiers first in PowerShell because the UI will do this for you by using the available checkbox to enable tiering.

Figure 13: Create the virtual disk

Figure 14: Use the checkbox to enable Storage Tiers

11. Select the layout for the storage.  In my example, I want to use mirroring.

Figure 15: Choose resiliency level

12. Select two-way mirror.

Figure 16: Two-way mirror

13. When using tiers, you must use fixed provisioning.

Figure 17: Fixed Provisioning

14. Here you get to view the size of the tiers for the virtual disk.   Both tiers will be put together to make the resulting virtual disk.  In this example, I’m going with the maximum for each.

Figure 18: Selecting SSD and HDD tier size

15. Reviewing the selections below, you see that out of 9TB of available data, the resulting virtual disk is only 3.6TB.  Remember that we used all the available SSD space (which was smaller than available HDD space to begin with), and that by choosing mirroring that we’re really using 7.2TB for a 3.6TB volume.   Any space not used will remain available in the pool.  The maximum size of 3.6TB for this virtual disk is due to the overall disk layout.

Figure 19: Confirm selections

Figure 20: Completion of virtual disk creation

16. Next step is to create a volume on the virtual disk.  Note that because of using tiers, you must use all available space on the virtual disk just created.

Figure 21: Create a volume

Figure 22: Choosing max size in New Volume Wizard

17. Assign a drive letter for the volume.

Figure 23: Assign drive letter.

18. Specify a volume label if you choose.

Figure 24: Volume Label

19. Confirm choices.

Figure 25: Final Confirmation

Figure 26: Last step may take a while to complete

20. Once everything has completed, if you look at the storage pool again, you will see that space remains available in the pool — even though we chose the maximum size for the virtual disk and volume.  This is due to the storage configuration I chose for this example.  Based on the configuration options I chose for the virtual disk, Storage Spaces chose the largest virtual disk it could create based on the available disk layout and columns needed.  Therefore, essentially the space on two remaining 1TB drives remains for whatever I might want to use it for.

Figure 27: Remaining Space

21. After the wizard completes, the volume may be used for data.  You may or may not know that there are scheduled tasks associated with Storage Tiers.  Initially they are not enabled, but after establishing the first tiered storage, they will be enabled automatically.  After successful completion, those tasks should appear enabled as follows.

Figure 28: Task Scheduler jobs.

I hope this helps to illustrate how to create tiered storage with Storage Spaces using Windows Server 2012 R2.  Having the option to use different classes of storage within the same virtual disk is a great feature to have as an option for your storage needs.

Prior Posts about Storage Spaces

http://blogs.technet.com/b/askpfeplat/archive/2012/10/10/windows-server-2012-storage-spaces-is-it-for-you-could-be.aspx

http://blogs.technet.com/b/askpfeplat/archive/2012/12/24/windows-server-2012-how-to-import-a-storage-pool-on-another-server.aspx

http://blogs.technet.com/b/askpfeplat/archive/2013/09/25/storage-spaces-understanding-expansion.aspx

Jose Barreto’s Storage Tiering Step-By-Step with PowerShell

http://blogs.technet.com/b/josebda/archive/2013/08/28/step-by-step-for-storage-spaces-tiering-in-windows-server-2012-r2.aspx

TechNet Reference for Get-VirtualDisk

http://technet.microsoft.com/en-us/library/hh848644.aspx

TechNet Reference for Get-StoragePool

http://technet.microsoft.com/en-us/library/hh848654.aspx

Until next time!

Martin

Storage spaces is the mechanism or technology that enables you to virtualize storage by grouping disks into storage pools, and then creating virtual disks called storage spaces from the available capacity in the storage pools.

Let’s say that we have a server that’s got a couple of 1 TB hard drives, and let’s say for the sake of redundancy we decide that we’re going to mirror these disks. So we create a RAID 1 mirror on these physical disks, and then we create a volume in Windows on top of that mirror and every time data is written to this volume, it actually gets written to both disks. Now if one of the physical disks fails, we can continue operating, since the other disk will have a copy of the data. However, someone will need to replace the failed disk in the mirror so it can become healthy again. So there’s some manual work and administrative intervention required. The other downside with this setup is that there’s limited flexibility. Once we mirror these two volumes, our total available capacity is going to be fixed at 1 TB, so if we create a volume that uses all that space, we don’t have easy options for extending it later, at least not without a lot of manual work. So Storage Spaces removes some of these limitations when we’re working with local or direct-attached storage; it gives us some flexibility, because we can over-provision our volume sizes and add more physical disks later. And there’s also more flexibility in terms of resiliency and recovering from failed disks. So as an alternative, let’s say that we’ve got a Windows Server 2016 machine, it has a number of local disks. These could be internal disks inside the server, or they could be from direct-attached storage. But instead of implementing a traditional RAID setup, we can instead pool all the physical disks together within the operating system, and from there we can create a storage space, also referred to as a virtual disk, using some or all of the storage in the pool. Physical disks size don’t have to be identical; they can be different sizes and they can even be different types. So we could have a mixture of SATA, SAS, SSD-based disks, or even USB disks. Now when we created a virtual disk using the storage in the pool, we’re creating a flexible storage space. Keep in mind that the virtual disk terminology used here is different than VHDX. These are not VHDX files. So the naming is a little bit confusing, so just remember that when you’re working with Storage Spaces, virtual disks are a different concept.

I have set up six different disks that we’ll be connecting to for the purposes of creating a storage spaces and tiered storage. The four disks on the left side are 278 GB disks. I’ve also 2 additional disks, of 557 GB in size.

screenshot.21.jpg

One of the very first tasks we’ll do is we’ll take two of these 278 GB disks and connect them together, squoosh their contents together to create a single storage space that we could either host files on or make available on the network.

screenshot.22.jpg

Let’s get started. Open Server Manager –> File and Storage Services –> Disks

If I take a look at the available disks that are connected up into this server we can see all six of these that are currently attached. You can see that they’re in an unknown state; they haven’t been partitioned or formatted.

screenshot.11

In order for us to use storage spaces, to configure it, we’ll begin by creating what is called a storage pool.

  • Storage pools. A collection of physical disks that enable you to aggregate disks, expand capacity in a flexible manner, and delegate administration.
  • Storage spaces. Virtual disks created from free space in a storage pool. Storage spaces have such attributes as resiliency level, storage tiers, fixed provisioning, and precise administrative control.

So on the left-hand side I’m going to go to Storage Pools, and you can see by default we have this concept of a primordial pool, and that means all available disks that we can use to create storage pools. We can see all disks under physical disks.

screenshot.12.jpg

Right-Click on empty space (or click on tasks –> New Storage Pool) and select New Storage Pool

screenshot.1

New Storage Pool Wizard will pop-up. Click Next.

On Specify a storage pool name and subsystem page, here we need to give it a name so in my case it will be StoragePool1, once done click Next.

screenshot.2

On Select physical disks for the storage pool page, here are the disks that we can add to the pool. I will select two 278 GB disks. Now here’s where things start to get really cool. So, when I configure these disks, one of the things I can do is determine how I actually want the disks to be available or to be configured when I’m creating this storage pool. So, by default I have these two disks currently set up here as automatic for their allocation, but I could if I want configure one of them to be, for example, a hot spare instead of an automatic disk (hot spares can be used to automatically replace failed disks in the storage pool that’s being used by a storage space) or I could set it up to be a manual disk instead of an automatic disk. By having two of these set to automatic, that allows me actually to create a little later on a storage space that supports one of the RAID levels, like RAID 1 with mirroring.

screenshot.13.jpg

screenshot.14.jpg

Now we’re not going to configure that here because we’ll take care of that when we begin creating the volume that’s on the storage space, but remember, I’ve got a couple of these disks in here because I want to create a mirrored, which will be a highly available storage space, when I get to the next step in the process. Click Next

On Confirmation page, click Create

screenshot.8.jpg

Once the process is complete, we can take a look back here under Storage Pool and see the storage pool that we’ve created with its 556GB of capacity and nearly 555 GB of free space. With this storage pool, we’ve created the next thing we need to do is actually to create a disk, a virtual disk, out of the storage pool. This virtual disk here is more or less like the actual disks that you’ve been dealing with in the past in previous operating systems when you’ve been connecting to them through the disk management console. Now one important thing to recognize here is that a virtual disk also exists as kind of an additional layer of abstraction between the storage pool, the actual disks we’re working with, and the volumes that we’ll ultimately make available from the storage of Windows files. So, as you’ll see here, we can create multiple virtual disks that exist in a storage pool and then create multiple volumes that exist in each virtual disk. Let’s create new virtual disk by right-clicking on our storage pool and selecting new virtual disk

screenshot.6.jpg

When we create a new virtual disk, we have to identify which storage pool we want to use. This will be the 556 GB storage pool we created. Click OK

screenshot.8

On Before you begin page, click next

On Specify the virtual disk name, give your virtual disk a name. (Remember, virtual disks and Storage Spaces are different than the VHDX files)

Notice the setting here where it says Create storage tiers on this virtual disk. So if I had both magnetic and SSD-based disks in the storage pool, I could make use of storage tiers here. Click Next

screenshot.9

Specify enclosure resiliency page, Enclosure Awareness gives you some resiliency if you have storage failures. So notice the note at the bottom telling you that you need to have at least three enclosures and the physical disks in those enclosures must be set for automatic allocation in the storage pool. So in that scenario, you’d have multiple enclosures connected via direct-attached storage, and then you’d have some resiliency there and the means to recover from some kind of hardware failure. Well let’s go ahead and hit Next.

screenshot.11.jpg

Select the storage layout page, Here we determine what the storage layout will be. Now, that can be no high availability at all, here is the Simple layout, where we essentially stripe the data across those physical disks. This would be equivalent to a RAID 0 configuration. If I have at least two disks or even as many as five disks, I could choose the Mirror configuration. I need two disks to support the loss of a single disk at a time and five disks to protect from two simultaneous disk failures. The Mirror is equivalent to RAID 1. Last in the list is Parity— the Parity is equivalent to a RAID 5, where if I have at least three disks, that would allow me to protect me from a single disk failure, whereas seven disks would protect me from two disk failures. The Parity option here offers some different performance characteristics with different consumption characteristics as well. I will choose Mirror here because I have a couple of disks that I want to stripe this content across, once done click next

screenshot.12

Specify the provisioning type page, we need to decide which provisioning type we are going to configure or use.

  • Fixed –  This provision type means that we’re going to create a virtual disk that cannot exceed the actual storage pool capacity
  • Thin – This provision type means that we can create volume and make it much bigger than the storage pool can accommodate and then we can add physical disks later. So with Thin provisioning we can create volume that is much larger than the total size of the storage pool. Over time, if we start to get close to using up the actual total capacity of the storage pool, Windows will give us a warning and we can easily just add more physical disks to the pool, and that’s one of the great things about Storage Spaces.

I’ll choose the thin provisioning and click next

screenshot.13

Specify the size of the virtual disk page, for the size I’ll enter 1024 GB and hit Next, and click on Create.

screenshot.14

With the virtual disk built notice we’ve got an option at the bottom to create a new volume when the wizard closes, so let’s leave that enabled and click on Close, and that’ll take us into the wizard to create a volume, just like we’ve been using all along. So let’s hit Next on Before you begin page.

screenshot.15.jpg

The New Volume Wizard goes through a bunch of very similar steps like what we’ve seen already because there are these multiple tiers of storage that we’ll be provisioning out for different reasons. So, we’ll connect up to our server and you can see our disk 7 that we’ve created and that storage spaces disk titled VirtualDisk1. I’ll choose Next,

I will choose the entire size of the volume, so I’ll fill the disk with that volume that we’re creating. Click Next

screenshot.17.jpg

I will give it a Drive letter here, D is fine, click next

screenshot.18

Here we’ll choose the NTFS file system, I’ll go ahead and update the volume lable to Volume1, and we’ll go ahead and create that volume.

screenshot.19.jpg

On Completion page click close. Click on our storage pool, and down at the bottom on the left-hand side we can see our virtual disk, 1 TB in size. We can also see the physical disks that maps to in the storage pool.

screenshot.7.jpg

If we ever got to the point where we are getting close to exceeding the actual underlying physical storage limits, we could add more physical disks by right-clicking on storagepool1 and selecting Add Physical Disk

screenshot.21.jpg

Heading back over to Disks on the left-hand side you can see now a Disk 7, which is our virtual disk; you can see the Bus Type is Storage Spaces and kind of just looking at the bottom windows, we can see the D volume with a 1 TB capacity. Over on the right-hand side, we actually see what it is on the storage pool. We see that there’s 553 GB free. So that’s the process of creating the storage pool and the storage space.

screenshot.22

Tiered Storage

Another functionality that’s built into Windows Server is the ability to take our storage spaces and configure them just so that they can support what is called tiered storage. Now up until this point, we have dealt with the creation of a single storage space using 2 disks. These are a pair of HDD disks attached to this machine and they are mirrored together.

screenshot.2

SSDs, especially the Enterprise type SSDs that you would want to put into a server can be an order of magnitude more expensive than your traditional hard disks, especially when you’ve got a very large amount of space that you need to host for other kinds of uses, like the storing of Office documents. In these circumstances, you might not want to buy SSDs for storing Office documents, but you still want to make sure that you have good performance for users that are coming in. Tiered storage provides you the ability to accomplish this by taking your hard disks, your traditional hard disks, and connecting them together with your SSD drives to create that single visible storage space. The neat part here is that the Windows storage subsystem can handle making sure that the right documents end up on the SSDs and then documents that are really no longer being used as much can be deprioritized back onto the traditional spinning hard disks to be made available the next time a person needs to make use of them. This use of SSDs as a caching functionality is essentially what we’re attempting to accomplish here with tiered storage.

Now in order for us to be able to use storage tiering, we have to have both SSD and traditional spinning hard drives, which we don’t actually have at this point because all disks that are configured for this storage pool are actually HDD. I will show you really quick just kind of a little hack that you can implement when you’re demoing this at home so that you can create tiered storage without having to go out and buy both SSD and traditional spinning hard drives.

The way in which we actually build tiered storage starts in server manager by creating another storage pool. I have 3 disks left which I will use for Tiered Storage.

screenshot.1

I already created new Storage Pool (StoragePool2). As you can see all my disks have Media Type set to Unknown.

screenshot.15

So let’s change Media Type to HDD and SSD. To be able to change Unknown to SSD or HDD we need to open powershell and run Set-PhysicalDisk command. You can type in Get-PhysicalDisk first to get a list of all PhysicalDisks. I need to convert Physical Disk 01, 04, 05 and 06, so Physical Disk 04 and 05 will be SSD and Physical Disk 01 and 06 will be HDD.

Set-PhysicalDisk -Friendlyname PhysicalDisk04 -MediaType SSD (This command will reset the mediatype to SSD so that Windows believe that 04 is Solid State Drives. Run this command to convert 05 to SSD and the same command for disk 1 and 6 but change SSD to HDD.

screenshot.16.jpg

Now let’s go back to Server Manager and then refresh the view. If I’ve done this correctly I should be able to see indeed I’ve reconverted these 4 disks now so that Windows believes they’re the kind of disks that we need in order to do tiered storage.

screenshot.17.jpg

In order to create that tiered storage, what I need to do is from this storage pool actually create a virtual disk out of the pool. We’ve already seen how this process works when we created Storage Spaces. Right-Click on StoragePool2 and select new Virtual Disk

screenshot.13

When we create a new virtual disk, we have to identify which storage pool we want to use. This will be our second storage pool StoragePool2. Click OK

screenshot.18.jpg

I’ll create a new disk called VirtualDisk2 and in this case I will choose to create the storage tiers on the virtual disk. Click Next

screenshot.15.jpg

On the Specify enclosure resiliency page, click next

On Select the storage layout page, I’ll choose Mirror. Click Next

screenshot.17.jpg

I’ll choose fixed disks here because storage tiers do require fixed disk provisioning

screenshot.18

Here I have a slightly different option for how I’m going to determine what size is going to be provisioned for both the faster tier, the SSD tier, and then the standard tier, the hard disk, the traditional spinning disks tier. I can choose maximum size for both of these because I’m not really interested in adjusting the size. Click Next and Create

screenshot.20.jpg

Last step is to create a volume. I’ll skip the process of creating a volume because you’ve already seen how that works back on Storage Spaces part. When we create volume on that storage and provision it out to users, it will allow those users to copy files into that location and not have to worry whether they’re in the cache or whether they’re back on the spinning disk, the Windows subsystem will take care of everything for you.

What we covered

  • What is Storage Spaces and How to configure it
  • What is Tiered Storage and How to configure it

Thanks for reading!

Cheers,

Nedim

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Установочная флешка windows 10 под linux
  • Что такое загрузчик возобновления windows
  • Как обновить wsl windows 10
  • Настройка сетевых служб в windows xp
  • Mail and calendar windows 10 что это за программа