image alt text


В статьях про СХД из "конспекта админа" практически не рассматривались технологии софтовой организации дискового массива. Кроме того, за кадром остался целый пласт относительно дешевых сценариев ускорения хранилищ с помощью твердотельных дисков.


Поэтому в этой статье рассмотрю три неплохих варианта использования SSD-дисков для ускорения подсистемы хранения.


Почему просто не собрать массив из 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, но повышена устойчивость к перезаписи благодаря более дорогим и качественным чипам.


  • TLC NAND. В каждой ячейке хранится по три бита информации – диск максимально дешев в производстве, но обладает наименьшими производительностью и долговечностью. Чтобы компенсировать потери по скорости, для внутреннего кэша часто используется память SLC.


Таким образом, при точечной замене обычных дисков твердотельными логично использовать MLC-модели в RAID 1, что даст отличную скорость при том же уровне надежности.


Считается, что использование RAID совместно с SSD – не лучшая идея. Теория основывается на том, что SSD в RAID изнашиваются синхронно и в определенный момент могут выйти из строя все диски разом, особенно при ребилде массива. Однако, с HDD ситуация точно такая же. Разве что, испорченные блоки магнитной поверхности не дадут даже прочитать информацию, в отличие от SSD.

По-прежнему высокая стоимость твердотельных накопителей заставляет задуматься об альтернативном их использовании, помимо точечной замены или использования СХД на базе одних лишь SSD.


Расширяем кэш RAID-контроллера


От размера и скорости кэша RAID-контроллера зависит скорость работы массива в целом. Расширить этот кэш можно с помощью SSD. Технология напоминает решение Smart Response от Intel.


При использовании подобного кэша данные, которые используются чаще, хранятся на кэширующих SSD, с которых производится чтение или дальнейшая запись на обычный HDD. Режимов работы обычно два, аналогично привычному RAID: write-back и write-through.


В случае write-through ускоряется только чтение, а при write-back – чтение и запись.


Подробнее об этих параметрах вы можете прочитать под спойлером.
  • При настройке кэша write-through запись проводится как в кэш, так и на основной массив. Это не влияет на операции записи, но ускоряет чтение. К тому же, перебои питания или всей системы для целостности данных уже не так страшны;


  • Настройка write-back позволяет записывать данные сразу в кэш, что ускоряет операции чтения и записи. В RAID-контроллерах эту опцию можно включить только при использовании специальной страхующей энергонезависимую память батарейки, либо при использовании флэш-памяти. Если же применять в качестве кэша отдельный SSD, то проблема с питанием уже не стоит.


Для работы обычно требуется специальная лицензия или аппаратный ключ. Вот конкретные названия технологии у популярных на рынке производителей:


  • LSI (Broadcom) MegaRAID CacheCade. Позволяет использовать до 32 SSD под кэш, суммарным размером не более 512 ГБ, поддерживается RAID из кэширующих дисков. Есть несколько видов аппаратных и программных ключей, стоимость составляет около 20 000 р;


  • Microsemi Adaptec MaxCache. Позволяет использовать до 8 SSD в кэше в любой конфигурации RAID. Отдельно лицензию покупать не нужно, кэш поддерживается в адаптерах серии Q;


  • HPE SmartCache в серверах ProLiant восьмого и девятого поколения. Актуальная стоимость доступна по запросу.

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


В качестве иллюстрации работы RAID-кэша на базе SSD можно привести следующие графики:


image alt text


StorageReview – сравнение производительности разных массивов при работе с базой данных: использованы обычные диски и их альтернатива на базе LSI CacheCade.


Но если есть аппаратная реализация, то наверняка существует и программный аналог за меньшие деньги.


Быстрый кэш без контроллера


Помимо программного RAID существует и программный SSD-кэш. В Windows Server 2012 появилась интересная технология Storage Spaces, которая позволяет собирать RAID-массивы из любых доступных дисков. Накопители объединяются в пулы, на которых уже размещаются тома данных – схема напоминает большинство аппаратных систем хранения. Из полезных возможностей Storage Spaces можно выделить многоярусное хранение (Storage Tiers) и кэш записи (write-back cache).


image alt text


Storage Tiers позволяет создавать один пул из HDD и SSD, где более востребованные данные хранятся на SSD. Рекомендованное соотношение количества SSD к HDD 1:4-1:6. При проектировании стоит учитывать и возможность зеркалирования или четности (аналоги RAID-1 и RAID-5), так как в каждой части зеркала должно быть одинаковое количество обычных дисков и SSD.


Кэш записи в Storage Spaces ничем не отличается от обычного write-back в RAID-массивах. Только здесь необходимый объем "откусывается" от SSD и по умолчанию составляет один гигабайт.


Общая схема работы выглядит так:


  • При записи на чистый диск данные сохраняются на SSD;


  • Когда SSD заполнены, данные пишутся в write-back кэш, который записывается на HDD;


  • Если кэш переполнен, запись ведется напрямую на HDD;


  • В процессе работы данные реорганизуются так, чтобы "горячая" информация хранилась на SSD, а “холодная” – на HDD.

Если рассматривать другие операционные системы, то технологий доступно еще больше. Например, в GNU\Linux есть bcache, EnhanceIO, dm-cache и lvmcache, L2ARC в ZFS, Cache Tiering и Cache Pool в Cephs.


Если говорить о программном ускорении дисковой системы, то интересным вариантом выглядит использование для этих целей оперативной памяти. Существует ряд приложений, позволяющих "откусить" часть RAM под кэш – например PrimoCache. Подобные решения, помимо ускорения работы, помогут и продлить жизнь SSD. Главное предусмотреть защиту от проблем с питанием и не размещать в таких разделах слишком важные данные.


Итого


Файловые и веб-серверы хорошо работают с кэшем на SSD, а для размещения производственной базы данных приоритетнее RAID-массив из обычных дисков под данные и отдельное SSD-зеркало под журналы транзакций. Остальные сценарии работы с данными требуют более творческого подхода и знания специфики использования.


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


Заодно расскажите, что думаете о RAM-дисках – только ли это just for fun технология, на ваш взгляд?

Поделиться с друзьями
-->

Комментарии (16)


  1. RouR
    10.01.2017 13:55

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


  1. reallord
    10.01.2017 14:04

    Не знаю как насчет Just For Fun, но у нас RAM диски ОЧЕНЬ активно используются в продакшене для дисков для временных файлов и так же для MS SQL дисков для tempdb.

    При активном использовании tempdb, со скоростью записи под 1Гбит/сек, использовать под это даже SSD слишком медленно.


    1. avelor
      10.01.2017 15:02

      чем именно создаете RAM-диски, если не секрет?


      1. reallord
        10.01.2017 16:06

        Primo Ramdisk Server Edition — работает больше 3-х лет, полет нормальный.
        RAM диски от 5 до 50Гб
        Windows Server 2008 и 2012


        1. avelor
          10.01.2017 16:55

          спасибо. а их же программу для кэша не пробовали?


          1. reallord
            10.01.2017 17:04

            Нет, это как раз тот вариант, то если солнце всходит и заходит, то не трогай :)
            Так как продакшн, на критичной базе 24/7/365 с сотнями бизнес пользователей.


            1. avelor
              10.01.2017 17:48

              =) спасибо. просто Primo Cache заинтересовал — в плане ускорения дисковой подсистемы в целом, а не ручное распределение горячих и холодных данных. обычных-то рам-дисков как у дурака фантиков, а вот не системного кэша решений других я на шару не нашел (под мс). вдруг кто в продакшене использует:)


    1. WarP
      10.01.2017 21:02
      +1

      NVM-e SSD умеют 3000Мб+ в запись и сотни тысяч IOPS… Стоят правда дороже чем лицензия Примодиска, но и емкость больше — например 1.2Тб на диск…


      1. reallord
        11.01.2017 08:08

        Вопрос не в сотнях тысяч IOPs, а в задержках и скорости записи. Кроме того NVMe не впихнешь в блейды HP ниже Gen10, и даже в Gen10 не во все.

        Здесь вопрос именно в задержках(latency). Для RAM диска, это самый возможных технологический минимум.
        Так же немаловажно, что писать временные данные и tmp файлы на ограниченный по объему записи SSD за десятки килобаксов, не самая хорошая идея при текущей стоимости RAM.

        У меня на RAM диск на рабочем сервере MS SQL в день записывается 10-15 Тб временных данных.


        1. Tomas_Torquemada
          11.01.2017 11:24

          Кроме того NVMe не впихнешь в блейды HP ниже Gen10, и даже в Gen10 не во все. /blockquote>
          А уже Gen10 есть?

          Для G8/G9 — HPE Mezzanine PCIe Workload Accelerators.
          Latency у них повыше, чем у NVMe, но между 95 и 110/115 микросекунд разницу почувствовать нужно очень постараться.


  1. Tomas_Torquemada
    10.01.2017 17:48

    а в случае SSD сдерживать будет уже интерфейс.


    Можно и раньше уткнуться.
    У тех же серверов HPE поэтому существует HP SSD Smart Path

    Подробнее


  1. Revertis
    10.01.2017 19:12

    Жаль, что PrimoCache не запускается на ноуте после обновления на Win10 Anniversary Update :(
    Вернее, запускается процесс, висит в памяти (около 2-3 мб, всегда одинаково), но не появляется интерфейс программы.


    1. lostmsu
      10.01.2017 19:50

      Немного самопиара: https://diskache.io/
      Правда пока существующий партишн не умеет кешировать через GUI.


      1. Revertis
        10.01.2017 21:30

        Эх, я хотел кэшить в памяти, не на SSD…


        1. lostmsu
          11.01.2017 07:07

          Если RAMdisk, можно воспользоваться более низкоуровневым ImDisk.
          Если нужно именно кеширование, то я навскидку не понимаю, зачем что-то ещё делать. Винда и так всю свободную память забивает дисковым кешем. Но если приспичило, в Diskache можно кеш аллоцировать в памяти вместо ЖД. Но работать будет только со включенным WriteBack. Иначе первая же перезагрузка потеряет все данные. Если интересно, могу инструкцию написать.


  1. Gring76
    10.01.2017 23:12

    Использую ZFS в Linux
    SSD L2ARC + ZIL
    ZFS ограничиваю в 16 / 32 Гб в зависимости от общего к-ва памяти RAM

    Довольно стабильно и производительность чтения SATA RAID 5 (3 диска ) 500-550 Мб линейное чтение и до 70-90 Мб по 4к рандомное

    Это при тестах объемов более чем RAM

    При тестах на объемах которые выделяются для ZFS чтение запись порядка о 4000 до 13000 Мб / сек линейное (до 70-90 Мб по 4к рандомное)