До 2014 года на серверах FirstVDS мы использовали промышленные HDD-накопители с
SAS-интерфейсом и аппаратными контроллерами, собранные в RAID 10. Это решение полностью устраивало нас в плане надёжности и производительности. Проблемы с частичной потерей клиентских данных были 3 раза за 12 лет использования. Два раза выгорали аппаратные контроллеры. Один раз вышла из строя батарейка и при аварийном отключении питания встроенная кеш-память рейда очистилась.

Однако SAS HDD дорогие. Для одного сервера мы брали комплект из 4 дисков по 600 Гб, аппаратного RAID-контроллера с батарейкой. Всё решение обходилось в 44 806 руб. за 1 Тб. Повышать цены на VDS мы не хотели. Нужно было найти более дешёвое решение, при этом не потерять в скорости и надёжности. А в идеале и увеличить предоставляемое для VDS место.

Только SSD — ещё дороже. На тот момент диски по 240 Гб стоили от 8000 руб. Дешевле было остаться на Raid 10 SAS, чем использовать SSD суммарным объёмом в 1 Тб. А увеличить хранилище и того дороже. Поэтому мы рассмотрели несколько программных решений и включили SSD в тесты, чтобы сравнить скорость. Таблица с результатами ниже.

Альтернативные решения


zfs — файловая система и менеджер логических разделов с адаптивным замещающим кешем, разработанная компанией Sun Microsystems. Zfs нельзя включить в оригинальную версию ядра Linux из-за несовместимости лицензий (CDDL vs GPL). Систему можно прикрутить DKMS-модулями, но усилия не стоят того – судя по публичным тестам скорость записи/чтения была невысока. Тестировать сами не стали.

bcache — разработка Google, в 2013 году была ещё сырой — не использовалась в продакшене. Работала только с CentOS 7, а мы использовали CentOS 6. Bcache тоже не стали тестировать.

lvm cache — технология Linux сообщества. Тоже работала только с CentOS 7, но публичных тестов на тот момент не было — решили провести сами. Цифры не понравились.

flashcache — разработан Facebook: компания внушает доверие, и технология уже была проверена в продакшене.

Flashcache работает в 3 режимах:

  • Write through — данные сначала пишутся на диск, а потом сбрасываются в кеш. Кешируется только запись.
  • Write back — данные сначала пишутся в кеш, потом сбрасываются на диск. Кешируется запись и чтение.
  • Write around — данные пишутся на диск, а в кеш попадают после первого чтения. Кешируется только чтение.

Так как write back — самый быстрый режим, выбрали для тестов его.

MD — software raid. Flashcache работает в паре с MD и Raid 1. Мы включили в тестирование MD без Flashcache, чтобы проверить, как он работает отдельно.

Итоги тестирования


Чтобы максимально приблизить условия исследования к реальным, запустили рандомную запись и чтение в файл 32 Гб (примонтированную файловую систему).
Параметр raid10 sas SSD MD flashcache write back
глубина очереди 32 32 32 32
IOPSread 1 401 51 460 598 6 124
IOPSwrite 999 23 082 230 3 205
скорость чтения 5 607 Kb/s 205 842 Kb/s 2 393 Kb/s 24 496 Kb/s
скорость записи 3 998 Kb/s 92 329 Kb/s 922 Kb/s 12 823 Kb/s

Flashcache в режиме writeback обошёл lvmcache и обогнал software raid. Сильно проиграл дорогим SSD, но главное, flashcache превзошёл наше решение на SAS HDD.

Новое решение с flashcache


По результатам исследования в январе 2014 года мы внедрили flashcache на SSD + SATA HDD. С тех пор на одном сервере стоит 1 SSD и 2 SATA HDD по 4ТБ в зеркале. Технология работает в режиме writeback: быстро записывает данные в кеш и медленно скидывает на основной носитель.

При внедрении и обслуживании flashcache мы столкнулись с некоторыми особенностями технологии.

Особенности flashcache


1) SSD изнашивается

Из-за превышенного количества записей/перезаписей SSD перестаёт записывать новые данные. Чтобы этого не произошло мы мониторим SMART-атрибуты:

  • Media_Wearout_Indicator – это время жизни или износ диска: значение для нового диска – 100, со временем оно уменьшается. Минимально допустимое – 10, при достижении этого значения диск становится пригодным только для чтения.
  • Reallocated_Sector_Count – количество переназначенных секторов – должно быть меньше 100.

Программа мониторинга следит за этими значениями в автоматическом режиме и уведомляет сотрудников о проблемных дисках. Нам остаётся только вовремя их менять.

Раньше мы использовали диски 240 Гб, они работали меньше года. Сейчас технология over-provisioning позволяет нам увеличить резервную область диска и за счёт этого продлить срок жизни SSD. Диск объёмом 1 Тб мы режем до 240 Гб, это рабочая область, остальные 760 Гб – резерв на износ. Сейчас SSD в среднем работает 1 год.

2) Сбои, когда сгорает SSD и теряются несинхронизированные (грязные) данные

В режиме writeback данные сначала попадают в кеш SSD и только потом в память SATA HDD. Данные, которые не успели скинуться на SATA HDD, называются грязными. При сбое они безвозвратно сгорают вместе с SSD. При экстренном отключении питания SSD тоже может выйти из строя с потерей данных.

К счастью, сбои происходят не так часто. За 2,5 года у нас произошло два случая с потерей клиентских данных, которые не успели записаться в хранилище.

Уменьшить количество сбоев можно двумя способами:

  • Использовать качественные серверные SSD. Что мы и делаем – покупаем диски Intel, Hitachi, Toshiba и др.
  • Настроить репликацию кеша (зеркальный рейд). Решение предусматривает установку второго SSD, но из-за редких сбоев деньги на него мы зажали.

3) Долго чистить кеш

Поменять SSD и настроить flashcache – 5 минут. Но перед этим нужно очистить кеш – скинуть все грязные данные на диски.

В среднем у нас 30% грязных данных на SSD, максимум – 70%. Очистка кеша занимает до 4 часов.

В это время система работает медленнее, потому что обращается к медленным носителям. Мы всегда предупреждаем клиентов о падении скорости, но форсировать процесс не можем. Скорость записи на SATA HDD зависит от того, насколько интенсивно клиенты используют диск. Чем интенсивнее используют, тем больше нагрузка и медленнее скорость записи.

4) Кеш может переполниться

Часто используемые данные находятся в кеше и называются горячими. На наших серверах их примерно 13%, максимум 62%. Такого объёма достаточно для быстрого чтения/записи всех VDS на сервере. Но переполнить кеш и снизить производительность может недоверие всего одного клиента.

Допустим, клиент захочет протестировать дисковую подсистему. Запустит программу рандомной записи файлов. Если диск клиента по объёму больше кеша, все плохо. Кеш переполнится и всё скатится в низкую производительность. Пострадают все VDS на сервере.

Если вздумаете провести такой тест, не ждите актуальных результатов. Мы программно ограничиваем нарушителю количество обращений на диск, это снижает скорость.

5) Flashcache не работает на Centos 7

После обновления ядра flashcache стал несовместим с Centos 7. Так как эта версия дистрибутива стоит на 50% наших серверов, проблема острая. Сейчас Centos 7 используется с sw raid1 с SSD. На трёх кластерах мы тестируем enhanceio — другую технологию кеширования — но пока не готовы озвучить результаты.

Результаты внедрения flashcache


Вычислим, насколько flashcache на SSD+SATA HDD выгоднее RAID 10 SAS. Для этого рассчитаем стоимость каждого решения.
RAID 10 SAS примерные цены за март 2013 г.
SAS 600 Гб, 4 шт. 7714 руб. x 4
аппаратный контроллер + батарейка 8600 руб. + 4500 руб.
кабель 850 руб.
= 44806 руб. или 1493 $ ( при курсе 1$=30 руб.)
— стоимость 1 Тб места на родительском сервере

SATA HDD + SSD цены на май 2017 г.
SATA HDD 4 Тб, 2 шт. 12 000 руб. x 2
SSD 17 100 руб.
= 41 100 руб. или 685 $ ( при курсе 1$=60 руб.)


С 2013 года доллар подорожал в 2 раза. Поэтому решение с flashcache в рублях стоит почти также, как RAID 10 SAS, а в долларах в 2 раза дешевле.

Увеличив объём хранилища в 4 раза, мы сократили цену 1 Тб. Теперь он дешевле в 4 раза в рублях и в 8 раз в долларах.

Вывод


В 2014 году мы внедрили flashcache — увеличили предоставляемое для VDS место в 4 раза, и повысили скорость взаимодействия с дисковой подсистемой. Это решение вышло дешевле предыдущего, позволило нам снизить затраты и не повышать цены на VDS.

Под вопросом осталась надёжность, всё-таки с HW RAID 10 SAS было меньше сбоев. В мае 2015 для людей, которым принципиально важна надёжность и скорость мы ввели тарифы с SSD в качестве основного носителя.
Поделиться с друзьями
-->

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


  1. redfenix
    02.06.2017 12:16

    Про надежность достаточно интересный вопрос:

    покупаем диски Intel, Hitachi, Toshiba

    хотелось бы узнать какие конкретно модели Вы ставите? Так как линейка данных производителей очень большая.


    1. redfenix
      02.06.2017 12:19

      Так же не очень понятна модель контролера который стоит 8600 руб, насколько мне известно HBA от LSI стоит дороже.


      1. FirstJohn
        05.06.2017 12:16

        Контроллер LSI logic LSI00197 (S 9260-41), цена на 2013 год, до роста доллара.


    1. redfenix
      02.06.2017 12:26

      (извиняюсь, что пишу много комментариев)
      Ну и третий вопрос, который возник по ходу прочтения статьи:
      Вы написали, что ставите SSD 1Tb, если посмотреть на серверные SSD от Intel серия S3610 стоит от 44000 рублей.
      за 17100 терабайт SSD в лучшем случае дестопный SSD от Intel.


      1. ifaustrue
        02.06.2017 12:54

        кажется, вы сами ответили на свой последний вопрос.


        1. redfenix
          02.06.2017 16:41

          SSD данного ценового сегмента не очень надежное решение.


          1. ifaustrue
            02.06.2017 16:43
            +1

            кажется нужно было вставить что-то типа «сарказм».
            Я не топик стартер, я #мимопроходил, но кажется, что в сегменте VPS и еже с ним — надёжность менее значимый показатель, чем экономика.

            Кажется, топик стартеру выгоднее менять диски каждый год, чем купить что-то надёжное и менять его раз в 5-ть лет. Но это конечно же догадки.


      1. FirstJohn
        05.06.2017 12:21

        17 000 руб. — это самые дешевые диски из тех, что мы используем под flashcache — 960gb TLC HDTS896EZSTA TOSHIBA.
        Раньше, до внедрения over-provisioning, ставили Intel SC2BA400G3 на 400Gb за 300$.
        Сейчас чаще используем Samsung PM серии за 490$.


  1. Arxitektor
    02.06.2017 13:01

    Диск объёмом 1 Тб мы режем до 240 Гб

    Как я понял ёмкость кеша 240 Гигов?
    А при таких объёмах не пробовали перейти на RAM диск ??
    И как то быстро SSD дохнет. Всего 1 год и это с резервом 70% от ёмкости.
    Наверное в вас безумные нагрузки на запись.


    1. FirstJohn
      06.06.2017 05:43

      Всё верно, кеш – 240 Гб. Нагрузки на запись у нас действительно большие. Учитывая специфику услуг, это логично. Перейти на RAM не пробовали, потому что память итак нужна, не простаивает.


    1. FirstJohn
      06.06.2017 06:14

      Тем более RAM очищается при аварийном отключении питания, все грязные данные будут безвозвратно утеряны.


  1. lifecom
    02.06.2017 14:14

    А как насчет SAS SSD?


    1. FirstJohn
      06.06.2017 06:15

      Никаких выгод от смены интерфейса SSD с SATA на SAS не обнаружено. Недостатки — выше цена, меньше выбора.


  1. amarao
    02.06.2017 14:22

    44000 р за ТБ — это в рублях какого года? Если у вас была цена выше, чем $1/Гб — поздравляю, вы изобретали велосипед задорого. Практически все коммерческие СХД дают дисконт до уровня $1/Гб, и это в режиме all flash storage. Если же в рублях крымского образца, то есть цена меньше $1/Гб — да, копеечку экономили.


    1. mikkisse
      02.06.2017 15:10

      Так у них получается 10р за гигабайт сейчас. 41к. р. за 4тб.


      1. amarao
        02.06.2017 15:38

        Я про начальную конфигурацию с рейдами.


    1. FirstJohn
      06.06.2017 05:28

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


  1. Arxitektor
    02.06.2017 19:20

    У меня немного идиотский вопрос.
    На работе помогал подбирать железо в СХД и ужаснулся ценам на SSD диски…
    PX05SM, 400 Гбайт, SAS Write Intensive MLC 12 Гбит/с стоит каких то не реальных денег для своего объёма.
    1600$ За что такой прайс? Там резервирование 90%?
    Вроде вот он http://www.dell.com/en-us/shop/dell-solid-state-drive-400gb-sas-12gbps-2-5in-write-intensive-px04sh/apd/400-amjm/storage-drives-media
    Но характеристик чтения/записи я нашел c трудом.
    Скорость чтения * 1900 Мб / с
    Скорость записи * 850 Мб / с
    Случайное чтение (4KB) 270000 IOPS
    Случайные записи (4KB) 100000 IOPS


    1. Alexey_Meyev
      05.06.2017 16:31

      Это SAS-накопитель, в случае SSD они традиционно сильно дороже SATA.
      Ну и ресурс записи у него 10DWPD — то есть 10 гарантированных перезаписей каждый день в течение 5 лет. (для сравнения, у автора статьи накопители «десктопной» серии с ресурсом 0,3 DWPD на 3 года).
      Характеристики здесь: https://toshiba.semicon-storage.com/us/product/storage-products/enterprise-ssd/px05smbxxx.html

      Но цену вам назвали все равно несколько выше рыночной, если только в нее не заложено что-то еще.
      Для понимания, уровня цен: аналогичный SATA SSD на 10 DWPD — Intel S3710 Series (SSDSC2BA400G401)
      аналогичный SAS SSD на 10 DWPD — HGST SSD1600MM HUSMM1640ASS204 (0B32165)


  1. napolskih
    02.06.2017 20:09
    +2

    Юзали много лет flashcache для кеширования чтения в хайлоад-инсталяциях Postgresql. В общем были довольны. Эффективность была сильно ниже 100%, год назад решили попробовать заменить на dm-cache и знаете нам очень понравилось и мы везде заменили flashcache на dm-cache. Эффективность на слейвах около 99.9%.


    1. FirstJohn
      05.06.2017 12:24

      Да, мы рассматриваем другие решения. Но в продакшн пока ничего запускать не готовы.


  1. DenMMM
    06.06.2017 05:11

    1. Хороший способ сделать дешевле наплевав на надежность.
    2. SSD-кэш увеличивает среднюю производительность дисковой системы, но использовать его в паре с RAID1 SATA… Сколь-нибудь серьёзные задачи на таком сервере решать проблематично.
    В моей практике был случай, когда RAID10 SATA NL развалился при ребилде из-за отказа зеркальной пары. Ну и сервер все это время (более двух суток) фактически лежал.
    Без «лишнего» железа CEPH тогда уж.

    IMHO


  1. a_shats
    06.06.2017 05:11
    +1

    Диск объёмом 1 Тб мы режем до 240 Гб, это рабочая область, остальные 760 Гб – резерв на износ.

    Жестоко. А Write-Intensive SSD (10+ DWPD) использовать не пробовали?
    Если по цене, то по моим прикидкам, если брать 200ГБ Intel S3710 — получается дешевле, чем 1ТБ (точнее 960ГБ) любого энтерпрайзного SSD 1 DWPD, который вот таким жестоким образом превратили в 240ГБ 4 DWPD.
    В режиме writeback данные сначала попадают в кеш SSD и только потом в память SATA HDD. Данные, которые не успели скинуться на SATA HDD, называются грязными. При сбое они безвозвратно сгорают вместе с SSD.

    Ой.
    У Вас что, кэш в не-отказоустойчивом режиме (т.е. одиночный накопитель или RAID0, а не как в «лучших домах» — RAID1 или RAID10)?


  1. lehnh
    06.06.2017 05:11

    Вообще-то flashcache работает под centos 7, просто не собирается сходу. Если чуть-чуть погуглить, можно найти workaround и собрать его все-таки и он вполне успешно работает.


    1. FirstJohn
      06.06.2017 06:20

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