SSD-диски все еще дороги. Цена на них постепенно понижается, но на единицу хранения они пока еще не могут конкурировать с традиционными HDD. Последние, кстати, вовсе не собираются сдавать свои позиции. И дело не только во все увеличивающихся объемах хранения и снижающейся стоимостью записи на HDD. Традиционные HDD обеспечивают куда большую надежность хранения данных на протяжении длительного времени и существенно большую износостойкость в плане записи. И эти свойства HDD появились не вчера, их планомерно развивали в течение десятилетий. К надежности хранения данных на HDD можно привести множество примеров, когда в различных НИИ и замшелых банках все еще используются жесткие диски выпущенные десятки лет тому назад. И при этом они полностью сохранили свою работоспособность. Кстати, ленточные накопители тоже остались у дел, в тех же банках, финансовых компаниях, замшелых НИИ. Магнитные ленты отлично выполняют функции по архивному хранению информации, например, резервных копий и по самой минимальной стоимости при высочайшей надежности.
Но есть у HDD и неоспоримые недостатки. Это все, что связано со временем доступа и вообще скоростью чтения и записи данных. Конечно, HDD почти что космические ракеты, если сравнить их с решениями на магнитной ленте, но скорости HDD, в нынешних реалиях, все равно недостаточно. По сути, это самый медленный компонент современного ПК. Именно по этой причине на свет появились SSD. Они лишены механической части и соответственно недостатков, связанных со временем доступа и скоростями чтения/записи. В SSD все эти операции происходят «мгновенно» и с максимально доступной производительностью.
А можно ли совместить достоинства HDD и SSD дабы нивелировать их недостатки? Как оказывается можно. Еще до появления SSD обычные HDD уже оснащались крупными буферами из оперативной памяти для ускорения операций чтения-записи. Данная технология помогала лишь отчасти, в основном для операций связанных с записью данных, либо на очень медленных компьютерах, где интерфейс не мог переварить поставляемый жестким диском объем данных. Чуть позже появились комбинации, когда HDD дооснащался еще и небольшим встроенным SSD. SSD-часть в этом случае использовалась как SSD-кэш. Большой популярности подобные решения не нашли, так как объемы SSD встраивались небольшие, а износу они подвергались существенному. Но производители пошли дальше.
На сцену вышла концепция, декларирующая ранжирование данных на дисковом массиве по важности быстрого доступа к ним. Ведь какие-то фотографии с позапрошлогоднего отпуска, можно вполне себе хранить хоть на ленте, а вот файл динамичной игры должен подгружать как можно быстрее. В этой стезе засветилась корпорация Intel, разработавшая совместно с Micron новый вид памяти для твердотельных дисков. Для конечного потребителя новинка предстала под торговой маркой Optane и предназначалась как раз для ускорения операций ввода-вывода традиционных HDD. Иначе работала как «умный» SSD-кэш. Да, кстати, объемы Optane-дисков, как правило, были небольшими, а стоимость соответствовала амбициям электронных гигантов.
Но технологии не стоят на месте, а неумолимо приближаются к технологической сингулярности. Усилиями многих производителей SSD-диски становятся все дешевле и быстрее. И вот в некоторых компьютерах есть только просто SSD-диск и больше ничего. Но, а в мощных рабочих станциях, игровых ПК, да и в большинстве ПК, что стоят на производствах, в офисах и просто по домам разнокалиберных граждан, по-прежнему присутствуют HDD. И вроде бы компьютеры не старые, вполне рабочие, но дисковая подсистема основанная на HDD оставляет желать лучшего, а выкинуть вполне еще рабочий HDD на терабайт, ну просто, рука не поднимается. Но и тут есть решение. Можно использовать технологию по созданию автоматических tiered drives (или иерархичных дисков, лучшего русскоязычного термина я не подобрал). В основе технологии tiered drives лежит объединение быстрых, но небольших SSD-дисков, и медленных, но надежных и объемных HDD-дисков, в один виртуальный пул, тем самым устраняя недостатки каждой из технологий хранения данных.
Автоматичность в случае с tiered drivers означает, что система сама, самостоятельно, без всякого AI, SMS и регистраций, будет определять, какие данные следует помещать на быструю часть (SSD), а какие разумнее оставить на HDD. В некоторых реализациях можно дополнительно «привязывать» те или иные файлы к быстрой части виртуального пула или медленного. Кроме того, некоторые производители дополнительно оснащают свои программные решения по организации tiered drives еще и дополнительным кэшем в оперативной памяти, для еще большей производительности. Но, прежде чем перейти к разбору программным продуктов «без SMS и регистраций», необходимо разобраться в отличиях между SSD-cache, RAID-массивами и tiered drives.
SSD-cache – простой механизм по прозрачному кэшированию данных на быстром SSD-диске перед их записью на медленный HDD-диск, либо аналогичное кэширование данных при чтении. Все зависит от реализации. Технология интересная, но особого признания не нашла в силу очень узкой специализации. Небольшое количество данных она запишет быстро, а вот с чем покрупнее никакого преимущества уже не будет.
RAID-массив — механизм объединения нескольких физических дисков в единый пул. Способ объединения зависит от потребности, но в основном используется в промышленных системах хранения данных, где требуется высокая надежность хранения и низкий процент отказов с нулевым простоем. Как правило в массив объединяются одинаковые по характеристикам диски.
Tiered drive — механизм разделения данных на требующих и не требующих быстрого доступа с соответствующим местом хранения на SSD или HDD.
AMD StoreMI
Мое первое знакомство с tiered drives началось с AMD StoreMI. Еще с первой версии, перелицованной enmotus FuzeDrive. Перейдя с Intel на платформу AMD, я с удовольствием обнаружил, что весь мой парк старых HDD можно безболезненно использовать с моим новым ПК, а заодно и ускорить их до самого доступного максимума при помощи освободившихся SATA SSD (а основными рабочими дисками у меня стали NVME PCI накопители).
Первая версия StoreMI имела существенные ограничения, так, например, можно было использовать для создания tiered drive SSD размером не более 256 Гб. Хорошо, что у меня был именно такой диск. Система tiered drive собралась оперативно, скорость работы с HDD выросла до адекватных показаний, все бегало и приятно урчало. Но локальный праздник жизни был омрачен двумя факторами:
- Система падала из-за StoreMI при высокой нагрузке. Например, при копировании данных с HDD на tiered drive от StoreMI.
- Спустя некоторое время 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 — как раз интересующий нас случай с поддержкой иерархического хранения и сегрегации данных на быстрые и медленные носители.
Состояние дисковой подсистемы после создания Tiered Drive из двух дисков
Последняя редакция также была перенесена в десктопные решения. Создание и управление пулами дисков и виртуальными дисками под Windows 10 (Widows 8 рассматривать уже не будем по причине старости) доступно через апплет (оснастку) Storage Spaces, либо через команды в среде Windows PowerShell. К сожалению, в оснастке Storage Spaces доступны все варианты создания объединения, за исключением Tiered. Он доступен только через команды в PowerShell.
Как выглядит созданный виртуальный диск в оснастке 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.
Возможность создания Nested Drives на свободном месте Storage Spaces
Процедура использования скриптов достаточно проста, требуется подредактировать скрипт создания пула, изменить наименование пула и виртуального диска, подумать над буквой, которая будет назначена виртуальному диску. Затем освободить диски от разделов и запустить скрипт создания. Он автоматически добавит в пул все свободные от разделов диски, исправит неверные или отсутствующие идентификаторы у HDD-дисков, создаст один виртуальный диск по всему размеру всех подключенных дисков.
Если вдруг, по каким-то причинам, касающимся безопасности, скрипт не будет исполняться, то необходимо изменить настройки безопасности для скриптов и запустить процедуру заново.
После создания пула им уже можно управлять через оснастку Storage Spaces. Например, в пул можно добавить еще дисков. Однако, если изначально у нас создавался tiered пул на двух дисках (т.е. сформирован Simple пул), то его нельзя будет переконвертировать в Two-way Mirror пул, хотя можно будет организовать Nested Two-way Mirror диск при создании нового виртуального диска.
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 еще есть куда.
Данные по работе виртуального диска (отображается производительность моего SSD-диска)
Для измерения полученного результата можно воспользоваться как обычными средствами типа Crystal Disk Mark или же использоваться специализированное средство от Microsoft DiskSpd. Disk Mark, как и положено будет давать результаты с SSD-диска, так как он первым воспринимает удар синтетической цифровой стихии, а DiskSpd дает более интересный результат, но его нужно еще правильно интерпретировать.
Полезные ссылки:
- Intel Optane
- RAID
- AMD StoreMI
- enmotus FuzeDrive
- Delphi
- ROMEX PrimoCache
- Статья на Habr об использовании Storage Spaces
- Storage Spaces на Microsoft Docs
- Описание утилиты DiskSpd и ее репозиторий на GitHub
- Использование DiskSpd
- Скрипты win10-storage-spaces
- Страница на GitHub Joe Freeman-а, автора скриптов по автоматизации
- Оригинальная запись блога Nils Schimmelmann-а, который провел изыскания по включение tiered pool в Win10
- Настройка политики запуска скриптов в PowerShell
- Использование tiering на LVM под Linux при помощи LVM-Cache
- Storage Spaces: Understanding Storage Pool Expansion
- Cannot Extend Simple Virtual Disk in Windows Server 2012 R2
- Storage Spaces: Understanding Storage Pool Expansion
- ReadyBoost
On Windows Server 2012 and 2012 R2, you can create virtual disks from multiple hard disks to increase the security of your data and the performance of your file server.
To do this, refer to our previous tutorial : Windows Server 2012/2012 R2 — Create storage spaces to improve the performance and/or security of your file server
Since Windows Server 2012 R2, you also have the option of using SSDs (faster hard disks) to increase the performance of your file server.
However, you will not create a SSD-only storage, but rather a kind of SSHD.
In summary, Windows Server will analyze the use of stored files to transparently and automatically move frequently used files to the SSD defined as «faster hard drive».
- New storage pool
- New virtual disk
- New volume
1. New storage pool
To begin, create a storage pool.
Specify a name for this pool (hard disks group).
Choose the physical disks to place in this storage pool.
Note : as you can see in the picture below, we have 1 SSD, as well as 2 hard drives (which are currently detected as «Unknown»).
Click Create.
After the pool is created, select the «Create a virtual disk when the wizard closes» check box and click Close.
2. New virtual disk
To create a virtual disk on this storage pool, select your storage pool and click Next.
If Windows Server didn’t correctly detect the type of SSD / HDD used for your pool, the «Create storage levels on this virtual disk» check box will be grayed out.
In this case, close this wizard and use the commands proposed later in this tutorial.
To fix this problem, you will need to use some PowerShell commands.
To start, list the hard drives of your server :
PowerShell
Get-PhysicalDisk
In our case, this command shows us 4 disks :
- the hard disk where Windows is installed : PhysicalDisk1 (60 GB)
- the 120 GB SSD (119.25 GB)
- 2 standard hard drives of 500 GB (499.25 GB)
Plain Text
FriendlyName CanPool OperationalStatus HealthStatus Usage Size ------------ ------- ----------------- ------------ ----- ---- PhysicalDisk2 False OK Healthy Auto-Select 499.25 GB PhysicalDisk1 False OK Healthy Auto-Select 60 GB PhysicalDisk0 False OK Healthy Auto-Select 119.25 GB PhysicalDisk3 False OK Healthy Auto-Select 499.25 GB
Then, check how Windows Server recognizes your disks.
PowerShell
Get-PhysicalDisk | ft FriendlyName, MediaType
In our case, Windows Server correctly recognizes our SSD, but doesn’t recognize the type of our hard drives.
So, the «MediaType» displayed is «UnSpecified».
Plain Text
FriendlyName MediaType ------------ --------- PhysicalDisk2 UnSpecified PhysicalDisk1 UnSpecified PhysicalDisk0 SSD PhysicalDisk3 UnSpecified
To solve the problem, simply set the pool hard drives as conventional hard drives.
In our case, we will use the «PhysicalDisk2» and «PhysicalDisk3» hard disks for our storage pool.
Note: If no error is displayed, it’s good.
Otherwise, verify that the disks are in a storage pool.
PowerShell
Get-PhysicalDisk PhysicalDisk2 | Set-PhysicalDisk -MediaType HDD Get-PhysicalDisk PhysicalDisk3 | Set-PhysicalDisk -MediaType HDD
To verify that the changes have been made, you can use this command :
PowerShell
Get-PhysicalDisk | ft FriendlyName, MediaType
As expected, we find our 2 hard drives (2 and 3), as well as our SSD (0).
Plain Text
FriendlyName MediaType ------------ --------- PhysicalDisk2 HDD PhysicalDisk1 UnSpecified PhysicalDisk0 SSD PhysicalDisk3 HDD
In the server manager, click on the «refresh» icon at the top.
Then, you will see that you have 2 hard disks and 1 SSD in the «Physical disks» list.
Now, restart the wizard by clicking «Tasks -> New Virtual Disk» in the «Virtual Disks» section.
Enter a name for your virtual disk and check the «Create storage tiers on this virtual disk» box.
Select the «Simple» storage layout.
As stated by the wizard, the storage levels (so the cache system on an SSD) require a fixed allocation.
Click Next.
Specify the size:
- for SSD cache
- for the data to be stored on the classic hard disk
In total, you will get a single virtual disk whose size will be the sum of the sizes.
However, the larger the size for the SSD, the more Windows Server will be able to move frequently used files to that drive.
The wizard displays a summary of the configuration of your virtual disk.
Leave the «Create a volume when the wizard closes» box and click Close.
3. New volume
To be able to store data on your virtual disk, you must partition it.
For that, we will create a volume on this one.
Leave the size indicated, and then click Next.
Click Create.
Your virtual disk is ready to use.
Click on «Volumes» (on the left).
As you can see, we have a virtual disk with a volume of 210 GB accessible with the «E» letter.
In computer, you will find your 210GB partition with the «E» letter.
Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Sign up
Disclaimer: This article talks about Windows Server 2016 TP5. Although it doesn’t seem like this feature will change in the final version, there are, also, no guarantees that it won’t.
Windows Server 2016 Datacenter Edition introduces Storage Spaces Direct (S2D), which enables building highly available and scalable storage systems with local storage. Storage Spaces Direct is an evolution of Storage Spaces, which means that it is an extension of the existing software defined storage stack for Windows Server. Storage Spaces Direct leverages SMB3 for all east-west traffic, including SMB Direct and SMB Multichannel, for low latency and high throughput storage.
If you have already used Storage Spaces in Windows Server 2012, it is important to realize that both the caching and storage tiering work very differently in S2D. Unlike Storage Spaces in Windows Server 2012, the cache is independent of the storage pool and volumes; in fact the system manages it automatically.
How Storage Spaces Tiering works in Windows Server 2012 R2
In Windows Server 2012 R2, you can only define SSD and HDD as Capacity Tiers. Essentially, this means that the SSD Tier is part of your total pool capacity.
A scheduled task, then, runs periodically to optimize the placement of data in the storage tiers. In essence, this moves the most frequently accessed (hot) data up into the SSDs and least frequently accessed (cold) data to the HDDs.
How Storage Spaces Direct Tiering works in Windows Server 2016
Storage tiering is now done in real-time and is used for both the way data is written, as well as the media the data is written to.
With the introduction of the NVMe SSD, this model does not work as well; the downside being is that you usually have (NVMe + SSD + HDD) and with the previous model you were unable to differentiate between NVMe and SSD.
In Storage Spaces Direct, the Capacity Tier is split in two: Performance and Capacity.
The Performance Tier is part of the Capacity Tier and it is optimized for IO performance (hot data) while the rest of the Capacity Tier is optimized for Storage Efficiency (cold data).
This provides much more flexibility, as you can create volumes consisting only of performance tier, which provide highest IO performance and is backed by fast flash storage (cheapest IOPS). You can create volumes consisting only of capacity tier, which provides the best storage efficiency and is backed by hard drives (cheapest capacity). And you can create volumes consisting of both performance and capacity, that automatically keep the hottest data on flash storage and the coldest data on hard drive storage.
SSD + HDD
In a simple scenario where you have just SSD and HDD, Storage Spaces Direct does not put your SSD in your capacity tier. Instead, your HDDs will be your Capacity Tier and the SSDs will be your Caching Tier. This means that Hot Cold Data will be in your Performance Capacity Tier and the Cold Data will be in the rest of the Capacity Tier.
NVMe + SSD + HDD
When you have NVMe in your storage configuration, Storage Spaces Direct automatically uses the NVMe device for the Caching Tier and the SSDs and HDDs for the Capacity Tier. While the NVMe is used for caching, the SSDs (in the Performance Capacity Tier) will contain the Hot Data and the HDDs will contain the Cold Data.
If you are interested in reading more about Storage Spaces Direct, I suggest you read Claus’ Technet Blog Posts on this topic.
This weekend I was doing some work on the new ServeTheHome storage test bed. It is a very fast machine. Once I got Windows Server 2012 working on the Supermicro X9DR7-LN4F, I ran into some troubling issues. I first added five different SSD combinations onto the onboard SAS 2308 controller. Write performance was simply abysmal. Benchmarking on an Intel PCH is very easy, everything just works out of the box. Benchmarking on the LSI SAS 2308 controller is a bit harder as I have been spending more time tuning the system. One area was to change the write cache setting from the default on to the off setting.
Drives were all 240GB or 256GB in capacity. This is a decent cross section and I did a round-up this summer of several SSD’s and their Anvil’s Storage Utilities Performance. What we found was some controllers respond differently to the default settings and changing write cache settings in Windows Server 2012 may help performance. Also, using Anvil’s Storage Utilities (which is a great benchmark) turning on the write through setting can help performance. Let’s take a look at those situations.
Test Configuration
For this piece, I am using the new SSD test configuration.
- CPUs: 2x Intel Xeon E5-2690 CPUs
- Motherboard: Supermicro X9DR7-LN4F
- Memory: 8x 4GB Kingston unbuffered ECC 1333MHz DIMMs
- SSD: Corsair Force3 120GB
- Test SSDs: OCZ Vertex 4 256GB, Kingston SSDNow V+200 240GB, SanDisk Extreme 240GB, Samsung 840 Pro 256GB
- Power Supply: Corsair AX850 850w 80 Plus Gold
- Chassis: Norco RPC-4220
- Operating System: Windows Server 2012 Datacenter
The test rig will use 1600MHz registered ECC DIMMs shortly, but it is still using 1333MHz DIMMs for setup. This is not going to have a huge impact on write cache numbers going one way or another, especially with single drives. The Supermicro X9DR7-LN4F was flashed to IT mode, for the results displayed below. IR mode showed very similar results. We also tried both the stock LSI driver v 2.00.55.84 as well as v 2.00.58.0 off of the Supermicro website. This also appears to be the newest version for the LSI SAS 9207-8i. That is the standalone equivalent to the Supermicro X9DR7-JLN4F. The J (for JBOD) version is essentially what we are testing with the onboard controller in IT mode.
The strange thing here is that there has not been a lot by way of driver updates since the end of May. Certainly not around the release of Windows Server 2012 nor Windows 8.
Write Cache On Versus Off with a SSD on a LSI SAS 2308 and Write Through Mode in Anvil’s Storage Utilities
By default, Windows Server 2012 turned write cache on for new drives. The impact of this cannot be overstated. Write speeds plummeted across every drive. Here are a few examples of write cache on versus write cache off in Windows Server 2012 with a few popular SSD offerings. Just for those that are not aware, here is the setting we are changing:
Leading practice here is to change the setting then reboot the system.
The other setting that we are looking at is enabling Write Through on Anvil’s Storage Utilities. You can find this by going to Settings.
Next we are going to look at a quick sample of SSDs. The first picture will be how the setup worked out of the box on the LSI SAS 2308. The second picture for each drive will show performance when write cache was disabled. The third picture for each drive will show what happens when the write-through option is selected. You will notice that some of these were taken on Windows 7 and others on Windows Server 2012. This was simply due to the fact we did 5x SSDs with On/ Off Write Cache, On/ Off Write-Through, two driver versions, two operating systems, two firmware modes (IR and IT) and etc. The reason we are highlighting the write cache and write through settings are that they did show a marked impact on the results.
OCZ Vertex 4 Write Cache On v. Off and Write Through
The OCZ Vertex 4 is known for its speed on shorter tests. Using the 256GB variant and not so large test sizes means that the drive will be extremely fast if all is working.
Interestingly enough, using the Intel PCH the Vertex 4 achieves over 4,600 total and 2,800 on write. Here is the view with the write cache off.
As you can see, not much of an improvement by changing cache settings. Let’s try write-through.
Here we see a slight improvement. Nothing overly great but the best benchmark yet. Let’s see how other drives fare.
Kingston SSDNow V+200 240GB
The Kingston SSDNow V+200 240GB hit the scenes and is a decent performing drive given it uses asynchronous NAND. Let’s take a look at the Anvil’s Storage Utilities results.
Yikes! What is going on there? If you look at the 4K writes, performance is much lower than we saw in the previous Kingston SSDNow V+200 240GB review. For those that don’t want to click, we would expect to see around 76MB/s for the 4K and about 220MB/s for the 4K QD16 tests on an Intel PCH. Let’s see what happens when write cache is turned off.
Numbers here are still a bit low. With that being said, much better than we saw with Write Cache On. What happens when we turn on write through?
Not much of an improvement on the Kingston SSDNow V+200 with write through, but still around 2.5x the stock out-of-the-box speeds. Let’s see if there is a trend with SandForce controllers.
SanDisk Extreme 240GB
SanDisk made a splash with a SandForce SF-2281 based drive with Toggle NAND. I am keeping firmware consistent here to keep results somewhat standardized with the old ones. Plus, adding TRIM does not do much good on an LSI controller at the moment. Let’s again start with write cache on.
Again, yikes! Write cache in Windows plus the SandForce controller seems to absolutely kill write performance. Even sequential speeds are extremely low. Let’s see if the same pattern emerges as with the Kingston SSDNow V+200 with the Write Cache turned off.
Much better performance again for the SandForce based SanDisk Extreme 240GB. Turning off write cache in Windows Server 2012 improves write performance a ton. Performance still lags behind the Windows 7/ Intel Z77 PCH results but is vastly improved. Let’s try turning on write-through.
Here we see significantly better performance.
Samsung 840 Pro 256GB
When looking around the web, and all of the Intel PCH based benchmarks, the Samsung 840 Pro is fast. Yet, the Samsung 840 Pro out of the box was a drive that showed not so great performance with Windows Server 2012, a LSI SAS 2308 HBA and write cache on.
Again, write cache on in Windows Server 2012 takes the hottest consumer SSD around today and brings it to sub 10,000 4K IOPS. This looks very much in-line with the SandForce drives right? Here’s what happens when the write cache box is de-selected:
Performance dips by a small amount, more or less test variance. Similar behavior as to the OCZ Vertex 4. The Samsung 830 behaves in a manner similar to the Samsung 840 Pro on these test so those results are omitted since they are duplicative. Let’s see what happens when we toggle write-through.
Bottom line here, if you have a Samsung drive, on a LSI SAS 2308 controller be very careful with benchmark settings. I did want to point out that IOMeter managed to provide almost 17K on QD1 and over 40K on QD4 sequential 4K write tests so the above seems correct.
Conclusion
This is one of those times that we see totally unexpected results. When I first started testing, I expected performance to be +/- 10% of an Intel PCH chipset using Windows Server 2012 default settings. I also expected everything to be plug-and-play easy. It turns out, for SandForce drives, changing the write cache settings makes a huge impact. For Samsung drives, with Anvil’s Storage Utilities, you will want to enable write through mode. It was really interesting to see these results. The drives did not hit their Intel PCH speeds. Also, when using a LSI controller, one does need to pay attention to various settings. It seems like some of these benchmarks are optimized for the Intel + SSD platform. That makes sense as SSDs are commonly found in workstations. Bottom line, if you do run a similar setup, do spend the time to ensure everything is configured properly.