Storage spaces ssd cache windows 10

В статье рассматривается способ соединение дисков SSD и HDD в одном устройстве, для устранения взаимных недостатков, штатными средствами OS Windows.

ssd, hddSSD-диски все еще дороги. Цена на них постепенно понижается, но на единицу хранения они пока еще не могут конкурировать с традиционными 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


Пока некоторые читатели (да что уж там, и писатели — например, я) наслаждались в отпуске теплыми летними денечками, известный автор нашего англоязычного блога Адам Бертрам подготовил краткий обзор Windows Storage Spaces. В него он включил, в частности, сведения о настройке Windows Storage Spaces на популярных конфигурациях. Перевод его статьи я и предлагаю вашему вниманию. 

Во многих дата-центрах и серверных фермах для хранения данных используются HDD и SSD. Статистика, однако, сообщает о том, что после трёх лет работы 10% дисков становятся негодными. 

Конечно, те организации, которые заботятся о целостности и сохранности своих данных, держат руку на пульсе, а также отслеживают и другие факторы риска — будь то человеческий фактор, железо или софт. И тут тем, кто работает с Windows-инфраструктурой, могут помочь Windows Storage Spaces. Ведь их RAID-подобная функциональность (то, что мы видим в File Explorer как виртуальные диски) весьма полезна в деле обеспечения резерва мощностей хранения. 

Гибкие возможности масштабирования тоже привлекательны: можно объединить 3 и более драйвов в единый сторадж-пул и затем формировать на его основе “стораджики” нужного размера. А поскольку при работе с пулом формируются и сохраняются дополнительные копии для ваших данных, то проблемы с одним из дисков не приведут к потере всего и вся. А если понадобилось больше места? Просто добавь воды еще дисков в пул.

Storage Spaces для Windows 10

— Он забирается на самую высокую сосну и оттуда планирует.

— Ага, простите, что планирует?

— Он прыгает и планирует.

(“День радио”)

Даже если сценарий развертывания, который вы хотите воплотить, входит в число самых популярных, и инструкция к нему коротка и вроде даже сходу понятна, этап подготовки и планирования все равно никто не отменял. Итак: 

Если вы используете дисковые пространства Storage Spaces на машине с Windows 10, то рекомендуется обеспечить наличие минимум 2 дисков помимо системного. Эти диски могут быть как встроенными, так и внешними. Поддерживаются SSD; можно комбинировать SATA, USB и SAS.

Количество дисков рассчитывается исходя из того, какой метод обеспечения отказоустойчивости вы хотите применить. Есть вот такие варианты:

  • Simple (простой) — требует наличия минимум двух дисков. Хоть этот метод и дает хорошую производительность, но ничем вам не поможет в случае отказа. Его можно использовать, например, если вы настраиваете storage space для хранения временных данных (например, файлов видео-рендеринга, файлов-черновиков в графических редакторах, и так далее).

  • Mirror (зеркальный) позволяет сохранять несколько копий данных на случай отказа. Так, Two-way mirror spaces хранят две копии данных, и с ними вы переживете отказ одного из дисков. Для их организации потребуется минимум два диска. Three-way mirror spaces позволят пережить отказ двух дисков, а для их организации потребуется минимум пять. Зато хранить в таких storage spaces можно самые разнообразные данные.

  • Parity (с контролем четности) — рекомендуется для хранения архивных и стриминговых данных. Хранят несколько копий на случай отказа. Если вы хотите обеспечить отказоустойчивость в случае проблемы с одним диском, то в сценарии с Parity spaces вам понадобится минимум три диска, а на случай проблемы с двумя — минимум семь дисков. 

После того, как вы все рассчитали и подготовили, можно организовать собственно Storage Spaces. Для этого в Windows 10 нужно выполнить вот такие шаги:

  1. Проверить, что диски, которые вы планируете задействовать, у вас подключены.

    Важно! Если вы укажете, что в сторадж-пул хотите включить размеченный диск, имейте в виду, что Windows безвозвратно удалит все разделы и файлы на нём. До начала работы сделайте резервную копию всего, что вам дорого на этом диске! 

  2. Для простоты в поле поиска в панели задач вводим Storage Spaces и из полученного списка выбираем Storage Spaces.

  3. Кликаем Create a new pool and storage space.

  4. Выберем нужные нам диски и затем кликнем Сreate new storage pool.

  5. Указываем имя, буквенное обозначение и файловую систему для нового сторадж пула.

  6. На случай сбоя рекомендуется выбрать метод обеспечения отказоустойчивости (Resiliency) как одну из следующих опций: Two-way mirror, Three-way mirror или Parity

    Важно! Помните про количество дисков, которые потребуются в каждом из указанных вариантов, о чем мы говорили выше. Если, допустим, вы предпочтете Two-way mirror, то для нового storage space будет создаваться две копии данных. Так что для такого сценария понадобится минимум два диска (помимо системного). 

  7. Затем задайте максимальный размер стораджа для Storage Spaces.

    Примечание: Можно указать значение, превышающее размер сторадж-пула — когда место будет заканчиваться, вы просто добавите еще один диск.

  8. Когда с настройками покончено, нажимаем Create storage space.

Оптимизация работы

Рекомендуется своевременно оптимизировать работу с дисками. Вот что советует делать Microsoft:

При добавлении новых дисков в существующий пул рекомендуется оптимизировать использование диска. При этом некоторые данные будут перемещены на новый диск, чтобы оптимизировать использование емкости пула. Это стандартное действие при добавлении нового диска в обновленный пул в Windows 10: флажок Optimize to spread existing data across all drives будет установлен по умолчанию.

Однако если вы сняли этот флажок или добавили диски до обновления пула, вам нужно вручную оптимизировать использование диска. Для этого в поле поиска на панели задач введите Storage Spaces, выберите Storage Spaces из списка результатов поиска, а затем щелкните Optimize drive usage.

Автономный сервер

Если у вас один отдельно взятый сервер, то для настройки на нем дисковых пространств Storage Spaces есть подробная инструкция от Microsoft, на русском языке и даже с картинкой. Storage Spaces поддерживаются для Windows Server 2019, Windows Server 2016, Windows Server 2012 R2 и Windows Server 2012.

Обратите внимание: до начала настройки нужно обеспечить наличие одного или нескольких пулов, а также проверить конфигурацию на соответствие ряду требований (они перечислены в разделе «Предварительные условия»).

На базе сторадж-пула можно создать несколько виртуальных дисков. (Windows идентифицирует их как обычные диски, которые могут быть отформатированы.)

Для их создания можно использовать File and Storage Services; в настройках можно указать thin provisioning либо fixed provisioning, а также размер. Дополнительные настройки можно задать с помощью команд PowerShell. 

Кластеры и Storage Spaces Direct

Если вы работаете с кластером и используете для каждой его ноды СХД с прямым подключением (DAS), то Storage Spaces Direct могут оказаться вполне разумным и эффективным вариантом по сравнению с NAS и SAN. Storage Spaces Direct отличаются хорошей масштабируемостью и возможностями управления. Технология Storage Spaces работает наряду с кэшированием, RDMA и поддержкой СХД для разных уровней (tiers). Помимо этого, поддерживаются диски NVMe.

Storage Spaces Direct поддерживаются для Windows Server 2019 Datacenter, 2016 Datacenter и Insider Preview Builds. Можно создать конвергентное или гипер-конвергентное пространство.

Вкратце, основные этапы развертывания Storage Spaces Direct — это:

  1. Развертывание Windows Server — установка и настройка ОС, добавление доменных учеток, настройка ролей и необходимых фич.

  2. Настройка сети (этот этап не относится к сценарию развертывания Storage Spaces Direct на виртуальных машинах).

  3. Конфигурация собственно Storage Spaces Direct — очистка дисков и разделов, настройка кластеров, настройка Storage Spaces Direct, создание томов, развертывание необходимых виртуальных машин. 

  4. Для конвергентной инфраструктуры — развертывание масштабируемых файловых серверов, настройка ролей, создание шар, настройка ограниченного делегирования Kerberos.

Все эти этапы очень подробно описаны здесь (на русском языке).

Возможен сценарий, при котором все физические диски содержатся в enclosures с общим доступом — это т.н. JBOD enclosure. Такая инфраструктура должна соответствовать требованиям Windows Certification, а также включать в себя идентичные SAS HBA (имеющие сертификацию Storage Spaces). Такие диски в кластере не должны иметь встроенную функциональность RAID.

Storage Spaces vs. RAID

Как водится, у Windows Storage Spaces и RAID есть свои преимущества и свои недостатки. Об этом уже написана не одна сотня строк (например, здесь). Вкратце:

  • У RAID есть два аспекта: аппаратный и программный — а Windows Storage Spaces, так сказать, является software-driven, настраивается целиком через графический интерфейс или командную строку. 

  • Для программных RAID, как и для Storage Spaces отсутствуют ограничения по числу сокетов (у традиционных RAID они есть).

  • ОС по-разному “видит” диски в RAID и в Storage Spaces — диски RAID предстают как цельный юнит (даже если у физических дисков разная емкость), что может приводить к неоптимальному использованию свободного пространства. Для Storage Spaces такой проблемы нет, так как есть доступ к отдельным дискам.

  • Если говорить о производительности, то RAID 0 превосходит Storage Spaces с режимом simple mode примерно вдвое. Однако на скоростях 4K они уже сравнимы. RAID 1 быстрее выполняет последовательные операции чтения, зато Storage Spaces в режиме two-way mirror mode вдвое быстрее выполняет операции записи, нежели RAID 1. Что касается hardware RAID, то операции чтения и записи для них гораздо быстрее, чем Storage Spaces в режиме parity mode.

Ссылки

Общие сведения о дисковых пространствах Storage Spaces

Развертывание Storage Space Direct

Дисковые пространства в Windows 10

Кейс о развертывании Storage Space Direct компанией-провайдером Veeam


  1. phuzz

    phuzz
    This is a title

    Joined:
    28 May 2004
    Posts:
    1,712
    Likes Received:
    27

    Server 2012R2 (and up) has a technology called «Storage Tiers». Basically this is the software equivalent of a hybrid-SSD, you have a mixture of SSDs and HDDs in the same storage space, frequently used data is kept on the SSDs, with less accessed data on the HDDs. Theoretically this gets you the benefits of the speed of an SSD with the cheap space of an HDD.

    Now this is normally only interesting to admins working with servers with lots of disks, but it turns out that, even though there’s no indication in the GUI, all of the functionality is still part of Windows 10. The only problem is we have to do everything via PowerShell.
    The following is a write up/how to guide from me puzzling out how to make it work. I’ve been running a tiered mirror volume for a few months now, and it works like you’d expect. I’m posting this because I’ve only seen one other person document it, and hopefully this gets indexed by some search engines.

    You will need:

    • Some knowledge of PowerShell, and ideally of the Storage Spaces cmdlets.
    • You’ll have to run all of these commands from an elevated command prompt, which gives you all the access rights you need to delete all your own data, so be careful eh?
    • At least two SSDs
    • At least two HDDs

    Go right ahead and plug your empty harddrives and SSDs in. I already had three HDDs in a Storage Pool, so this will deal only with adding the SSDs.

    Plug in your SSDs (oh, and make sure you’ve backed up any data you care about)

    In disk management, (attempt to) delete any existing partitions and make sure the new SSDs have a GPT partition table

    Get-PhysicalDisk
    
    FriendlyName               SerialNumber         CanPool OperationalStatus HealthStatus Usage            Size
    ------------               ------------         ------- ----------------- ------------ -----            ----
    KINGSTON SV300S37A60G      AAAAAAAAA            False   OK                Healthy      Auto-Select   55.9 GB
    ST4000VN000-1H4168         AAAAAAAAA            False   OK                Healthy      Auto-Select   3.64 TB
    TOSHIBA DT01ACA200         AAAAAAAAA            False   OK                Healthy      Auto-Select   1.82 TB
    ST2000DM001-9YN164         AAAAAAAAA            False   OK                Healthy      Auto-Select   1.82 TB
    Samsung SSD 840 EVO 250GB  AAAAAAAAA            False   OK                Healthy      Auto-Select 232.89 GB
    KINGSTON SV300S37A60G      AAAAAAAAA            False   OK                Healthy      Auto-Select   55.9 GB
    TOSHIBA External USB 3.0   AAAAAAAAA            False   OK                Healthy      Auto-Select   3.64 TB
    SAMSUNG MZVLW512HMJP-00000 AAAAAAAAA            False   OK                Healthy      Auto-Select 476.94 GB

    There’s our two drives, handily both have the same name. If they had different FriendlyNames, or the same as another disk that we didn’t want to mess with, this would be more complicated.
    (and yes, I’ve blanked the serials)

    Get-PhysicalDisk -FriendlyName "KINGSTON SV300S37A60G"
    
    FriendlyName          SerialNumber     CanPool OperationalStatus HealthStatus Usage          Size
    ------------          ------------     ------- ----------------- ------------ -----          ----
    KINGSTON SV300S37A60G AAAAAAAAAAAAAAAA False   OK                Healthy      Auto-Select 55.9 GB
    KINGSTON SV300S37A60G AAAAAAAAAAAAAAAA False   OK                Healthy      Auto-Select 55.9 GB
    

    CanPool is false :( why? Fortunately there is a way of finding out

    Get-PhysicalDisk -FriendlyName "KINGSTON SV300S37A60G" | Format-Table FriendlyName,OperationalStatus,Size,MediaType,CannotPoolReason
    
    FriendlyName          OperationalStatus        Size MediaType CannotPoolReason
    ------------          -----------------        ---- --------- ----------------
    KINGSTON SV300S37A60G OK                60022480896 SSD         Insufficient Capacity
    KINGSTON SV300S37A60G OK                60022480896 SSD         Insufficient Capacity
    

    (we could have piped the command to fl, aka Format-List, which shows you all the data Get-PhysicalDisk has, and this is what I actually did first, but it produces too much output to paste without making this even longer, so we Format-Table instead and only ask for a few columns. I’ll use the short form of ft from now on)

    Insufficient Capacity? wtf?
    Turns out that there was still a partition table or something on the disk, so, we need to reset it.
    ***warning, this is where you have to start being careful, otherwise you’ll wipe a perfectly good harddrive***

    Reset our two SSDs. Note, I can get away with referring to them by name because I only care about these two drives.

    Reset-PhysicalDisk -FriendlyName "KINGSTON SV300S37A60G"
    

    Did it work?

    Get-PhysicalDisk -FriendlyName "KINGSTON SV300S37A60G" | ft
    
    FriendlyName          SerialNumber     CanPool OperationalStatus HealthStatus Usage          Size
    ------------          ------------     ------- ----------------- ------------ -----          ----
    KINGSTON SV300S37A60G AAAAAAAAAAAAAAAA True    OK                Healthy      Auto-Select 55.9 GB
    KINGSTON SV300S37A60G AAAAAAAAAAAAAAAA True    OK                Healthy      Auto-Select 55.9 GB
    

    yay!

    Add-PhysicalDisk -PhysicalDisks $SSDs -StoragePoolFriendlyName "Storage Pool"

    (Yes, my main storage pool is called «Storage Pool», imaginative eh?)

    See if it worked

    Get-StoragePool "Storage Pool" | Get-PhysicalDisk | ft FriendlyName,OperationalStatus,HealthStatus,Size,MediaType
    
    FriendlyName          OperationalStatus HealthStatus          Size MediaType
    ------------          ----------------- ------------          ---- ---------
    KINGSTON SV300S37A60G OK                Healthy        59861106688 SSD
    ST4000VN000-1H4168    OK                Healthy      4000762036224 HDD
    TOSHIBA DT01ACA200    OK                Healthy      2000381018112 HDD
    ST2000DM001-9YN164    OK                Healthy      2000381018112 HDD
    KINGSTON SV300S37A60G OK                Healthy        59861106688 SSD
    

    More yay! (They’re also showing up in the GUI as well)

    Now time to add tiering:

    New-StorageTier -StoragePoolFriendlyName "Storage Pool" -FriendlyName SSD_Tier -MediaType SSD
    New-StorageTier -StoragePoolFriendlyName "Storage Pool" -FriendlyName HDD_Tier -MediaType HDD

    Check what we have:

    Get-StorageTier | ft FriendlyName,MediaType,PhysicalDiskRedundancy,ResiliencySettingName,Interleave
    
    FriendlyName MediaType PhysicalDiskRedundancy ResiliencySettingName Interleave
    ------------ --------- ---------------------- --------------------- ----------
    SSD_Tier     SSD                            1 Mirror                    262144
    HDD_Tier     HDD                            1 Mirror                    262144
    

    So each storage tier is limited to what kind of virtual disk you can create; Mirror, Parity and so on. Now, I’ve only got two SSDs so Mirror is the best I can do with them as part of a virtual disk, but I’ve got three HDDs and I’d like to be able to use them for a parity space, with some write caching, so I need a third storage tier set up for parity. It turns out I can have multiple tiers using the same drives:

    New-StorageTier -StoragePoolFriendlyName "Storage Pool" -FriendlyName HDD_Parity_Tier -MediaType HDD -ResiliencySettingName Parity

    And now we have three:

     Get-StorageTier | ft FriendlyName,MediaType,PhysicalDiskRedundancy,ResiliencySettingName,Interleave
    
    FriendlyName    MediaType PhysicalDiskRedundancy ResiliencySettingName Interleave
    ------------    --------- ---------------------- --------------------- ----------
    SSD_Tier        SSD                            1 Mirror                    262144
    HDD_Tier        HDD                            1 Mirror                    262144
    HDD_Parity_Tier HDD                            1 Parity                    262144
    

    Right, lets create a mirrored space, with storage tiers. Hmm, I want 1TB for now, and I don’t want to use all the SSDs, so I think 955GB on the harddrives, and 45 on the SSDs. This is the only downside of storage tiers as they stand right now, you have to specify up front how big you want the disk, and you can’t expand it later.
    Much easier working with short variables, so I’m going to specify the two tiers I want to work with right now:

    $ssd_tier = Get-StorageTier -FriendlyName "SSD_Tier"
    $hdd_tier = Get-StorageTier -FriendlyName "HDD_Tier"

    Right, now the moment of truth:

    New-VirtualDisk -StoragePoolFriendlyName "Storage Pool" -FriendlyName "Tierd-Mirror" -StorageTiers @($ssd_tier, $hdd_tier) -StorageTierSizes @(45GB, 955GB) -ResiliencySettingName Mirror -WriteCacheSize 1GB

    (took me a few goes before it worked, because I specified 55GB of SSD and 3955GB of HDD, neither of which is available, I am an idiot)
    Lets see if it worked:

    Get-VirtualDisk | ft FriendlyName,HealthStatus,ResiliencySettingName,ProvisioningType,AllocatedSize
    
    FriendlyName HealthStatus ResiliencySettingName ProvisioningType AllocatedSize
    ------------ ------------ --------------------- ---------------- -------------
    Vid          Healthy      Parity                Thin              348429221888
    Tierd-Mirror Healthy                                             1073741824000
    Mirror       Healthy      Mirror                Thin              330980917248
    

    Hmm, resiliency setting is blank, I’m sure that’ll be fine…
    And now it’s showing up in the GUI, just need to format it from there.

    And now to check it’s doing what it should. To force Windows to optimise the storage (ie to move the commonly accessed data to the SSDs), we use good old defrag

    defrag m: /g /h /#
    Microsoft Drive Optimizer
    Copyright (c) Microsoft Corp.
    
    Invoking tier optimization on Mirror (M:)...
    
    
    The operation completed successfully.
    
    Post Defragmentation Report:
    
            Volume Information:
                    Volume size                 = 999.81 GB
                    Free space                  = 649.21 GB
    
            Storage Tier Optimization Report:
    
                    % I/Os Serviced from Perf Tier  Perf Tier Size Required
                    100%                            18.31 MB *
                    95%                             17.37 MB
                    90%                             16.43 MB
                    85%                             15.56 MB
                    80%                             14.62 MB
                    75%                             13.68 MB
                    70%                             12.81 MB
                    65%                             11.87 MB
                    60%                             10.93 MB
                    55%                             10.06 MB
                    50%                             9.12 MB
                    45%                             8.18 MB
                    40%                             7.31 MB
                    35%                             6.37 MB
                    30%                             5.43 MB
                    25%                             4.56 MB
                    20%                             3.62 MB
                    15%                             2.68 MB
                    10%                             1.81 MB
                    5%                              896.00 KB
    
            * Current size of the Performance tier: 44.87 GB
              Percent of total I/Os serviced from the Performance tier: 89%
    
            Size of files pinned to the Performance tier: 0 bytes
            Percent of total I/Os: 0%
    
            Size of files pinned to the Capacity tier: 0 bytes
            Percent of total I/Os: 0%
    

    I think we can now declare victory :)
    Hopefully this is enough to help other people do similar stupid things, like use undocumented, unsupported, enterprise storage technologies on their home machines.


  2. daveypro

    daveypro
    Minimodder

    Joined:
    5 Jul 2011
    Posts:
    116
    Likes Received:
    15

    nice guide mate, i will have a look at this later at home.


  3. phuzz

    phuzz
    This is a title

    Joined:
    28 May 2004
    Posts:
    1,712
    Likes Received:
    27

    Right, little update here. This week I’ve started to get some weird hangs in Windows, which I tracked down to anything that attempted to access my tiered mirror drive.
    A quick check in the Storage Spaces GUI confirmed my fears, one of the SSDs I was using as a cache was showing a warning. Fortunately 60GB SSDs are cheap as chips these days, so I grabbed a new one (well, two, I’m expecting the other Kingston SSD to go bad one of these days), and went to plug it in.
    First problem, the bad SSD had got so bad that the system wouldn’t boot with it plugged in. Fortunately I’d made a note of the serial number of the failed one where it was listed in the StorageSpaces GUI.

    So, here’s my little howto on «oh **** one of my tiered SSDs has died how do I fix it?»

    First, go into the Storage Spaces GUI and work out which one it is. Make sure to write down the SN so you unplug the right one (important if you’re using otherwise identical drives).
    Get hold of a new disk of at least the same size (and maybe think about grabbing a pre-emptive replacement for the other SSD) and plug it in. (I’ve temporarily unplugged my DVD drive to give me a spare SATA port).
    Once the new disk is connected, boot up and go check it’s detected in Disk Management, or use Powershell:

    Get-PhysicalDisk
    Number FriendlyName               MediaType   CanPool OperationalStatus  HealthStatus Usage            Size
    ------ ------------               ---------   ------- -----------------  ------------ -----            ----
           SSD1                       SSD         False   Lost Communication Warning      Retired      55.75 GB
    2      TOSHIBA                    HDD         False   OK                 Healthy      Auto-Select   3.64 TB
    3      ST4000VN000-1H4168         HDD         False   OK                 Healthy      Auto-Select   3.64 TB
    1      SSD2                       SSD         False   OK                 Healthy      Auto-Select  55.75 GB
    9      Corsair Force LS SSD       SSD         False   OK                 Healthy      Auto-Select   55.9 GB
    4      WDC WD40EZRZ               HDD         False   OK                 Healthy      Auto-Select   3.64 TB

    The top line is my broken (and now disconnected) SSD, the new one is disk no. 9 (the Corsair drive)

    Now the new disk had some previous partitions on, so they need to be removed first. As there’s only one Corsair drive this isn’t too tricky: WARNING, this will wipe the disk, so be really bloody careful that it’s the right one!

    Reset-PhysicalDisk -FriendlyName "Corsair Force LS SSD"

    Now we just need to add it to the pool:
    First, create a variable who’s contents is the new disk

    $corse = Get-PhysicalDisk -FriendlyName "Corsair Force LS SSD"

    Now add that disk

    Add-PhysicalDisk -PhysicalDisks $corse -StoragePoolFriendlyName "Storage Pool"

    (the name of your storage pool may vary, but it will probably be the one above).
    That’s it for the Powershell this time, although I suppose there’s no reason you couldn’t run Optimize-StoragePool right now.
    Otherwise, let’s head back to the GUI and make sure our new disk is showing up. (I forgot to get screenshots so you’ll just have to imagine this bit).
    Hopefully it’s showing up, so click the ‘Change Settings’ button, and then ‘Optimise drive usage’. This will copy all the data onto the new disk. This might take a little while to complete, but when it has, you can go ahead and click the ‘Remove’ button next to your fialed drive, so it’s compltely gone from the pool.
    That’s it, disk crisis averted, and my tiered storage space is still ticking along (and the strange lags and hangs I was getting are gone now that the failing SSD is disconnected).


  4. Stephan Ertel

    Stephan Ertel
    What’s a Dremel?

    Joined:
    15 Jul 2021
    Posts:
    3
    Likes Received:
    0

    Nice Overview, i’m thankfully was using it and pushed it bit more in some unsupported direction.. :) Before i follow with replacing failed disks, i have some kind of «mixed tiers» running which i believe i could not get to run on the Server.. i believe.. definitely not with the GUI :)

    This can be achieved by setting the resiliencySetting-Stuff when creating the StorageTier(s). I’m running my Fast Tier on 2 120GB SSD as a Stripe Set with doubled performance.
    The Capacity Tier i have started with 3 250 GB HDDs Running as Parity array, and added a 4th 250 GB disk later as i found that it is really working great..
    The continuously automatic running (every 4 hrs.) optimization is really great, i nearly never getting low hdd speed on day by day usage, drop your data on it and it manages, to deliver it back at always — at least felt — SSD speed..
    I was not sure if «-ResiliencySettingName Simple» will force to a RAID-0 like Stripe-Set, so the «-NumberOfColumns 2» is the just to make that sure an set’s the striping over 2 disks.
    HDD Tier is straight forward plain RAID-5 -Kind Parity, a to put some failure tolerance, always a nice idea — even in pretty young Harddisks like mine :)
    my disks are about 14 years old, ran, from the youngest one 29.000hrs, to the leader with 43.000hrs… but running fine, they are just Consumer Disks with a MTBF of 30.000 i believe..

    Short: Performance Tier: Stripeset 2xSSD, Capacity Tier 3 (extended later to 4) disks running as Parity Array:

    New-StorageTier -StoragePoolFriendlyName Pool -FriendlyName SSDTier -MediaType SSD -ResiliencySettingName Simple -NumberOfColumns 2
    New-StorageTier -StoragePoolFriendlyName Pool -FriendlyName HDDTier -MediaType HDD -ResiliencySettingName Parity

    !!! NOTICE: !!! On the next command, the «New-VirtualDisk»
    You MUST NOT enter any ot the ResiliencySetting — Stuff. It will always lead into an error as you cannot match 1 possible resilliency setting of the VirtualDisk and store it on BOTH, already DIFFERENTLY configured tiers.. ALL the parameters, columns, copies, faultDisktolerance — all the stuff.. when mixing 2 different raid-types and use it Tiered together — all this has to be set on the tier…

    !!! And you will enjoy the fun getting your not-too-high StorageTierSize for the Parity Array.. some value below 66% of all your ohysical Disk Total Size in the Pool.
    For example For One 250 GB its something around 150GB Per Disk, maybe below.. Notice that «250GB»-Label just derived from originally 250.xxx.xxx.xxx Bytes,
    which turns out into something around in 232GB which

    (No need to tell: next command requires to fill the $xxx_tier variables like mentioned above. — no guarantee for typo’s — created some time ago, i don’t have a secont pool of 6 disks :))

    New-VirtualDisk -StoragePoolFriendlyName "Storage Pool" -FriendlyName "TierDisk" -StorageTiers @($ssd_tier, $hdd_tier) -StorageTierSizes @(220GB, 600GB) 

  5. Stephan Ertel

    Stephan Ertel
    What’s a Dremel?

    Joined:
    15 Jul 2021
    Posts:
    3
    Likes Received:
    0

    Now the Process how to properly Exchange a broken Disk, forcing to start a rebuild and finally removing the no longer existent reference to the disintegrated Disk.
    you will mention that 50% of my Pool running on VHDs… Thats just because i don’t own more same sized disks. Each VHD also is on a competely seperated physical disk.
    The crazy thing is, there are 4 more left 10 Physical devices are connected 3NVMe / 2SSD / 5HDD… Im a Disk messy :)

    Situation like written before: A Tiered Storage of a Performance Tier: Stripeset 2xSSD (total 220GB), and a Capacity Tier 4 disks running as Parity Array (Total 600GB).
    One of the HDDs just died, it completely disintegrated from this world, we’ll never get it back :)
    By the way, The VirtualDisk on this is running fine all the time, slower, but fine, with no loss or interruption as the HHD-Tier runnig a Parity array which tolerates 1 failed disk.
    The status looks like this:

    FriendlyName ResiliencySettingName FaultDomainRedundancy OperationalStatus                 HealthStatus   Size FootprintOnPool StorageE
                                                                                                                                   fficienc
                                                                                                                                          y
    ------------ --------------------- --------------------- -----------------                 ------------   ---- --------------- --------
    TierDisk                                                 {Degraded, Incomplete}          Warning      820 GB         1.11 TB  72,45 %
    

    1. I’ve added a brand new, same sized HDD like the broken one was. Just connected, not added to pool yet.
    2. Some preparing config on the disk.. setting a name fo know where its stored.. at this point, you will also set the «-MediaType» if its not correct
    After that, the current pool whith the broken one — new disk is still not added.

    PS C:WINDOWSsystem32> Get-PhysicalDisk -DeviceNumber 11
    Number FriendlyName           SerialNumber        MediaType CanPool OperationalStatus  HealthStatus Usage            Size
    ------ ------------           ------------        --------- ------- -----------------  ------------ -----            ----
    11     Msft Virtual Disk                          HDD       True    OK                 Healthy      Auto-Select 232.88 GB
    
    PS C:> Get-PhysicalDisk -DeviceNumber 11 | Set-PhysicalDisk -NewFriendlyName ON_WD1TB_HDD.vhdx
    PS C:> Get-StoragePool pool | Get-PhysicalDisk
    
    Number FriendlyName          SerialNumber         MediaType CanPool OperationalStatus  HealthStatus Usage            Size
    ------ ------------          ------------         --------- ------- -----------------  ------------ -----            ----
    0      ST9250315AS           5VCBFP3X             HDD       False   OK                 Healthy      Auto-Select 232.89 GB
    4      Intenso  SSD Sata III AA000000000000006710 SSD       False   OK                 Healthy      Auto-Select    118 GB
    10     ON_WDNVME2_SSD.vhdx                        SSD       False   OK                 Healthy      Auto-Select    119 GB
           ON_WD1TB_HDD.vhdx                          HDD       False   Lost Communication Warning      Auto-Select    250 GB
    2      SAMSUNG HD250HJ       S0URJ90Q217456       HDD       False   OK                 Healthy      Auto-Select 232.88 GB
    9      ON_500GB_HDD.vhdx                          HDD       False   OK                 Healthy      Auto-Select 232.89 GB
    

    Then i’ve isolated or filtered the defect disk entry — and tested it — good idea to test the query before piping it into something that will SET or DO something on the result :)

    3. IMPORTANT STEP.. the last line in this block «Set-PhysicalDisk -Usage Retired» Retires the failed disk.
    Tell the system, it will never come back, it should no longer wait for — (and — not tested but logical outcome — it might tell the system to use the next added disk as replacement — not as extension of the pool)

    PS C:> Get-StoragePool pool | Get-PhysicalDisk -HealthStatus Warning
    
    Number FriendlyName      SerialNumber MediaType CanPool OperationalStatus  HealthStatus Usage         Size
    ------ ------------      ------------ --------- ------- -----------------  ------------ -----         ----
           ON_WD1TB_HDD.vhdx              HDD       False   Lost Communication Warning      Auto-Select 250 GB
    
    PS C:> Get-StoragePool pool | Get-PhysicalDisk -HealthStatus Warning | Set-PhysicalDisk -Usage Retired
    

    And just straight through
    4. Add the spare disk into the Storage-Pool, the «-Usage AutoSelect» should trigger the System to start the rebuilt more or less immediately.

    5. We can confirm this by the status change on the VirtualDisk, from «Missing» into «InService»

    PS C:>
    Add-PhysicalDisk -StoragePoolFriendlyName Pool -PhysicalDisks (Get-PhysicalDisk -DeviceNumber 11)  -Usage AutoSelect
    PS C:> Get-StoragePool pool | Get-PhysicalDisk
    
    Number FriendlyName          SerialNumber         MediaType CanPool OperationalStatus  HealthStatus Usage            Size
    ------ ------------          ------------         --------- ------- -----------------  ------------ -----            ----
    0      ST9250315AS           5VCBFP3X             HDD       False   OK                 Healthy      Auto-Select 232.89 GB
    4      Intenso  SSD Sata III AA000000000000006710 SSD       False   OK                 Healthy      Auto-Select    118 GB
    10     ON_WDNVME2_SSD.vhdx                        SSD       False   OK                 Healthy      Auto-Select    119 GB
           ON_WD1TB_HDD.vhdx                          HDD       False   Lost Communication Warning      Retired        250 GB
    2      SAMSUNG HD250HJ       S0URJ90Q217456       HDD       False   OK                 Healthy      Auto-Select 232.88 GB
    9      ON_500GB_HDD.vhdx                          HDD       False   OK                 Healthy      Auto-Select 232.89 GB
    11     ON_WD1TB_HDD.vhdx                          HDD       False   OK                 Healthy      Auto-Select 232.88 GB
    
    PS C:> Get-StoragePool pool | Get-VirtualDisk
    
    FriendlyName ResiliencySettingName FaultDomainRedundancy OperationalStatus HealthStatus   Size FootprintOnPool StorageEfficiency
    ------------ --------------------- --------------------- ----------------- ------------   ---- --------------- -----------------
    TierDisk                                                 InService         Warning      820 GB         1.33 TB           60,33 %
    

    You could, if needed, or just to have a progress bar on the screen, manually invoke
    the rebuild by:

    PS C:> Get-StoragePool pool | Get-VirtualDisk | Repair-VirtualDisk

    From now, the Tiers will make it back into produktion just after finishing the rebuilt, we still have one thing left — the broken disk (basically the dead reference to it — as the pysical disk already disintegrated from this planet). You can invoke it now, while the rebuild is running but it will take — and block your 2nd Powershell-Window — as long as the rebuild takes… because it waits for it…

    6. Pretty straigt forward, Remove-PhysicalDisk
    7. Be happy to watch your system went back to healthy..

    *but just maybe for PS-Rookies :) notice the «Remove-PhysicalDisk» command wants to have the «-PhysicalDisks» as system object, no name or sth, as well as you cannot pipe it into it.. You will need to either to query the disk before and set that into a $variable, or — the lazy way i did, put your disk-query into brackets for the value of the parameter «-PhysicalDisks» — that forces the command inside the brackets to be run before the command around it, so the parameter will be set with the output of the command inside brackets…

    PS C:> Remove-PhysicalDisk -StoragePoolFriendlyName Pool -PhysicalDisks (Get-StoragePool pool| Get-PhysicalDisk -Usage Retired -HealthStatus Warning)
    
    Bestätigung
    Möchten Sie diese Aktion wirklich ausführen?
    Removing a physical disk will cause problems with the fault tolerance capabilities of the following storage pool: "Pool".
    [J] Ja  [A] Ja, alle  [N] Nein  [K] Nein, keine  [H] Anhalten  [?] Hilfe (Standard ist "J"): j
    PS C:WINDOWSsystem32> Get-Storagepool pool| Get-PhysicalDisk
    
    Number FriendlyName          SerialNumber         MediaType CanPool OperationalStatus HealthStatus Usage            Size
    ------ ------------          ------------         --------- ------- ----------------- ------------ -----            ----
    0      ST9250315AS           5VCBFP3X             HDD       False   OK                Healthy      Auto-Select 232.89 GB
    4      Intenso  SSD Sata III AA000000000000006710 SSD       False   OK                Healthy      Auto-Select    118 GB
    10     ON_WDNVME2_SSD.vhdx                        SSD       False   OK                Healthy      Auto-Select    119 GB
    2      SAMSUNG HD250HJ       S0URJ90Q217456       HDD       False   OK                Healthy      Auto-Select 232.88 GB
    9      ON_500GB_HDD.vhdx                          HDD       False   OK                Healthy      Auto-Select 232.89 GB
    11     ON_WD1TB_HDD.vhdx                          HDD       False   OK                Healthy      Auto-Select 232.88 GB
    
    
    PS C:> Get-StoragePool | Get-VirtualDisk
    
    FriendlyName ResiliencySettingName FaultDomainRedundancy OperationalStatus HealthStatus   Size FootprintOnPool StorageEfficiency
    ------------ --------------------- --------------------- ----------------- ------------   ---- --------------- -----------------
    TierDisk                                                 OK                Healthy      820 GB          1.1 TB           72,99 %
    

    Short Story long.. peace :)


  6. phuzz

    phuzz
    This is a title

    Joined:
    28 May 2004
    Posts:
    1,712
    Likes Received:
    27

    I like that :) I’m also a disk messy (2 nvme, 3 ssd, 4 hdd).

Share This Page


bit-tech.net Forums

Storage Spaces helps protect your data from drive failures and extend storage over time as you add drives to your PC. You can use Storage Spaces to group two or more drives together in a storage pool and then use capacity from that pool to create virtual drives called storage spaces. These storage spaces typically store two copies of your data so if one of your drives fails, you still have an intact copy of your data. If you run low on capacity, just add more drives to the storage pool.

You need at least two extra drives (in addition to the drive where Windows is installed). These drives can be internal or external hard drives, or solid state drives. You can use a variety of types of drives with Storage Spaces, including USB, SATA, and SAS drives.
 

  1. Add or connect the drives that you want to group together with Storage Spaces.

  2. Go to the taskbar, type Storage Spaces in the search box, and select Storage Spaces from the list of search results.

  3. Select Create a new pool and storage space.

  4. Select the drives you want to add to the new storage space, and then select Create pool.

  5. Give the drive a name and letter, and then choose a layout. Two-way mirror, Three-way mirror, and Parity can help protect the files in the storage space from drive failure.

  6. Enter the maximum size the storage space can reach, and then select Create storage space.
     

  • Simple spaces are designed for increased performance, but don’t protect your files from drive failure. They’re best for temporary data (such as video rendering files), image editor scratch files, and intermediary compiler object files. Simple spaces require at least two drives to be useful.

  • Mirror spaces are designed for increased performance and protect your files from drive failure by keeping multiple copies. Two-way mirror spaces make two copies of your files and can tolerate one drive failure, while three-way mirror spaces can tolerate two drive failures. Mirror spaces are good for storing a broad range of data, from a general-purpose file share to a VHD library. When a mirror space is formatted with the Resilient File System (ReFS), Windows will automatically maintain your data integrity, which makes your files even more resilient to drive failure. Two-way mirror spaces require at least two drives, and three-way mirror spaces require at least five.

  • Parity spaces are designed for storage efficiency and protect your files from drive failure by keeping multiple copies. Parity spaces are best for archival data and streaming media, like music and videos. This storage layout requires at least three drives to protect you from a single drive failure and at least seven drives to protect you from two drive failures.
     

After you upgrade to Windows, we recommend that you upgrade your existing pools. With an upgraded pool, you can optimize drive usage and remove drives from pools without affecting the pool’s protection from drive failure.

Note: Upgraded pools aren’t compatible with previous versions of Windows.

When you add new drives to an existing pool, it’s a good idea to optimize drive usage. This will move some of your data to the newly added drive to make the best use of the pool’s capacity. It’ll happen by default when you add a new drive to an upgraded pool in Windows you’ll see a check box for Optimize to spread existing data across all drives selected when you add the drive. However, if you cleared that check box or added drives before upgrading a pool, you’ll need to manually optimize drive usage. To do so, type Storage Spaces in the search box on the taskbar, select Storage Spaces from the list of search results, and then select Optimize drive usage.
 

If you created a pool in Windows or upgraded an existing pool, you’ll be able to remove a drive from it. The data stored on that drive will be moved to other drives in the pool, and you’ll be free to use the drive for something else.

  1. Go to the taskbar, type Storage Spaces in the search box, and select Storage Spaces from the list of search results.

  2. Select Change settings > Physical drives to see all the drives in your pool.

  3. Find the drive you want to remove and select Prepare for removal > Prepare for removal. Leave your PC plugged in until the drive is ready to be removed. This could take several hours, depending on how much data you have stored there.

  4. (Optional) To speed up drive preparation, prevent your PC from going to sleep. Select Start > Settings > System > Power & battery Screen and sleep. Next to When plugged in, put my device to sleep after select Never.

  5. When the drive is listed as Ready to remove, select Remove > Remove drive. Now, you can disconnect the drive from your PC.

Note: If you run into problems when you try to prepare the drive for removal, it might be because you don’t have enough free space in the pool to store all the data from the drive you want to remove. Try adding a new drive to the pool that’s as large as the drive you plan to remove and then try again.

Storage Spaces helps protect your data from drive failures and extend storage over time as you add drives to your PC. You can use Storage Spaces to group two or more drives together in a storage pool and then use capacity from that pool to create virtual drives called storage spaces. These storage spaces typically store two copies of your data so if one of your drives fails, you still have an intact copy of your data. If you run low on capacity, just add more drives to the storage pool.

You need at least two extra drives (in addition to the drive where Windows is installed). These drives can be internal or external hard drives, or solid state drives. You can use a variety of types of drives with Storage Spaces, including USB, SATA, and SAS drives.
 

  1. Add or connect the drives that you want to group together with Storage Spaces.

  2. Go to the taskbar, type Storage Spaces in the search box, and select Storage Spaces from the list of search results.

  3. Select Create a new pool and storage space.

  4. Select the drives you want to add to the new storage space, and then select Create pool.

  5. Give the drive a name and letter, and then choose a layout. Two-way mirror, Three-way mirror, and Parity can help protect the files in the storage space from drive failure.

  6. Enter the maximum size the storage space can reach, and then select Create storage space.
     

  • Simple spaces are designed for increased performance, but don’t protect your files from drive failure. They’re best for temporary data (such as video rendering files), image editor scratch files, and intermediary compiler object files. Simple spaces require at least two drives to be useful.

  • Mirror spaces are designed for increased performance and protect your files from drive failure by keeping multiple copies. Two-way mirror spaces make two copies of your files and can tolerate one drive failure, while three-way mirror spaces can tolerate two drive failures. Mirror spaces are good for storing a broad range of data, from a general-purpose file share to a VHD library. When a mirror space is formatted with the Resilient File System (ReFS), Windows will automatically maintain your data integrity, which makes your files even more resilient to drive failure. Two-way mirror spaces require at least two drives, and three-way mirror spaces require at least five.

  • Parity spaces are designed for storage efficiency and protect your files from drive failure by keeping multiple copies. Parity spaces are best for archival data and streaming media, like music and videos. This storage layout requires at least three drives to protect you from a single drive failure and at least seven drives to protect you from two drive failures.
     

After you upgrade to Windows, we recommend that you upgrade your existing pools. With an upgraded pool, you can optimize drive usage and remove drives from pools without affecting the pool’s protection from drive failure.

Note: Upgraded pools aren’t compatible with previous versions of Windows.

When you add new drives to an existing pool, it’s a good idea to optimize drive usage. This will move some of your data to the newly added drive to make the best use of the pool’s capacity. It’ll happen by default when you add a new drive to an upgraded pool in Windows you’ll see a check box for Optimize to spread existing data across all drives selected when you add the drive. However, if you cleared that check box or added drives before upgrading a pool, you’ll need to manually optimize drive usage. To do so, type Storage Spaces in the search box on the taskbar, select Storage Spaces from the list of search results, and then select Optimize drive usage.
 

If you created a pool in Windows or upgraded an existing pool, you’ll be able to remove a drive from it. The data stored on that drive will be moved to other drives in the pool, and you’ll be free to use the drive for something else.

  1. Go to the taskbar, type Storage Spaces in the search box, and select Storage Spaces from the list of search results.

  2. Select Change settings > Physical drives to see all the drives in your pool.

  3. Find the drive you want to remove and select Prepare for removal > Prepare for removal. Leave your PC plugged in until the drive is ready to be removed. This could take several hours, depending on how much data you have stored there.

  4. (Optional) To speed up drive preparation, prevent your PC from going to sleep. Type Power and sleep in the search box on the taskbar, then select Power & sleep settings. Under When plugged in, PC goes to sleep after, select Never.

  5. When the drive is listed as Ready to remove, select Remove > Remove drive. Now, you can disconnect the drive from your PC.

Note: If you run into problems when you try to prepare the drive for removal, it might be because you don’t have enough free space in the pool to store all the data from the drive you want to remove. Try adding a new drive to the pool that’s as large as the drive you plan to remove and then try again.

Need more help?

Windows 10 is an operating system that delivers a lot of new features and improvements, including a new breed of apps that run across devices, a new web browser built for the modern web, a unified Store, improvements on security, and an updated, but yet familiar user interface.

The operating system also includes many familiar features found in Windows 7 and Windows 8.1. One of these features is Storage Spaces. This feature was originally introduced in Windows 8.x and let you group different types of drives, such as traditional rotating platters hard drives and Solid State Drives into a single storage pool, which then you can use to create «storage spaces».

What are Storage Spaces?

Storage Spaces are technically virtual drives that appear in File Explorer as normal local storage, and each storage space you create can be less, equal, or greater to the amount of the physical capacity available in the storage pool.

Storage Spaces support some drive technologies, including ATA, SATA, SAS and USB drives. Getting started with the feature only requires one or more drives, in addition to the drive where you have Windows installed.

You don’t even have to use all the available drives to create storage spaces. For example, if you have three drives of 100GB each, you could only use two to create a «storage pool». Once you have a new pool, you can create a 200GB virtual drive that represents the total amount of space available, or you can provision and create a 1000GB virtual drive (storage space).

Of course, if you have a storage space of 1000GB that was created in a pool with 200GB of available physical storage, you can only store 200GB worth of data. However, as the drives begin to fill up, you will be notified to add more drives to accommodate more available space.

Also, you’re not limited to one storage space per storage pool; you can create as many spaces as allowed by the available space. Let me explain. While you can create storage spaces of virtually any size, each time you create a new virtual drive, you will be using a small portion of the physically available storage, and eventually, you will run out of space as you keep creating more storage spaces.

Why Storage Spaces?

Although, there are not many scenarios where everyday users will be using this feature, «Storage Spaces» has numerous benefits. For example, you can use storage spaces to create a large network drive instead of sharing multiple drives in your network, which is cleaner and more efficient.

If you have different USB drives that you can connect to your computer to save your data, you can combine the drives into a single logical drive, which enables you to organize all your data in a single place — and no more asking yourself: «In which drive did I save those photos?»

Perhaps the most important aspect of Storage Spaces isn’t the ability to group different drive technologies with different sizes, but the ability to configure different types of data protection.

Resiliency

Storage Spaces supports four types of resiliency:

  • Simple: A simple storage space writes one copy of your data and does not protect you from driver failures. This option requires, at least, one drive, and each new additional drive adds another point of failure.
  • Two-way mirror: This option writes two copies of your data on the drives, which can protect your data from a single driver failure. Two-way mirror requires a least two drives.
  • Three-way mirror: This option works similar to the two-way mirror, but it writes three copies of your data on the drives, which will help you to protect your data from two simultaneous drive failures. Three-way mirror requires, at least, three drives.
  • Parity: Similar to the standard RAID 5 technology, Parity for a storage space writes your data with parity information on the available driver to help you protect your data from a single driver failure. This option requires a least three drivers.

The resiliency type you need will mainly depend on what you’re trying to accomplish. If you’re only interested in available space and drive speed, you could use the «Simple (no resiliency)» option. If you want to protect your data from drive failure, you can go with one of the two mirror types, but remember that the more copies of your data get written to disk, it will consume more storage. If you like a balance of available space and speed, then you should use the «Parity» option.

Here’s something else to keep in mind. You can always make a storage space larger, but you cannot make the available space smaller. Every time you make a change it will cost you a quarter of a gigabyte of the available physical space, as such, you should plan in advance how large you want to make the storage space. Currently, the operating system allows a maximum of 63TB per storage space.

How to setup Storage Spaces

Now that you have a little background on Storage Spaces for Windows, below we’ll go through how to use and manage the feature.

How to create a storage pool and storage space

1- Connect all the drives you want to participate on Storage Spaces.

2- Open Start, do a search and open Storage Spaces.

3- Click the link Create a new pool and storage space.

4- Select the drives you want to be part of the pool and click Create Pool. It’s important to note that all the data currently on the drives will be erased during the process.

5- Now, it’s the time to create the storage space (virtual drive), choose a descriptive name, as it will get confusing if you don’t. Then choose the drive letter and file system — for most people NTFS will be fine, but you always REFS (Resilient File System).aspx){.nofollow}, which is a new «local file system. It maximizes data availability, despite errors that would historically cause data loss or downtime. Data integrity ensures that business-critical data is protected from errors and available when needed.»

6- Pick the resiliency type you want to use for this particular storage space.

7- Select the size you want to allocate. Remember that you can pick any size you want. It doesn’t matter if you don’t have the available physical space as you will get an alert when it’s time to add more storage.

8- Click the Create storage space button to complete the process.

Now that you have created the storage space, in «Manage Storage Spaces» you can now view some useful information, such as physical storage usage, information about the storage space and from the participating physical drives.

How to create multiple storage spaces

1- If you want to create a second storage space, open Start, do a search and open Storage Spaces.

2- Click the Create a storage space link under the storage pool.

3- Choose your preferences (remember to pick a descriptive name).

4- Click the Create storage space button to complete the process (refer to the previous image).

How to add new drives to a storage pool

At any time, you can always add more drives to the pool to expand a storage space — just follow the steps below:

1- While in «Manage Storage Spaces» click the Add drives from the storage pool.

2- The available drives you can add will appear, select the one you want, and click the Add drives button. You will also notice the Optimize drive usage to spread existing data across all drives, make sure this option is enabled as well.

How to change the size of a storage space

1- Open Start, do a search and open Storage Spaces.

2- Under the storage space you want to modify, click the Change option.

3- From this page, you can change the name of the «space», drive letter, and size. Make your changes, and click the Change storage space button to complete the process.

How to optimize drive usage

While «Storage Spaces» remains pretty much unchanged since Windows 8.1, Microsoft is adding a new feature to optimize drive usage in Windows 10. This feature is useful when you add new drives to an existing pool, as it will move some data to the newly added drive to better utilize the drives in the pool and capacity.

The optimization happens by default when you add a new drive to an existing pool, when you select the Optimize drive usage to spread existing data across all drives option. However, if you didn’t check the option or drives were added before upgrading the pool, you need to perform an optimization manually.

1- While in Storage Spaces click the Optimize drive usage from the storage pool.

2- Click the Optimize drive usage button. Keep in mind that this process in intensive, as such you may notice your PC being slow for a while.

How to properly remove a drive in use

When you have a Storage Space configured, you cannot just disconnect a drive out of the blue, as it may cause data loss and other problems.

Fortunately, Windows 10 includes a mechanism to remove a drive properly from a pool, by moving the data on that drive other drives in the pool, and then you can disconnect the drive from your computer, or you can use to store something else.

Follow the step below to remove a drive from a pool:

1- Open Start, do a search and open Storage Spaces.

2- On the storage pool expand Physical drives.

3- Click the Prepare for removal option.

4- Make you’re removing the correct drive and then click the Prepare for removal button.

5- Once again locate the drive you want to remove and click the Remove button (refer to the image in step number three).

6- Finally, click the Remove drive button to complete the process.

It’s important to note that after you remove the drive, it won’t be accessible through File Explorer. You’ll need to open Disk Management and reformat the drive in question.

1- Simply, right-click the Start button, and click Disk Management, locate the drive with the «Unallocated» label.

2- Right-click the drive, select New Simple Volume and follow the on-screen instructions to format the drive using NTFS file system and performing a quick format.

Now the removed drive should be usable again.

How to delete a Storage Space

If you no longer need a storage space, you can easily delete it. Simply follow the steps below:

1- Open Start, do a search and open Storage Spaces.

2- Under «Storage Spaces» click the Delete option next to the «space» you no longer need. It’s important to note that that deleting a storage space permanently deletes the data it contains. The only way to recover is by using a previously made backup.

3- Once you’re ready, click the Delete storage space.

How to delete a Storage Pool

You cannot delete a storage pool that contains a storage space. You first need to remove all the storage spaces created in a pool properly. Only then the option to delete the pool will be available.

1- Open Start, do a search and open Storage Spaces.

2- Click the Delete pool on the storage pool you want to remove.

3- Then click the Delete pool to complete the process.

Once you delete the pool, the participating drive will be reinstated to your system, but again, as I have mentioned in the steps, the drives won’t be visible in File Explorer until you manually reformat each drive through Disk Management.

Additional information

  • Once set, you cannot change the storage space resiliency or file system.
  • Yes, you can add more drives and upgrade a storage space on-demand without disrupting access and affecting data already in the «space».
  • At any time, you can rename a pool or space.
  • Storage Spaces is available in Windows 10 Pro and Windows 10 Home.
  • The drive has to be around 5GB of size to be available in Storage Spaces.

Wrapping things up

By now, you should be able to use and manage Storage Spaces in Windows 10. If it was a bit confusing, just remember that with Storage Spaces for Windows, you can create one or more pools with the available drives on your system. In each pool, you can create one or more storage spaces (a virtual drive) of any size as available storage. You can always add more drives and upgrade the space as necessary.

Note: If all the options appear grayed out after creating a Storage Space, this is because you need Administrator Rights. To enable this feature simply click the Change settings button in the top-right corner of the settings page.

More resources

If you want to read more about Windows 10, make sure you check these resources:

  • Windows 10 on Windows Central – All you need to know
  • Windows 10 help, tips, and tricks

Do you use Storage Spaces in Windows 10? What’s the primary reason you use the feature? Tell us your story in the comments below.

Get the best of Windows Central in in your inbox, every day!

Mauro Huculak is technical writer for WindowsCentral.com. His primary focus is to write comprehensive how-tos to help users get the most out of Windows 10 and its many related technologies. He has an IT background with professional certifications from Microsoft, Cisco, and CompTIA, and he’s a recognized member of the Microsoft MVP community.

Windows Server O/S contains Storage Spaces support for Server Spaces tiered storage. You can front slower spinning disks with smaller faster SSDs. Windows 10 has a Storage Spaces GUI Control Panel that does not include the tiered storage GUI. This means Powershell must be used for all configuration.

  • The scripts automatically find all raw drives and add them to the pool.
  • Some HDDs have their types incorrectly identified. The script can coerce them to be MediaType:HDD
  • The entire virtual drive is added to the system as a single large volume
  • You need at least
    • 1 SSD and 1 HDD to run cached storage / Simple resiliency
    • 2 SSD and 2 HDD to run cached storage / Mirror resiliency /
    • 1 SSD and 2 HDD to run cached storage / Simple resiliency / striped storage (sum of HDD space)

Simple Mirrored Mirrored and Striped

Simple vs Mirror

The «Mirror» resiliency level attempts to mirror both SSD and HDD tiers so you would need 4 drives run mirror, to mirror both tiers

Scripts

new-storage-space.ps1

Creates a tiered storage pool and allocates all the disk space to a single drive

  • You can change the drive letter and label by editing the variables at the top.
  • the script can auto size the drive and cache. That didn’t work for me so the script supports manual sizing.

remove-storage-space

Removes the virtual drive, the storage tiers and then the storage pool.

  • All drives are returned the Primordial pool

Sample configuration

new-storage-space.ps created a Virtual drive from 3 physical drives

Physical Drives Storage Space Virtual Drive
two 2TB HDD single 3.6TB data volume striped across my two HDD
one 200GB SSD. with a 200GB read/write cache

Simple resiliency with striped drives

Win 10 Pro Storage Spaces Control Panel

The control panel does not display or manipulate tiers

Video

Meaningless Benchmark

All Storage Pool drives connected to 3Gb/s SATA. The write-back cache is not used with sequential writes over 256KB

[Read]                           *Single 2TB no cache*           *Two 2TB mirrored with 200GB cache*
Sequential 1MiB (Q=  8, T= 1):   160.497 MB/s [    153.1 IOPS]   282.983 MB/s [    269.9 IOPS]
Sequential 1MiB (Q=  1, T= 1):   156.766 MB/s [    149.5 IOPS]   254.605 MB/s [    242.8 IOPS]
    Random 4KiB (Q= 32, T=16):     1.748 MB/s [    426.8 IOPS]   175.272 MB/s [  42791.0 IOPS]
    Random 4KiB (Q=  1, T= 1):     0.527 MB/s [    128.7 IOPS]    21.189 MB/s [   5173.1 IOPS]

[Write]                          *Single 2TB no cache*           *Two 2TB mirrored with 200GB cache*
Sequential 1MiB (Q=  8, T= 1):   153.896 MB/s [    146.8 IOPS]   226.825 MB/s [    216.3 IOPS]
Sequential 1MiB (Q=  1, T= 1):   154.147 MB/s [    147.0 IOPS]   230.149 MB/s [    219.5 IOPS]
    Random 4KiB (Q= 32, T=16):     2.033 MB/s [    496.3 IOPS]   149.000 MB/s [  36377.0 IOPS]
    Random 4KiB (Q=  1, T= 1):     1.706 MB/s [    416.5 IOPS]    38.790 MB/s [   9470.2 IOPS]

Credits

  • Much of the script came from this great blog by Nils Schimmelmann
  • This blot is copied from the git hub repository README.md

Created 4/2020

Из песочницы, Системное администрирование, Высокая производительность, Системное программирование, Хранение данных


Рекомендация: подборка платных и бесплатных курсов монтажа видео — https://katalog-kursov.ru/

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

Сегодня я хотел бы рассказать про технологию создания программного гибридного локального диска на основе 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.

Использование дисковых пространств Windows 10В Windows 10 (и 8.1) присутствует встроенная функция «Дисковые пространства», позволяющая создавать зеркальную копию данных на нескольких физических жестких дисках или же использовать несколько дисков как один диск, т.е. создавать своего рода программные RAID массивы.

В этой инструкции — подробно о том, как можно настроить дисковые пространства, какие варианты доступны и что необходимо для их использования. В Windows 11 функция также сохранилась, но доступен новый вариант интерфейса настройки, подробнее: Дисковые пространства Windows 11 — настройка и использование.

Для создания дисковых пространств необходимо, чтобы на компьютере было установлено более одного физического жесткого диска или SSD, при этом допустимо использование внешних USB накопителей (одинаковый размер накопителей не обязателен).

Доступны следующие типы дисковых пространств

  • Простое — несколько дисков используются как один диск, какая-либо защита от потери информации не предусмотрена.
  • Двухстороннее зеркало — данные дублируются на двух дисках, при этом при выходе из строя одного из дисков, данные остаются доступными.
  • Трехстороннее зеркало — для использования требуется не менее пяти физических дисков, данные сохраняются в случае выхода из строя двух дисков.
  • «Четность» — создается дисковое пространство с проверкой четности (сохраняются контрольные данные, которые позволяют не потерять данные при сбое одного из дисков, при этом общее доступное место в пространстве больше, чем при использовании зеркал), требуется не менее 3-х дисков.

Создание дискового пространства

Важно: все данные с дисков, используемых для создания дискового пространства, будут удалены в процессе.

Создать дисковые пространства в Windows 10 можно с помощью соответствующего пункта в панели управления.

  1. Откройте панель управления (можно начать вводить «Панель управления» в поиск или нажать клавиши Win+R и ввести control).
  2. Переключите панель управления в вид «Значки» и откройте пункт «Дисковые пространства». Дисковые пространства в панели управления Windows 10
  3. Нажмите «Создать новый пул и дисковое пространство». Создание дискового пространства в Windows 10
  4. При наличии не отформатированных дисков, вы увидите их в списке, как на скриншоте (отметьте те диски, которые требуется использовать в дисковом пространстве). В случае, если диски уже отформатированы, вы увидите предупреждение о том, что данные на них будут потеряны. Точно так же отметьте те диски, которые требуется использовать для создания дискового пространства. Нажмите кнопку «Создать пул». Выбрать накопители для дискового пространства
  5. На следующем этапе вы можете выбрать букву диска, под которой в Windows 10 будет смонтировано дисковое пространство, файловую систему (если использовать файловую систему REFS, то получим автоматическую коррекцию ошибок и более надежное хранилище), тип дискового пространства (в поле «Тип устойчивости». При выборе каждого типа, в поле «Размер» вы можете увидеть, какой размер пространства будет доступен для записи (место на дисках, которое будет зарезервировано для копий данных и контрольных данных не будет доступно для записи). Нажмите кнопку «Создать дисковое пространство» и дождитесь завершения процесса. Выбор типа дискового пространства
  6. По завершении процесса, вы вернетесь на страницу управления дисковыми пространствами в панели управления. В дальнейшем здесь же можно добавить диски к дисковому пространству или удалить их из него. Параметры дисковых пространств Windows 10

В проводнике Windows 10 созданное дисковое пространство будет отображаться как обычный диск компьютера или ноутбука, для которого доступны все те же действия, которые доступны для обычного физического диска.

Дисковое пространство в проводнике

При этом, если вы использовали дисковое пространство с типом устойчивости «Зеркало», при выходе из строя одного из дисков (или двух, в случае «трехстороннего зеркала») или даже при их случайном отключении от компьютера, в проводнике вы все так же будете видеть диск и все данные на нём. Однако, в параметрах дискового пространства появятся предупреждения, как на скриншоте ниже (соответствующее уведомление также появится в центре уведомлений Windows 10).

Ошибка дискового пространства в Windows 10

Если такое произошло, следует выяснить, в чем причина и при необходимости добавить новые диски в дисковое пространство, заменив неисправные.

If you’re operating in a Windows or Windows Server environment, and have critical data to protect, then Windows Storage Spaces can come in handy. Many data centers and server farms implement both HDDs and SSDs for storing important data. Unfortunately, 10% of hard drives fail past the three-year mark.

Organizations must recognize this threat — and the numerous other hardware, software and human snafus that may threaten data integrity. Redundancy is the lifeblood of data governance, which is where Storage Spaces’ RAID-like capabilities are beneficial. These appear as virtual drives in File Explorer.

Via software controls, you can use Storage Spaces to group three or more drives together within one unified storage pool. That shared capacity is used to make customized storage “cubbies.” Since this feature stores extra copies of your data, single drive failures are no longer crippling. Need more capacity? Introduce more drives into the storage pool; Storage Spaces are flexible.

Using Storage Spaces

According to Microsoft, there are four chief ways to use Storage Spaces, depending on one’s machine or use case:

Windows PCs

If you’re using Storage Spaces on a Windows 10 machine, you’re required to have three drives available before proceeding. While one of these is your boot drive (housing your Windows install), the remaining two can be internal, external or both. SSDs are also supported. Thankfully, you can also include a mix of SATA, USB, and SAS drives as required.

How do you create Storage Spaces in Windows 10?

  1. First, add or connect the chosen drives that you would like to group together.
  2. From the taskbar search box, type Storage Spaces and select the option from the returned results.
  3. Click the Create a new pool and storage space
  4. Choose your Storage Spaces’ intended drives, and then select Create new storage pool.
  5. Assign a name, letter and layout for your drive. Select a mirroring or parity option, as these retain data backups in the event of failures
  6. Set the Storage Spaces’ maximum storage size, and finally click Create storage space.

Be careful to avoid simple spaces. While these are performance friendly, they’re not protective in the case of drive failures. Furthermore, their ideal use case involves temporary data — plus scratch and object files. Simple, mirrored and parity are often called “resiliency types.”

Microsoft recommends that you upgrade your pools after updating to Windows 10. Additionally, you should strive to optimize your drive usage via smart allocation. Much of this is thankfully automated. However, you can opt to spread existing data across all drives by checking a box. When this isn’t possible (perhaps you cleared that box or added drives before upgrading), manual optimization is necessary.

Standalone servers with unified storage

When your storage is contained within a single, isolated server, the setup process is more involved. Storage Spaces is supported on Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, and Windows Server 2012.

Storage Spaces on standalone servers require one or more storage pools to exist prior to configuration. This collection of physical disks facilitates easier management and expansion should the need arise later on. Interestingly, you may also create multiple virtual disks from a storage pool. Windows recognizes these as traditional disks that can be formatted.

You can create this virtual disk via the File and Storage Services interface. Choose thin provisioning (for frugal yet scalable initial resource consumption) or fixed provisioning (for immediate allocation upon creation). Lastly, you’ll have to choose a size. PowerShell commands can unlock multiple, additional levels of customization not found within the GUI.

Numerous prerequisites exist in Storage Spaces. These cover bus types, disk configs, HBA considerations and JBOD enclosures. Consult Microsoft’s documentation closely to ensure you’re properly prepared.

Clustered servers using Storage Spaces Direct

When you use directly-attached storage at each cluster node, using Storage Spaces can be quite economical when compared to NAS and SAN arrays. Storage Spaces Direct is intended to be highly scalable and easily controllable through software. Storage Spaces technology works in concert with caching, storage tiering, erasure coding, and RDMA networking. Additionally, NVMe drives are supported while offering rapid performance over older technologies.

Windows Server 2019 Datacenter, 2016 Datacenter, and Insider Preview Builds include Storage Spaces Direct. You can choose to create a hyper-converged or converged space. It’s suggested that you familiarize yourself with important server names and domain names before getting started.

The cliff-notes process for deploying Storage Spaces Direct is as follows:

  1. Deploy Windows Server – Install and connect to the operating system, add required domain accounts, and install roles and any necessary features.
  2. Configure the network, unless you’re leveraging Storage Spaces Direct within virtual machines (VM), then you may skip this step.
  3. Configure Storage Spaces Direct – Clean your drives and partitions, validate and create clusters, configure a witness, enable Storage Spaces Direct, create required volumes, and finally deploy any VMs as necessary.
  4. Deploy scale-out file server for converged deployments – Define server roles, create file shares, and enable Kerberos constrained delegation.

Remember to test your solution with diverse workloads to simulate real-world scenarios. This is important before upping complexity later on.

Clustered servers with shared SAS enclosures

You might have a solution where all physical drives are contained within shared enclosures. Otherwise known as a just-a-bunch-of-disks (JBOD) enclosure, this setup must comply with Windows Certification requirements. It must also include identical SAS HBAs that are Storage Spaces certified. Those drives in the file server cluster cannot include built-in RAID functionality.

Storage Spaces vs. RAID

Windows Storage Spaces and RAID, while having some intrinsic overlap, do satisfy certain use cases more effectively than others. There are benefits and limitations to each technology.

First, RAID has two distinct flavors: software and hardware. Meanwhile, Windows Storage Spaces is a software-driven technology that favors provisioning via GUI or CLI. Neither software RAID nor Storage Spaces have socket limitations, though traditional RAID does.

The operating system also looks at RAID and Storage Spaces disks differently. RAID disks appear as a single unit — even though physical RAID disks might have varied capacities. This leads to space wasting. Such a problem isn’t prevalent with Storage Spaces since single drives are accessible.

Performance-wise, RAID 0 handily tops Storage Spaces’ simple mode by roughly 2x. However, 4K read-write speeds are comparable. RAID 1 sequentially reads a tad faster than its Windows counterpart, while Spaces doubles up RAID 1’s write speeds in two-way mirror mode. Hardware RAID still holds a massive advantage when measured against Spaces’ parity mode in reading and writing.

Finally, Storage Spaces can be much more wallet-friendly than RAID setups. There aren’t hefty hardware acquisition fees associated with setup.

Recovering deleted or lost files

Maybe you deleted or misplaced some crucial files within your Storage Spaces deployment. Thankfully, the recovery process is pretty straightforward using recovery software. A number of third-party companies maintain GUI-based tools for quickly scanning storage and assessing data integrity. This process usually includes locating a missing file or folder, and copying it to a safe storage location.

Понравилась статья? Поделить с друзьями:
  • Storage sense windows 10 что это
  • Storage replica windows server 2019 настройка
  • Storage migration service windows server 2019
  • Storage executive software for windows systems
  • Storage data structure corruption windows 10