Клиент сформулировал мне в HOSTKEY задачу — на 1 (один) сервер с 12 ядрами и 64Гб памяти надо примерно 3-4Тб места под более-менее однотипные виртуалки, но что бы работало все как на SSD и при этом уложиться в 16000р в месяц. Стали думать, вариантов было несколько:
- делаем все на SSD. берем 6 дисков по 500Гб типа Samsung 840 Pro eMLC, собираем их в страйп или еще как хитро, добавляем пару дисков по 3Тб для бакапа и… не проходим в бюджет. 2U сервер, 8 портовый RAID контроллер и диски по 12000р за штуку не пропускают.
- Делаем все на жестких дисках, берем 12x300Gb SAS 15K и опять не проходим ни в бюджет, ни в производительность.
- Используем RAID контроллер с внешним SSD кэшем – LSI CacheCade или Adaptec MaxCache. Идея получше, но нам надо 4 диска по 2Тб в RAID10 – придется брать 8 портовый контроллер и к нему SSD на 120Гб eMLC или SLC. Что бы к SSD был доступ, опять надо брать 2U корпус. Контроллер 8 портов + SSD стоит около 37000р, в бюджет не проходим.
- Используем новую LSI Nytro MegaRAID NMR8100-4i. Берем 1U систему, ставим в нее контроллер, ставим в нее 4 диска по 2Тб в RAID10 и вписываемся и в производительность и в бюджет. Нитра стоит 27000р, на ней уже стоят 2 диска по 44Гб, причем SLC!
Сказано – сделано, примерно 3 рабочих дня и 4 вариант у нас на столе. Посмотрим, на что он способен — не на рекламных проспектах, а на практике.
Машина в сборе:
1U Supermicro, 2xE5-2630 2,3GHz 12 ядер, 16Gb DDR3 ECC Reg LV х4=64Гб памяти (можно расширить до 256Гб при желании), LSI Nytro MegaRAID NMR8100-4i, 4x2Tb WDC RE 7200rpm HDD (WD2000FYYZ) SATA3. Все компоненты на 3-х летней гарантии.
Цена в месяц с размещением и 100М каналом – 16000р.
Спецификация нашей Нитры:
8xPCIe 3.0 (только Е5 и Е3), 4 порта SAS/SATA 6Gbps, два SSD SLC по 64Гб с резервированием 30% места, 1Гб кэша на DDR3, все возможные уровни RAID, поддержка экспандеров и можно поставить батарейку. Цена образца на момент августа 2013 года – 27000р, 3 года гарантии.
Кто хочет почитать полный обзор — внимание, много букв на английском.
Тесты
Посмотрим, на что способна наша Нитра. Смотреть будем под Виндой 2012 – наиболее наглядно. Сначала настроим в БИОС необходимые массивы и посмотрим настройки контроллера – все гибко настраивается самым традиционным образом. Внешний вид утилиты не менялся лет 15 наверно.
RAID
Отдельно настраивается RAID из пары встроенных SSD по 44Гб, отдельно логический том из остальных дисков. Можно сделать зеркало или страйп – выберем страйп, тем более что в документации явно написано, что если диск выйдет из строя, то система сама уберет его из дела. На логическом томе можно делать любой RAID – от 0 до 6. Все настраивается традиционно.
Готовый сетап
Загрузим Windows 2012 сервер, в комплекте с Нитрой идет флэшка с Megaraid Storage Manager – наконец-то. Ставим его, все видно из коробочки. Софт обычный, тоже не менялся лет 10. Все родное, на своих местах. Понятное поведение при авариях.
Очень важно, что теперь мы видим процент износа SSD и можем своевременно менять контроллер и принимать превентивные меры. На старых контроллерах если SSD был в массиве, то добиться от него SMART или еще чего-то было нереально.
Прогон блочного устройства
Собираем том на 4Тб — RAID10 и не размечая его подергаем HD Tune Pro для проверки сухой производительности, без помощи ОС и ее кэшей.
Чтение:
Прогон по чтению на всю емкость диска дает ожидаемый результат – 200-250Мб в секунду, около 100 IOPS, 10мс. В кэше явно пусто – все идет с диска. Маловато для 10 RAID, должно быть погуще. Но у нас другая задача, виртуализация. Производительность по чтению обычно нивелируется кэшами ОС.
IOPS по случайным чтениям – ничего волшебного, все операции мимо SSD – все предсказуемо медленно, как и должно быть с пары дисков.
Запись:
вот тут что надо, в среднем 266Мб/с и доступ 0,17мс. Нитра пишет в SSD и потом из него крупными блоками на диски. В начале забился 1Гб памяти контроллера, потом 3Тб системе хватало запасу по SSD и только последний 1 Тб писался уже прямиком на диски без кэша, диски не успевали.
Посмотрим что с записью – вот тут все шикарно. В одну очередь мы видим штатную производительность SSD – все записи идут через него, диски не участвуют.
Мы имеем 14000 IOPS на мелких блоках с типичным времени доступа 0,07 мс. Отлично! Если мы коммитим транзакции с базы – они будут проваливаться на диск моментально. Если виртуалка решила посвопиться или что-то отложить на диск – это не окажет влияния на дисковую подсистему.
Прогон с файловой системой
Создаем теперь файловую систему и посмотрим, как ОС будет работать с файлами и в целом с размеченным местом. Все стандартные тесты по всему тому особо не отличаются от тестов блочного устройства. Зададим файлик на 10Гб и погоняем его.
Первый прогон, файл еще не в кэше. Первый гиг на запись проваливается через память на скоростях около 3Гб/с, потом замедляется до 1000Мб/с, после 50Гб видимо не влезает уже в SSD и начинает писать на диски на 250Мб/с.
Значения IOPS снимаются уже с SSD-кэша – в одну нить 4000 на чтение и 10000 на запись, отлично! В 32 нити – 52000 на чтение и 23000 на запись, видимо 32 нити перебор. Файлы размером 512Мб попадают в RAM кэш контроллера и раздаются оттуда уже со скоростью PCIe – 2,5Гб в секунду.
Повтор операции показывает наглядно, как раздается файл из пары SSD – ровная полка на 1000Мб в секунду — быстрее RAID0 на паре интегрированных SSD не разгоняется. На IOPS дело не влияет.
Linux
Попробуем загрузиться на свежем Центос и проверим, видна ли наша Нитра без бубна. Ответ верный, LSI себе верна – все видно сразу и без подсказок.
Потестим штатным бенчмарком, первый раз – унылая картинка, второй раз значительно веселее! Среднее чтение 426Мб/с с задержкой около 10мс, допустимо при тестах поверхности в 4Тб.
Пробуем как более ранние карты LSI увидят наш RAID10 – я взял 4 разных контроллера типа LSI 9260 и ОЕМ Intel – ни один не смог загрузить конфигурацию массива. Возможно 9266 и смогут ее прочитать, но таких под рукой не было. В целом надо про это помнить при формировании ЗИП.
Для чего надо использовать Нитру?
- Для виртуализации: в дисках ВМ не так много движущихся фрагментов. Статистика по нашим ВПС-нодам облака показывает на каждую операцию чтения приходится 2-3 операции записи, долетающих до дисковой подсистемы. За сутки перезаписывается 10% используемого места и перечитывается от силы 5-6% от общей емкости. Свои метрики померять элементарно – запустите iostat на сутки и все про себя узнаете.
- Для баз данных: Если база данных не влезла целиком в память, Нитра будет спасением. Все важное с индексами будет на SSD и в памяти, все неважное из объемных справочников будет на диске. Все транзакции на запись будут на месте моментально, лочится будет нечему.
Для чего точно не надо использовать:
- крупные медиа-архивы, сайты с видео, стриминг, бакапы и резервные хранилища. Выгоды не будет – кэш не отработает или будет слишком слаб. Для веб-сайтов тоже особого смысла нет – все особо важное прекрасно помещается в память и раздается оттуда, а не важное на блочном уровне не будет кэшировано.
- Под файловые системы типа ZFS и прочие, которые хотят видеть сами диски. Кэш не поймет логику работы файловой системы и будет пропадать.
- Под видео-наблюдение, нелинейный монтаж – длинные линейные чтения и записи это не про Нитру.
Итого
В заключение могу сказать так – Nytro MegaRAID NMR 8100-4i доступна для заказа в HOSTKEY по цене 1500р в месяц к цене обычного 4-х портового RAID контроллера в Москве и +30 Евро к заказным серверам в Нидерландах. Это выгоднее и надежнее использования чистых SSD для построения файловых систем и надежнее чем строительство софтварных файлеров с кэшами в памяти.
Нитра отличное подспорье для крупных серверов баз данных и внутрекорпоративной вирутализации, когда можно или нужно обходиться без глобального СХД. 4-8 SAS/SATA дисков + Нитра = производительность SSD без SSD и надежность RAID.
На базе Нитры мы ускорим работу нашего кластера виртуализации в Голландии в самое ближайшее время и думаю, существенно повысим надежность и производительность, о чем я отпишусь дополнительно.
Автор — генеральный директор HOSTKEY
Автор: ULP