Традиционная система хранения подразумевает размещение данных на жестких дисках HDD и твердотельных дисках SSD. В последние годы емкости HDD растут стремительными темпами. Однако, скорость их при случайном доступе по-прежнему мала. Для некоторых приложений, таких как базы данных, облачные технологии или виртуализация, требуется как высокая скорость доступа, так и большой объем. Получается, что использование только HDD не приемлемо, а использование SSD неоправданно дорого. Использование SSD только в качестве кэша является лучшим соотношением цена/производительность для системы в целом. В этом случае сами данные будут располагаться на емких HDD, а дорогие SSD будут давать прирост производительности при случайном доступе к этим данным.
Чаще всего SSD-кэш будет полезен в следующих случаях:
SSD-кэширование – это дополнительный кэш для увеличения производительности. Один или несколько SSD должны быть назначены виртуальному диску (луну) для использования в качестве кэша. Обратите внимание, что эти SSD будут недоступны для хранения данных. В настоящее время размер SSD-кэша ограничен 2.4ТБ.
Когда производится операция чтения/записи, копия данных помещается на SSD. В следующий раз любая операция с этим блоком будет производиться напрямую с SSD. В итоге это уменьшит время реакции и, как следствие, увеличит общую производительность. Если, к несчастью, SSD откажет, то данные не потеряются, т.к. в кэше содержится копия данных с HDD.
SSD-кэш делится на группы – блоки, каждый блок делится на субблоки. Характер операций ввода/вывода для виртуального диска определяет выбор размера блока и субблока.
Чтение данных с HDD и запись их на SSD называется заполнением кэша. Эта операция выполняется в фоновом режиме сразу же после того, как хост производит операции чтения или записи. Работа кэша ограничена двумя параметрами:
Эти значения больше нуля. Если они равны нулю, то кэш на чтение или запись не работает. В соответствии с этими значениями каждый блок соотносится с его счетчиком чтения или записи. Когда хост производит операцию чтения, и данные расположены в кэше, счетчик чтения увеличивается. Если в кэше нет данных и счетчик чтения больше или равен значению Populate-on-read threshold, то данные копируются в кэш. Если же значение счетчика меньше Populate-on-read threshold, то данные читаются мимо кэша. Для операций записи ситуация аналогична.
Тип ввода/вывода определяет конфигурацию SSD-кэша. Эта конфигурация выбирается администратором и определяет параметры блока, субблока, populate-on-read threshold и populate-on-write threshold. Имеются три заранее определенные конфигурации согласно типам ввода/вывода: базы данных, файловая система и web-сервисы. Администратору необходимо выбрать конфигурацию SSD-кэша для виртуального диска. В процессе работы можно сменить тип конфигурации, но в этом случае содержимое кэша будет сброшено. Если предопределенные конфигурации не подходят под используемый профиль нагрузки, то имеется возможность задать собственные значения параметров.
Размер блока влияет на время «прогрева» кэша, т.е. когда наиболее востребованные данные переместятся на SSD. Если данные расположены на HDD близко друг к другу, то лучше использовать блок большого размера. Если же данные расположены хаотично, то логичнее использовать блок малого размера.
Размер субблока также влияет на время прогрева кэша. Больший его размер уменьшает время заполнения кэша, но увеличивает время реакции на запрос с хоста. Помимо этого, размер субблока также влияет на загрузку процессора, пропускную способность памяти и канала.
Для расчета примерного времени прогрева кэша можно воспользоваться следующим методом.
Тогда T = (C*P) / (I*S*D)
Для примера: 16 дисков с 250 IOPS, один SSD 480ГБ в качестве кэша, характер нагрузки – web-сервисы (64КБ) и populate-on-read threshold = 2.
Тогда время прогрева будет Т = (480ГБ*2) / (250*64КБ*16) ≈ 3932 сек ≈ 65.5 мин
Для начала рассмотрим процесс создания SSD-кэша
Ограничения
Тестовая конфигурация:
Согласно формуле время прогрева кэша T = (2ТБ*2) / (244*8КБ*8) ≈ 275036 сек ≈ 76.4 ч
Большинство серверных приложений работают с дисковой подсистемой сервера в режиме случайного доступа, когда данные читаются или записываются небольшими блоками размером несколько килобайт, а сами эти блоки могут располагаться в дисковом массиве случайным образом.
Жесткие диски имеют среднее время доступа к произвольному блоку данных порядка нескольких миллисекунд. Это время необходимо для позиционирования головки диска над нужными данными. За одну секунду жесткий диск может прочитать (или записать) несколько сотен таких блоков. Этот показатель отражает производительность жесткого диска на случайных операциях ввода-вывода и измеряется величиной IOPS (Input Output per Second, операций ввода-вывода в секунду). То есть производительность случайного доступа для жесткого диска составляет несколько сотен IOPS.
Как правило, в дисковой подсистеме сервера несколько жестких дисков объединяются в RAID-массив, в котором они работают параллельно. При этом скорость операций случайного чтения для RAID-массива любого типа возрастает пропорционально количеству дисков в массиве, а вот скорость операций записи зависит не только от количества дисков, но также и от способа объединения дисков в RAID-массив.
Довольно часто дисковая подсистема является фактором, который ограничивает быстродействие сервера. При большом количестве одновременных запросов дисковая подсистема может достичь предела своей производительности и увеличение объема оперативной памяти или частоты процессора не даст никакого эффекта.
Радикальным способом увеличения производительности дисковой подсистемы является использование твердотельных накопителей (SSD-накопителей), в которых информация записывается в энергонезависимую flash-память. У SSD-накопителей время доступа к произвольному блоку данных составляет несколько десятков микросекунд (то есть на два порядка меньше, чем у жестких дисков), благодаря чему производительность даже одного SSD-накопителя на случайных операциях достигает 60"000 IOPS.
На следующих графиках приведены сравнительные показатели производительности RAID-массивов из 8-ми жестких дисков и 8-ми SSD-накопителей. Приведены данные для четырех различных типов RAID-массивов: RAID 0, RAID 1, RAID 5 и RAID 6. Чтобы не перегружать текст техническими подробностями, информацию о методике тестирования мы поместили в конце статьи.
Из диаграмм видно, что применение SSD-накопителей повышает производительность дисковой подсистемы сервера на операциях произвольного доступа от 20 до 40 раз. Однако широкому использованию SSD-накопителей мешают следующие серьезные ограничения.
Во-первых, современные SSD-накопители имеют небольшую емкость. Максимальная емкость жестких дисков (3TB) превосходит максимальную емкость серверных SSD-накопителей (300GB) в 10 раз. Во-вторых, SSD-накопители примерно в 10 раз дороже жестких дисков, если сравнивать стоимость 1GB дискового пространства. Поэтому построение дисковой подсистемы из одних только SSD-накопителей в настоящее время применяется довольно редко.
Однако можно использовать SSD-накопители в качестве кэш-памяти RAID-контроллера. О том, как это работает и что дает, давайте поговорим подробнее.
Дело в том, что даже в довольно большой дисковой серверной подсистеме емкостью в десятки терабайт объем "активных" данных, то есть данных, которые используются наиболее часто, относительно невелик. Например, если Вы работаете с базой данных, которая хранит записи за длительный период времени, активно использоваться скорее всего будет только небольшая часть данных, которая относится к текущему временному интервалу. Или если сервер предназначен для хостинга Интернет-ресурсов, большая часть запросов будет относиться к небольшому числу наиболее посещаемых страниц.
Таким образом, если эти "активные" (или "горячие") данные будут находиться не на "медленных" жестких дисках, а в "быстрой" кэш-памяти на SSD-накопителях, производительность дисковой подсистемы возрастет на порядок. При этом Вам не нужно заботится о том, какие данные должны быть размещены в кэш-памяти. После того, как в первый раз контроллер прочитает данные с жесткого диска, он оставит эти данные в кэш-памяти SSD и повторное чтение будет выполняться уже оттуда.
Более того, кэширование работает не только при чтении, но и при записи. Любая операция записи будет записывать данные не на жесткий диск, а в кэш-память на SSD-накопителях, поэтому операции записи также будут выполняться на порядок быстрее.
Практически механизм кэширования на SSD-накопителях может быть реализован на любом шести-гигабитном RAID-модуле или RAID-контроллере Intel второго поколения на базе микроконтроллера LSI2208: RMS25CB040, RMS25CB080, RMT3CB080, RMS25PB040, RMS25PB080, RS25DB080, RS25AB080, RMT3PB080. Эти RAID-модули и контроллеры применяются в серверах Team на базе процессоров Intel E5-2600 и E5-2400 (платформа Intel Sandy Bridge).
Чтобы использовать режим SSD-кэширования, необходимо установить на RAID-контроллер аппаратный ключ AXXRPFKSSD2. Кроме поддержки SSD-кэширования, этот ключ также ускоряет работу контроллера с "чистыми" SSD-дисками, когда они используются не в качестве кэш-памяти, а как обычные накопители. В этом случае можно достичь производительности на операциях случайного чтения-записи в 465"000 IOPS (режим FastPath I/O).
Давайте посмотрим на результаты тестирования производительности все того же массива из восьми жестких дисков, но уже с использованием четырех SSD-накопителей в качестве кэш-памяти и сравним их с данными этого массива без кэширования.
Мы выполнили тестирование для двух вариантов организации SSD-кэш. В первом варианте 4 SSD-накопителя были объединены в RAID-массив нулевого уровня (R0), а во-втором случае из этих 4-х SSD-накопителей был образован зеркальный массив (R1). Второй вариант немного медленнее на операциях записи, зато он обеспечивает резервирование данных в SSD-кэш, поэтому предпочтительнее.
Интересно, что производительность чтения и записи практически не зависит от типа "основного" RAID-массива жестких дисков, а определяется только скоростью работы SSD-накопителей кэш-памяти и типом ее RAID-массива. Более того, "кэшированный" RAID 6 из жестких дисков на операциях записи оказывается быстрее, чем "чистый" RAID 6 из SSD-накопителей (29"300 или 24"900 IOPS против 15"320 IOPS). Объяснение простое - фактически мы измеряем производительность не RAID 6, а RAID 0 или RAID 1 кэш-памяти, а эти массивы быстрее на записи даже при меньшем числе дисков.
В качестве кэш-памяти можно использовать и один SSD-накопитель, однако мы рекомендуем этого не делать, поскольку не обеспечивается резервирование данных кэш-памяти. В случае выхода такого SSD-накопителя из строя, целостность данных будет нарушена. Для SSD-кэширования лучше использовать как минимум два SSD-накопителя, объединенный в RAID-массив первого уровня ("зеркало").
Надеемся, что информация, изложенная в данной статье, поможет Вам в выборе эффективной конфигурации дисковой подсистемы сервера. Кроме того, необходимую техническую консультацию всегда готовы оказать наши менеджеры и инженеры.
Серверная платформа — Team R2000GZ
Расширитель SAS-портов Intel RES2CV360 36 Port Expander Car
RAID-контроллер — Intel RS25DB080 с ключом AXXRPFKSSD2
HDD — 8 дисков SAS 2,5" Seagate Savvio 10K.5 300GB 6Gb/s 10000RPM 64MB Cache
SSD — 8 или 4 накопителя SSD SATA 2.5" Intel 520 Series 180GB 6Gb/s
Тестирование выполнялось при помощи программы Intel IO Meter.
Для каждого варианта аппаратной конфигурации выбирались оптимальные настройки кэш-памяти контроллера.
Объем виртуального диска для тестирования — 50GB. Такой объем был выбран для того, чтобы тестируемый диск мог полностью поместится в SSD-кэш.
Прочие параметры:
Strip Size — 256KB.
Размер блока данных для последовательных операций — 1MB.
Размер блока данных для операций случайного доступа — 4 KB.
Глубина очереди — 256.
Если вы решили приобрести твердотельный SSD накопитель, то на это может быть несколько причин:
Однако установить ССД в компьютер или ноутбук, а затем заполнить его информацией недостаточно. Необходимо также оптимизировать его работу с работой вашей OC.
Рассмотрим основные методы оптимизации SSD диска.
Технология, позволяющая использовать функцию TRIM для различных твердотельных накопителей. Ее включение производится на уровне BIOS вашего ПК или ноутбука.
Включение AHCI SATA:
По умолчанию данная функция включена на windows 7 и выше, однако, лучше вручную проверить работает ли эта функция. Смысл TRIM в том, что после удаления файлов, windows передает SSD накопителю информацию, что определенная область диска не используется и ее можно очистить для записи. (в HDD данные остаются и запись производится «поверх» существующей). Со временем, если функция отключена, будет происходить падение производительности накопителя.
Проверка TRIM в Windows:
Данная функция помогает оптимизировать и ускорить работу HDD, но для SSD, она оказывает пагубное влияние. Для SSD, функция «автоматическая дефрагментация» по умолчанию отключена. Чтобы проверить работает ли она необходимо:
Функция Windows, помогающая выполнять быстрый поиск файлов на диске при больших объемах информации, однако, увеличивающая нагрузку по записи на SSD. Для ее отключения:
Ее функция создает файловый индекс, благодаря которому нахождение разнообразных файлов и папок производится быстрее. Однако скорости ССД вполне достаточно чтобы от нее отказаться. Для ее отключения необходимо:
Режим, который позволяет сохранять содержимое оперативной памяти на жёстком диске, благодаря чему при последующем включении, сохраняется информация и открытые приложения с предыдущего сеанса.
При использовании ССД смысл этой функции теряется, так как накопитель и так быстро стартует. А «Гибернация», создавая циклы «запись-перезапись», уменьшает продолжительность жизни SSD диска.
Отключение гибернации:
Данная функция повышает производительность вашего твердотельного накопителя. При ее включении используется технология записи и чтения NCQ. NCQ – принимает несколько запросов одновременно, а затем организовывает их порядок выполнения таким образом, чтобы достичь максимальной производительности.
Для подключения необходимо:
Prefetch – технология, с помощью которой часто используемые программы загружаются в память заранее, тем самым ускоряется последующий их запуск. При этом на дисковом пространстве создается одноименный файл.
Superfetch – технология похожая на Prefetch с тем отличием, что ПК предугадывает какие приложения будут запущенны, заблаговременно загружая их в память.
Обе функции не имеют пользы при использовании SSD. Поэтому их лучше всего отключить. Для этого:
Все вышеперечисленные действия можно выполнять вручную, но руками программистов были созданы программы – твикеры, предназначение которых кастомизация ОС windows, а также отдельных ее компонентов с помощью нескольких кликов. Одной из таких программ является SSD Mini Tweaker .
SSD Mini Tweaker – программа, разновидность твикеров, позволяющая без особых усилий оптимизировать ваш SSD.
Преимущества:
Такие манипуляции, как перенос кэша браузеров, файлов подкачки, временных папок Windows, бэкапа системы с SSD диска на HDD (или отключение данной возможности) являются бесполезными, так как хоть и увеличивают продолжительность жизни ССД, но ограничивают потенциал его использования.
Тем самым выполнив несложные вышеперечисленные манипуляции с вашей ОС, вы сможете продлить жизнь вашего накопителя, а также настроить его на режим максимальной производительности.
В статьях про СХД из "конспекта админа" практически не рассматривались технологии софтовой организации дискового массива. Кроме того, за кадром остался целый пласт относительно дешевых сценариев ускорения хранилищ с помощью твердотельных дисков.
Поэтому в этой статье рассмотрю три неплохих варианта использования SSD-дисков для ускорения подсистемы хранения.
Чаще всего твердотельные накопители рассматривают просто как альтернативу HDD, с большей пропускной способностью и IOPS. Однако, такая замена "в лоб" часто стоит слишком дорого (брендовые диски HP, например, стоят от $2 000), и в проект возвращаются привычные накопители SAS. Как вариант, быстрые диски просто используются точечно.
В частности, удобным выглядит использование SSD для системного раздела или для раздела с базами данных – с конкретным выигрышем в производительности можно ознакомится в . Из этих же сравнений видно, что при использовании обычных HDD узким местом является производительность диска, а в случае SSD сдерживать будет уже интерфейс. Поэтому замена одного лишь диска не всегда даст такую же отдачу, как комплексный апгрейд.
В серверах используют SSD с интерфейсом SATA, либо более производительные SAS и PCI-E. Большинство представленных на рынке серверных SSD с интерфейсом SAS продаются под брендами HP, Dell и IBM. К слову, даже в брендовых серверах можно использовать диски OEM-производителей Toshiba, HGST (Hitachi) и других, которые позволяют сделать апгрейд максимально дешевым при схожих характеристиках.
С широким распространением SSD был разработан отдельный протокол доступа к дискам, подключенным к шине PCI-E – NVM Express (NVMe). Протокол разработан с нуля и значительно превосходит своими возможностями привычные SCSI и AHCI. С NVMe обычно работают твердотельные диски с интерфейсами PCI-E, U.2 (SFF-8639) и некоторые M.2, которые быстрее обычных SSD более чем вдвое . Технология относительно новая, но со временем она обязательно займет свое место в самых быстрых дисковых системах.
Немного про DWPD и влияние этой характеристики на выбор конкретной модели.
При выборе твердотельных дисков с интерфейсом SATA следует обращать внимание на параметр DWPD, который определяет долговечность диска. DWPD (Drive Writes Per Day) – это допустимое количество циклов перезаписи всего диска в сутки на протяжении гарантийного периода. Иногда встречается альтернативная характеристика TBW/PBW (TeraBytes Written, PetaBytes Written) – это заявленный объем записи на диск на протяжении гарантийного периода. В SSD для домашнего использования показатель DWPD может быть меньше единицы, в так называемых "серверных" SSD - 10 и более.
Такая разница возникает из-за разных типов памяти:
SLC NAND . Самый простой тип – в каждой ячейке памяти хранится один бит информации. Поэтому такие диски надежны и обладают хорошей производительностью. Но приходится использовать больше ячеек памяти, что негативно влияет на стоимость;
MLC NAND . В каждой ячейке хранится уже два бита информации – самый популярный тип памяти.
eMLC NAND . То же самое что и MLC, но повышена устойчивость к перезаписи благодаря более дорогим и качественным чипам.
Таким образом, при точечной замене обычных дисков твердотельными логично использовать MLC-модели в RAID 1, что даст отличную скорость при том же уровне надежности.
Считается, что использование RAID совместно с SSD – не лучшая идея. Теория основывается на том, что SSD в RAID изнашиваются синхронно и в определенный момент могут выйти из строя все диски разом, особенно при ребилде массива. Однако, с HDD ситуация точно такая же. Разве что, испорченные блоки магнитной поверхности не дадут даже прочитать информацию, в отличие от SSD.
По-прежнему высокая стоимость твердотельных накопителей заставляет задуматься об альтернативном их использовании, помимо точечной замены или использования СХД на базе одних лишь SSD.
От размера и скорости кэша RAID-контроллера зависит скорость работы массива в целом. Расширить этот кэш можно с помощью SSD. Технология напоминает решение от Intel.
При использовании подобного кэша данные, которые используются чаще, хранятся на кэширующих SSD, с которых производится чтение или дальнейшая запись на обычный HDD. Режимов работы обычно два, аналогично привычному RAID: write-back и write-through.
В случае write-through ускоряется только чтение, а при write-back – чтение и запись.
Подробнее об этих параметрах вы можете прочитать под спойлером.
При настройке кэша write-through запись проводится как в кэш, так и на основной массив. Это не влияет на операции записи, но ускоряет чтение. К тому же, перебои питания или всей системы для целостности данных уже не так страшны;
Для работы обычно требуется специальная лицензия или аппаратный ключ. Вот конкретные названия технологии у популярных на рынке производителей:
LSI (Broadcom) MegaRAID CacheCade. Позволяет использовать до 32 SSD под кэш, суммарным размером не более 512 ГБ, поддерживается RAID из кэширующих дисков. Есть несколько видов аппаратных и программных ключей, стоимость составляет около 20 000 р;
Microsemi Adaptec MaxCache. Позволяет использовать до 8 SSD в кэше в любой конфигурации RAID. Отдельно лицензию покупать не нужно, кэш поддерживается в адаптерах серии Q;
Схема работы SSD-кэша предельно проста – часто используемые данные перемещаются или копируются на SSD для оперативного доступа, а менее популярная информация остается на HDD. Как итог, скорость работы с повторяющимися данными значительно возрастает.
В качестве иллюстрации работы RAID-кэша на базе SSD можно привести следующие графики:
StorageReview – сравнение производительности разных массивов при работе с базой данных: использованы обычные диски и их альтернатива на базе LSI CacheCade.
Но если есть аппаратная реализация, то наверняка существует и программный аналог за меньшие деньги.
Помимо программного RAID существует и программный SSD-кэш. В Windows Server 2012 появилась интересная технология Storage Spaces, которая позволяет собирать RAID-массивы из любых доступных дисков. Накопители объединяются в пулы, на которых уже размещаются тома данных – схема напоминает большинство аппаратных систем хранения. Из полезных возможностей Storage Spaces можно выделить многоярусное хранение (Storage Tiers) и кэш записи (write-back cache).
Storage Tiers позволяет создавать один пул из HDD и SSD, где более востребованные данные хранятся на SSD. Рекомендованное соотношение количества SSD к HDD 1:4-1:6. При проектировании стоит учитывать и возможность зеркалирования или четности (аналоги RAID-1 и RAID-5), так как в каждой части зеркала должно быть одинаковое количество обычных дисков и SSD.
Кэш записи в Storage Spaces ничем не отличается от обычного write-back в RAID-массивах. Только здесь необходимый объем "откусывается" от SSD и по умолчанию составляет один гигабайт.