Upgrade дисковой подсистемы старого сервера с шиной PCIe 1.0 — 2.0

8j3-tctq7lpyfqftclekfe3ghqk.jpeg

Почему темой данной статьи выбран апгрейд дисковой подсистемы
Понятно, что в первую очередь нужно, как правило:
  1. Увеличить оперативную память. Это настолько очевидный ход, что я даже не счёл нужным писать об этом в основной статье
  2. Поставить дополнительный процессор (ы) или заменить оба процессора на максимально производительные версии поддерживаемые сокетами сервера.

Для старых серверов, что память, процессоры, как правило, можно найти по бросовым ценам.


В определённый момент перед любым владельцем собственного сервера становится вопрос — upgrade или новый сервер.

Поскольку цена нового сервера сейчас может измеряться миллионами рублей, то многие идут по пути апгрейда.

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

В статье приведён список серверных SSD PCI-E 2.0×8, которые сильно подешевели сейчас, указаны рейд-контроллеры с поддержкой SSD-кеширования и испытан SATA III SSD на интерфейсе SATA II.
Самый очевидный способ апгрейда дисковой подсистемы — это переход с HDD на SSD. Это справедливо как для ноутбуков, так и для серверов. На серверах, пожалуй, отличие только в том, что SSD можно легко скомпоновать в рейд.

Правда есть тонкие моменты связанные с тем, что портов SATA III на старом сервере может и не быть и тогда придётся заменить или поставить соответствующий контроллер.

Есть, конечно, и промежуточные способы.

Кеширование на SSD.


В целом этот способ неплохо подходит для баз данных, 1C, любого произвольного доступа. Скорость действительно убыстряется. Для огромных файлов, видеонаблюдения этот способ бесполезен.

Рейд-контроллеры LSI (IBM, DELL, CISCO, Fujtsu)


Начиная с серии 92xx у LSI есть технология CacheCade 2.0, которая позволяет использовать почти любые SATA SSD как кеш рейд-массива. Как на чтение, так и на запись. И даже создавать зеркало из кеширующих SSD.

С брендированными контроллерами всё сложнее. В особенности это касается IBM. Ключи и SSD для CacheCade придётся покупать у IBM за бешеные деньги, поэтому проще сменить контроллер на LSI и купить по-дешевке хардварный ключ. Софтверные ключи стоят существенно дороже хардварных.

Рейд-контроллеры Adaptec


На контроллерах Adaptec есть технология MaxCache, которая также позволяет использовать SSD как кеш. Нас интересуют версии контроллеров, которые заканчиваются на букву Q.

Q-контроллеры способны использовать почти любой SSD, а не только SSD поставляемые Adaptec.

  • Начиная с 5xxx у всех контроллеров есть поддержка Hybrid raid. Суть этой технологии, что производится чтение всегда с SSD, когда есть зеркало один из дисков в котором SSD.
  • 5xxxQ, например 5805ZQ. Эти контроллеры поддерживают MaxCache 1.0. Только кеширование чтения.
  • 6xxQ, например 6805Q. MaxCache 2.0. Кеширование чтения и записи.
  • 7xxQ, например 6805Q. MaxCache 3.0. Кеширование чтения и записи.
  • 8xxQ для целей апгрейда почти не имеет смысла использовать из-за высоких цен.


Статья про кеширование на SSD на Хабре (контроллеры и ОС).

Программные технологии кеширования на SSD


Я не буду освещать эти технологии. Практически в любой ОС сейчас они поддерживаются. Мне запомнилось, что при использовании btrfs, она автоматически переправляет запросы на чтение к устройству с самой короткой очередью — SSD.

SATA III SSD на интерфейсе SATA II


Поскольку не всегда есть возможность и деньги на новый контроллер, то возникает вопрос насколько хорошо SATA III SSD работают на устаревшем интерфейсе SATA II.

Проведём небольшой тест. В качестве подопытного у нас будет SATA III SSD Intel S3710 на 400ГБ.


Команды используемые для тестирования скорости
fio --name LinRead --eta-newline=5s --filename=/dev/sda --rw=read --size=500m --io_size=10g --blocksize=1024k --ioengine=libaio --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting 

fio --name LinWrite --eta-newline=5s --filename=/dev/sda --rw=write --size=500m --io_size=10g --blocksize=1024k --ioengine=libaio --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting

fio --name RandRead --eta-newline=5s --filename=/dev/sda --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --iodepth=32 --direct=1 --numjobs=4 --runtime=60 --group_reporting

fio --name RandWrite --eta-newline=5s --filename=/dev/sda --rw=randwrite --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --iodepth=32 --direct=1 --numjobs=4 --runtime=60 --group_reporting


Как видно разница и по линейной скорости, IOPS, задержкам очень приличная, поэтому имеет смысл использовать только SATA III интерфейс, а если его нет, то ставить контроллер.

Справедливости ради скажу, что по другим экспериментам разница в скорости случайного чтения и записи получилась незначительная. Возможно, такая большая разница по IOPS между SATA II и SATA III могла получиться потому что у меня стоял какой-то крайне неудачный контроллер SATA II или драйвер с какими-то багами.

Однако факт такой, что нужно проверять скорость SATA II — вдруг у вас такой же тормозной контроллер. В этом случае обязателен переход на SATA III контроллер.

PCIe SSD на шине PCI-e 2.0 или 1.0


Как известно, самые быстрые SSD — это PCI-e NVMe, которые не ограничены протоколами SAS или SATA.

Однако при установке современных PCI-e SSD нужно учитывать факт, что большинство из них используют всего 4 линии PCI-e, как правило PCI-e 3.0 или 3.1.

А теперь посмотрим таблицу скоростей шины PCI-e.

При установке PCI 3.0×4 SSD в шину PCI-e 2.0 он будет работать на таком же числе линий, но на существенно меньшей скорости. Есть проблема в том, что линейные скорости современных PCI-e SSD превышают пропускную способность шины PCI-e 2.0 и тем более PCI-e 1.0.

M.2 SSD и PCI-e переходник

Есть неплохие варианты апгрейда, когда мы покупаем за 10 долларов переходник и ставим M.2 SSD в сервер, но опять таки для хороших SSD будет зарезание скоростей (в особенности на PCI-e 1.0), да и M.2 SSD не всегда отличаются готовностью для серверных нагрузок: большой износостойкостью, защитой по питанию и стабильностью скоростных характеристик из-за заполнения SLC-кеша на дешевых моделях.

Итак этот способ может подойти только для сервера с шиной PCI-e 2.0 и занятом некритичной работой.

PCI-E 2.0×8 SSD


Самый экономически логичный апгрейд — это использование PCI-E 2.0×8 SSD для серверов с шиной PCI-e 1.0 (пропускная способность до 2 ГБ/сек) и PCI-e 2.0 (до 4 ГБ/сек).

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

Я составил таблицу таких морально устаревших SSD, которые прекрасно разгонят ваш старый сервак. В конец таблицы я добавил несколько SSD с интерфейсом PCI-E 3.0×8. Вдруг вам повезёт и попадутся по разумной цене.


brs3n4erpeqpthnwsp9pvgaybq0.jpegИз этих SSD особняком стоят Fusion ioMemory. Научным директором Fusion был Стив Возняк. Потом эту компанию за 1.2 миллиарда долларов купила SanDisk. В своё время они стоили от $50 000 за штуку. Сейчас же можно их купить за несколько сотен долларов в новом состоянии за диск ёмкостью от 1ТБ и выше.

Если приглядеться к таблице, то видно они имеют довольно высокое число IOPS на запись практически равное числу IOPS на чтение. Учитывая их текущую цену, на мой взгляд, на эти SSD стоит обратить внимание.

Правда у них есть несколько особенностей:

  1. Они не могут быть загрузочными
  2. Нужен драйвер для использования. Драйвера есть практически подо всё, но под последние версии Linux их придётся компилировать.
  3. Оптимальный размер сектора у них 4096 байт. (512 тоже поддерживается)
  4. Драйвер при наихудшем сценарии может потреблять довольно много RAM (при размере сектора 512 байт)
  5. Скорость работы зависит от скорости процессора, поэтому энергосберегающие технологии лучше отключать. Это и плюс и минус, так как с помощью мощного процессора устройство может работать даже быстрее, чем это указано в спецификациях
  6. Нуждается в хорошем охлаждении. Для серверов это не должно быть проблемой.
  7. Не рекомендуется для ESXi, так как ESXi предпочитает диски с сектором 512N, а это может повлечь большой расход памяти драйвером.
  8. Брендированные версии этих SSD, как правило, не поддерживаются вендорами до уровня последнего драйвера от SanDisk (март 2019)


Я провёл тесты Fusion ioMemory в сравнении с довольно современным серверным SSD Intel P3700 PCI-E 3.0×8 (последний стоит раза в 4 дороже, чем Fusion похожей ёмкости). Заодно можно и посмотреть насколько сильно зарезается скорость из-за шины x4.
Да, линейная скорость чтения однозначно зарезается у Intel P3700. По паспорту должна быть 2800 МБ/сек, а у нас 1469 МБ/с. Хотя в целом можно сказать, что при шине PCI-e 2.0 можно использовать серверные SSD PCI-E 3.0×4, если их удастся достать по разумной цене.

Выводы


Дисковую подсистему старого сервера с шиной PCI-E 1.0 или 2.0 можно разкочегарить за счёт использования SSD, которые умеют утилизировать 8 линий PCI-E, которые дают пропускную способность до 4ГБ/сек (PCI-E 2.0) или 2ГБ/сек (PCI-E 1.0). Наиболее экономически это выгодно сделать используя морально устаревшие PCI-E 2.0 SSD.

Также просты в реализации компромиссные варианты связанные с покупкой ключа CacheCade для контроллеров LSI или замены контроллера Adaptec на Q-версию.

Ну и совершенно банальный способ — это купить (рейд)контроллер SATA III для того, чтобы SSD работали на полной скорости и вынестина них всё требующее скорости.

© Habrahabr.ru