Как работает ssd-кэширование в системах хранения данных

Почему SLC, MLC и TLC отличаются по выносливости

Эти аббревиатуры просто указывают на количество битов в транзисторе. В одной ячейке SLC хранится 1 бит, MLC – 2 бита, а TLC – 3 бита, но базовый принцип работы у всех трех типов памяти одинаковый.

Представьте себе кристалл плотностью 16Gbit (гигабит) NAND, т.е. состоящий из примерно 16 млрд транзисторов. Из него получится 16Gbit SLC, поскольку в ячейке 1 бит. Но можно сделать 2 бита на ячейку и получить уже 32Gbit MLC. А если сделать в ячейке по 3 бита, выйдет аж 48Gbit TLC NAND!

Micron TLC NAND

48 — неудобное число. Заметьте, что 16 и 32 представляют собой 24 и 25, но у двойки нет такой степени, чтобы получить число, кратное 3 . Поэтому TLC приходится подгонять под другие размеры из инженерных и маркетинговых соображений. Кристалл режут под 10.67Gbit, что при трех битах эквивалентно 32Gbit MLC NAND. Невелика беда, ведь по сравнению с MLC сэкономили 30% массива NAND!

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

Тип NAND SLC MLC TLC
Бит в ячейке 1 2 3
Число состояний 2 4 8
Состояния 0, 1 00, 01, 10, 11 000, 001, 010, 011, 100, 101, 110, 111

SLC, с ее двумя состояниями, может выдерживать самые большие изменения в напряжении, прежде чем время стирания увеличится настолько, что контроллер отправит блок памяти в утиль по причине износа.

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

Состояния напряжения разных типов NAND

Отсюда и вытекает разница между выносливостью SLC, MLC и TLC. Наибольшее количество (P/E) у SLC, затем идет MLC, а хуже всего дела обстоят у TLC. Кроме того, чем больше состояний напряжения приходится определять, тем выше вероятность ошибок, поэтому роль современных контроллеров в их коррекции (ECC) возрастает, хотя с этой задачей они успешно справляются.

Кэширование в ОЗУ самого NAS-а

Даже если виртуалка под Windows или Linux занимает на диске сотни гигабайт, активно используются единицы или десятки гигабайт дискового пространства: логи и файлы баз данных, часто запрашиваемые файлы, в общем всё то, что не кэшируется в памяти самой гостевой операционной системы или приложения. Часто запрашиваемые блоки данных хранятся в ОЗУ самой Synology DSM, что мы многократно видели в синтетических тестах прямого файлового доступа. Механизм кэширования в ОЗУ лучше всего наблюдать на дисковых операциях случайного чтения.

На этой диаграмме — идеальный вариант доступа к тестовой области объёмом 16 ГБ. Почти вся она может поместиться в ОЗУ NAS-а, что и происходит в процессе теста

Обратите внимание: «раскачивается» NAS достаточно долго — около 10 минут, после чего выходит на максимальную производительность

Когда кэш заполняется, скорость чтения вырастает в 3 раза, но всё равно остаётся небольшой по меркам того, что можно выжать из ОЗУ. Имеет ли смысл добавлять SSD для операций, использующих небольшую активную область раздела, способную уместиться в памяти СХД?

Почему количество циклов перезаписи NAND ограничено

Со временем электрическая активность изнашивает физическую структуру ячейки, уменьшая микроскопический слой оксида. Его толщина <10nm, т.е. как минимум в 3000 раз тоньше человеческого волоса!

Кристаллы Micron 16nm MLC NAND

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

Между тем, толщина слоя оксида неизбежно снижается с уменьшением размера кристалла при переходе на меньшие узлы техпроцесса (например, 25 → 20 → 16nm), что только усугубляет проблему выносливости NAND.

Однако выносливость NAND зависит не только от геометрии кристалла, но еще и от количества битов, хранящихся в ячейке.

Как работает флэш-память

NAND хранит данные в массиве ячеек памяти, представляющих собой транзисторы с плавающим затвором. На картинке вы видите два затвора: управляющий (Control Gate) и плавающий (Floating Gate). Электроны перемещаются между управляющим затвором и каналом NAND (Channel) в направлении подачи напряжения.

Упрощенная схема работы флэш-памяти

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

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

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

Характеристики

Предупреждения
ПРЕДУПРЕЖДЕНИЕ о ресурсе SSD При превышении параметра «Ресурс в TBW» или «Ресурс DWPD», указанного в спецификации, устройство снимается с гарантии.
Проверить состояние SSD можно с помощью специальной утилиты. К быстрому исчерпанию ресурса приводит нецелевое использование SSD накопителя, например, майнинг.
Основные характеристики
Производитель PATRIOT
Серия P200
Модель P200S1TB25найти похожий SSD
Тип оборудования SSD для персональных компьютеров
Емкость накопителя 1 Тб
Отличительные особенности
Background Garbage Collection Поддерживается
Поддержка TRIM Есть
Надежность
Ресурс SSD 640 TBW
Ресурс DWPD 0.58 перезаписи всего объема накопителя в день (DWPD — Drive Writes Per Day) в течение 3 лет
Для сервера баз данных Не подходит
MTBF 2 млн. часов
Интерфейс подключения к ПК
Интерфейс SSD SATA 6Gb/s (SATA-III)
Пропускная способность интерфейса 6 Гбит/сек
Конфигурация
Контроллер Silicon Motion SM2258XT
Тип чипов 3D TLC (Triple Level Cell) — данные из неофициальных источников
Параметры производительности
Скорость чтения До 530 Мб/сек
Скорость записи До 460 Мб/сек
IOmeter, скорость записи 4Кб файлов, глубина очереди=32 80000 IOPS
Формат
Формат накопителя 2.5″ (толщиной 7 мм)
Совместимость
Рабочая температура 0 ~ 70 °C
Комплект поставки и опции
ПО в комплекте Нет
Логистика
Размеры (ширина x высота x глубина) 70 x 7 x 100 мм
Размеры упаковки (измерено в НИКСе) 15.1 x 12.3 x 2.1 см
Вес брутто (измерено в НИКСе) 0.09 кг

Шаги техпроцесса, или зачем уменьшают размер кристалла

В начале 2013 года в большинстве дисков ведущих изготовителей стояла память 25nm MLC (Intel/Micron) и 24nm MLC (Toshiba/SanDisk), но почти за два года картина сильно изменилась. В современных накопителях сейчас стандартом является уже флэш-память 20nm и 19nm. Причем у Toshiba/SanDisk сейчас в ходу уже второе поколение памяти 19nm, а Micron может похвастаться дисками с 16nm MLC NAND.

Все завязано на прибыль, как и в любом бизнесе. Стоимость полупроводников пропорциональна размеру кристалла. Уменьшение его габаритов по осям X и Y позволяет производителям получать из одной вафли больше кристаллов, что снижает их стоимость.

Этапы техпроцесса NAND. Слева направо кристаллы: 2 х 34nm, 1 х 25nm, 1 х 20nm.

Альтернативно, можно добавлять больше транзисторов на каждый кристалл, что повышает его плотность при том же размере, т.е. дает больше Gbit на вафлю. В отличие от узла техпроцесса, плотность в технических характеристиках редко указывают, но в специализированных обзорах ее можно найти.

Увеличить рисунокРаботники SK Hynix демонстрируют вафли флэш-памяти

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

Давайте немного залезем в технические подробности.

Что такое SSD-кэширование

Большая часть хранимых данных имеет небольшое количество повторных обращений, такие данные принято называть «холодными». Они составляют значительную часть как в крупных файловых архивах, так и на жестком диске вашего домашнего компьютера. Если к данным обращаются повторно, то они будут называться «теплыми» или «горячими». Последние обычно представляют собой блоки служебной информации, которая считывается при загрузке приложений или выполнении каких-либо стандартных операций.

SSD-кэширование — это технология, при которой твердотельные накопители используются в качестве буфера для часто запрашиваемых данных. Система определяет степень «теплоты» данных и перемещает их на быстрый накопитель. За счет этого чтение и запись этих данных будут выполняться с большей скоростью и с меньшей задержкой.

Про SSD-кэширование часто говорят, когда речь идет о системах хранения данных, где эта технология дополняет HDD-массивы, повышая производительность за счет оптимизации случайных запросов. Устройство HDD-накопителей позволяет им успешно справляться с последовательным паттерном нагрузки, но имеет естественное ограничение для работы со случайными запросами. Объем SDD-кэша при этом обычно составляет около 5–10% от емкости основной дисковой подсистемы.

SSD кэш в реализации Synology

SSD-кэш может работать в двух режимах: только чтение и чтение/запись. В первом случае вам достаточно и 1 твердотельного накопителя, а во втором случае — потребуется как минимум пара для объединения в «зеркало». Кэширующие SSD можно объединить и в более сложные массивы, в том числе RAID 5, главное чтобы для кэширования записи поддерживалась отказоустойчивость.

В текущей версии DiskStation Manager содержимое SSD кэша чтения не сохраняется после перезагрузки NAS-а. То есть, после ребута вас ждёт некий период прогрева, хотя DSM начинает пихать данные на SSD буквально с первых минут после запуска. Для кэша чтения/записи такой проблемы нет.

Повторим наш тест, для чего сначала будем использовать 1 SSD в режиме кэша чтения, а затем 2 SSD в режиме кэша чтения/записи, объединив их в зеркальный RAID 1.

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

Получается, что NAS не нужно упрашивать сохранить данные в кэше: SSD выходят на максимальную скорость уже через 3-4 минуты, а ОЗУ — через 10-15 минут. Кроме того, SSD-кэш активнее освобождает данные и перестраивается между нагрузками, хотя на диаграммах этого не показать. Но, как говорится, только чтением жив не будешь, и очень интересно, как поведут себя кэши в паттернах VDI и SQL задач. Мы будем использовать 2 размера области теста: 16 ГБ, сопоставимую с объёмом ОЗУ и 96 ГБ, в три раза больше, чем есть памяти в NAS-е.

Там где добавляется запись, уже нужно грамотнее подходить к выбору самих SSD, учитывая, что скорее всего они будут постоянно заполнены данными, и их скорость будет отличаться от максимальной. Увеличим тестовую область в 6 раз:

Интересно, что в SQL-нагрузке при заполнении кэша снижается амплитуда колебаний производительности. Давайте сравним средние значения в разных паттернах.

Внимательные читатели заметили, что для SQL-паттерна мы не приводим диаграмму для 16-гигабайтной области раздела. Конечно, можно было бы махнуть рукой и сказать: «итак всё понятно — нужно ставить минимум 2 SSD», но мы не будем торопиться с выводами, а запустим OLTP тест в реальном приложении в виртуальной машине.

Как работает SSD-кэш в СХД

Функция кэша — ускорять выполнение операции за счет размещения часто запрашиваемых данных на быстрых носителях. Для кэширования самых «горячих» данных используется оперативная память (RAM), в СХД это кэш первого уровня (L1 Cache).

Кэш первого уровня может быть дополнен менее быстрыми твердотельными накопителями. В этом случае у нас появляется кэш второго уровня (L2 Cache). Такой подход используется для реализации SSD-кэширования в большинстве существующих СХД.

Рисунок 3. Традиционный SSD-кэш второго уровня.

Традиционный SSD-кэш второго уровня работает следующим образом: все запросы после RAM попадают в буфер SSD (рисунок 3).

Работа кэша на чтение

Система получает запрос на чтение данных, находит необходимые блоки на основном хранилище (HDD) и производит их чтение. При повторных обращениях система создает копии этих данных на SSD-накопителях. Последующие операции чтения будут выполняться уже с быстрых носителей, что увеличит скорость работы.

Работа кэша на запись

Система получает запрос на запись и размещает необходимые блоки данных на SSD-накопителях. Благодаря быстрым носителям, операция записи и оповещение инициатора происходят с минимальными по времени задержками. По мере заполнения кэша система начинает постепенно передавать на основное хранилище наиболее «холодные» данные.

Алгоритмы заполнения кэша

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

Для этого применяются алгоритмы заполнения кэша. Коротко рассмотрим наиболее распространенных в сегменте СХД.

FIFO (First In, First Out) — из кэша последовательно вытесняются наиболее старые блоки, замещаясь наиболее свежими.

LRU (Least Recently Used) — из кэша первыми вытесняются блоки данных с наиболее давней датой обращения.

LARC (Lazy Adaptive Replacement Cache) — блоки данных попадают в кэш, если они были запрошены как минимум дважды за определенный промежуток времени, а кандидаты на замещение отслеживаются в дополнительной LRU-очереди в оперативной памяти.

SNLRU (Segmented LRU) — данные из кэша вытесняются по принципу LRU, но при этом они проходят несколько категорий (сегментов), обычно это: «холодные», «теплые», «горячие». Степень «теплоты» здесь определяется частотой обращений.

LFU (Least Frequently Used) — из кэша первыми вытесняются те блоки данных, к которым было меньше всего обращений.

LRFU (Least Recently/Frequently Used) — алгоритм комбинирует работу LRU и LFU, вытесняя сначала те блоки, которые попадают под рассчитываемый параметр из даты и количества обращений.

В зависимости от типа алгоритма и качества его реализации будет определяться итоговая эффективность SSD-кэширования.

Возможности SSD-кэширования в RAIDIX

Параллельная архитектура SSD-кэша в RAIDIX позволяет ему быть не просто буфером для накопления случайных запросов — он начинает выполнять роль «умного распределителя» нагрузки на дисковую подсистему. Благодаря сортировке запросов и особым алгоритмам вытеснения, сглаживание пиков случайной нагрузки происходит быстрее и с меньшим влиянием на общую производительность системы.

Алгоритмы вытеснения используют log-структурированную запись для более эффективного замещения данных в кэше. Благодаря этому снижается количество обращений к flash-накопителям и существенно сокращается их износ.

Сокращение износа SSD-накопителей

Благодаря детектору нагрузки и алгоритмам перезаписи суммарное количество write hits на массив SSD накопителей в RAIDIX составляет 1.8. В аналогичных условиях работа кэша второго уровня с алгоритмом LRU имеет значение 10.8. Это означает, что количество требуемых перезаписей на флеш-накопители в реализованном подходе будет в 6 раз меньше, чем во многих традиционных СХД. Соответственно, SSD-кэш в RAIDIX будет использовать ресурс твердотельных накопителей значительно эффективнее, увеличивая срок их жизни примерно в 6 раз.

Эффективность SSD-кэширования на различных нагрузках

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

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

Тип паттерна Тип запроса Значение с SSD-кэшированием Значение без SSD-кэширования Увеличение производительности
Случайное чтение (100% попадание в кэш) random read 100% 85.5K IOps 2.5K IOps В 34 раза
Случайная запись (100% попадание в кэш) random write 100% 23K IOps 500 IOps В 46 раз
Случайное чтение (80% попадание в кэш, 20% попадание на HDD) random read 100% 16.5K IOps 2.5K IOps В 6.5 раз
Случайное чтение из кэша, запись на HDD random read 50% 40K IOps 180 IOps В 222 раза
sequential write 50% 870 Mbps 411 Mbps В 2 раза
Случайное чтение и запись (100% попадание в кэш) random read 50% 30K IOps 224 IOps В 133 раза
random write 50% 19K IOps 800 IOps В 23 раза
Последовательные запросы с большим блоком, случайная нагрузка 100% попадает в SSD-кэш random read 25% 2438 IOps 56 IOps В 43 раза
random write 25% 1918 IOps 82 IOps В 24 раза
sequential read 25% 668 Mbps 120 Mbps В 5.5 раз
sequential write 25% 382 Mbps 76.7 Mbps В 5 раз

У каждой реальной ситуации будет свой неповторимый «рисунок» нагрузки, и такое фрагментарное представление не дает однозначного ответа об эффективности SSD-кэширования на практике. Но оно помогает сориентироваться в том, где данная технология может быть наиболее полезна.

Сравнение производительности и результаты тестов

Назад

Вперед

процент от максимально зарегистрированных результатов по всем тестам

SSD 1 Tb SATA 6Gb/s Patriot P200 <P200S1TB25> 2.5″ 3D TLC
от 7 972 руб.
11.70%
SSD 1 Tb SATA 6Gb/s WD Blue <WDS100T2B0A> 2.5″ 3D TLC
от 9 417 руб.
14.70%
SSD 1 Tb SATA 6Gb/s Samsung 870 EVO <MZ-77E1T0BW> (RTL) 2.5″ V-NAND 3bit-MLC
от 11 355 руб.
20.20%
SSD 1 Tb SATA 6Gb/s WD Green <WDS100T2G0A> 2.5″ 3D TLC
от 8 378 руб.
7.10%
SSD 1 Tb SATA 6Gb/s WD Red SA500 <WDS100T1R0A> 2.5″ 3D TLC
от 10 070 руб.
13.60%
SSD 960 Gb SATA 6Gb/s Silicon Power Velox V55 <SP960GBSS3V55S25> 2.5″ TLC+3.5″ адаптер
от 10 241 руб.
8.90%
SSD 960 Gb SATA 6Gb/s Micron 5300 <MTFDDAK960TDT-1AW1ZABYY> 2.5″ (RTL)
от 31 227 руб.
17.40%
SSD 1 Tb SATA 6Gb/s HP S700 <6MC15AA> 2.5″ 3D TLC
от 10 386 руб.
12.30%
SSD 1 Tb SATA 6Gb/s Samsung 860 PRO Series <MZ-76P1T0BW> (RTL) 2.5″ V-NAND MLC
от 21 118 руб.
20.60%
SSD 960 Gb SATA 6Gb/s Patriot Burst <PBU960GS25SSDR> 2.5″ 3D TLC
от 9 470 руб.
8.90%
# Наименование Рейтинг производительности Цена (руб.)
1 SSD 1 Tb M.2 2280 M Smartbuy Impact E16 <SBSSD-001TT-PH16-M2P4> 68.30% от 14 263 руб.
2 SSD 2 Tb M.2 2280 M Samsung 970 EVO Plus <MZ-V7S2T0BW> (RTL) V-NAND 3bit-MLC 64.60% от 42 444 руб.
3 SSD 512 Gb M.2 2280 M Samsung 970 PRO Series <MZ-V7P512BW> (RTL) V-NAND MLC 61.60% от 13 164 руб.
4 SSD 1 Tb M.2 2280 M Samsung 970 PRO Series <MZ-V7P1T0BW> (RTL) V-NAND MLC 61.00% от 24 303 руб.
5 SSD 1 Tb M.2 2280 M Samsung 970 EVO Series <MZ-V7E1T0BW> (RTL) V-NAND 3bit-MLC 58.70% от 12 602 руб.
6 SSD 1 Tb M.2 2280 M Patriot Viper <VPN100-1TBM28H> 3D TLC 56.70% от 12 048 руб.
7 SSD 1 Tb M.2 2280 M Samsung 970 EVO Plus <MZ-V7S1T0BW> (RTL) V-NAND 3bit-MLC 54.10% от 14 306 руб.
8 SSD 1 Tb M.2 2280 M Silicon Power <SP001TBP34A80M28> 3D TLC 53.60% от 10 559 руб.
9 SSD 512 Gb M.2 2280 M ADATA XPG GAMMIX S11 Pro <AGAMMIXS11P-512GT-C> 3D TLC 52.30% от 5 885 руб.
345 SSD 1 Tb SATA 6Gb/s Patriot P200 <P200S1TB25> 2.5″ 3D TLC 11.70% от 7 972 руб.

Резюме

Давайте подведем промежуточный итог на основе информации из этой статьи:

  • для сокращения расходов размер кристалла уменьшают по осям X и Y, а также увеличивают его плотность
  • программирование ячеек памяти достигается подачей напряжения, что постепенно изнашивает их
  • с уменьшением размера кристалла становится тоньше оксид, что негативно сказывается на сроке службы ячеек
  • истончение оксида вынуждает контроллер подавать более высокое напряжение, чтобы запрограммировать ячейку
  • типы памяти различаются по количеству битов в ячейке, и чем их больше, тем хуже выносливость и скорость
  • TLC наименее вынослива, потому что 8 состояний напряжения сокращают пространство для его повышения по мере износа ячеек
  • для повышения быстродействия и выносливости в дисках на TLC (и даже на MLC 1xnm) используется псевдо-кэш SLC

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

Тип NAND SLC MLC TLC

Производительность

★ ★ ★ ★ ★

★ ★ ★

★ ★

Выносливость

★ ★ ★ ★ ★

★ ★ ★

★ ★

Сложность коррекции ошибок

★ ★

★ ★ ★

★ ★ ★ ★

Стоимость

$$$$$

$$

$

Из нее хорошо видно, что основным мотивом движения индустрии флэш-памяти в сторону TLC является сокращение затрат на производство (без учета необходимых для этого инвестиций).

Согласно прогнозу Samsung, через три года 80% рынка будет составлять TLC NAND

Обратите внимание, что на диаграмме TLC обозначена как 3-bit MLC. Формально, так и есть, но все-таки просматривается маркетинговая хитрость

Я вернусь к этому моменту в следующей статье.

Дискуссия и опрос

В следующей серии вас ждет рассказ о лидерах рынка флэш-памяти с примерами их ведущих накопителей. Больше не будет плавающих затворов и диапазонов напряжения :) Я понимаю, что сегодняшний материал очень сложный технически (тем более, это не моя специализация). Но знание принципов работы NAND позволяет понять:

  • что движет индустрией
  • как продлевают срок службы SSD
  • насколько они выносливы
  • за что мы платим деньги

Более простая статья уже была, да и остальные вы читали. Я счел, что изрядная часть постоянной аудитории осилит рассказ, и постарался сделать его интересным. Но сомнения гложут ;)

  • беспокоит ли вас выносливость вашего текущего или планируемого к покупке SSD
  • насколько сложен такой материал для вас, какие моменты он помог прояснить, что стало откровением

Список литературы (будет общий на всю серию)

Результаты голосования утеряны в связи с прекращением работы веб-сервиса опросов.

1.Самый действенный способ — использовать Redis

Если у вас уже есть готовая инфраструктура с серверами VMware vSphere, и вы приобретаете NAS только для хранения бэкапов или в качестве основной СХД, посмотрите на память: Synology RackStation RS18017xs+ имеет в базе 16 ГБ ОЗУ, которые можно расширить до 128 ГБ. Вся операционная система DSM (DiskStation Manager) редко требует более 2 ГБ ОЗУ, поэтому неиспользуемую память можно отдать под Redis. Это NoSQL сервер, который хранит данные в памяти, периодически сбрасывая свою базу на диск. При перезагрузке Redis восстанавливает базу с диска, загружая данные в ОЗУ, и даже при отключении электроэнергии, после перезагрузки вам доступны все данные с момента последней синхронизации. Внутрь Redis можно запихнуть не только строки, но и файлы, и если ваше приложение постоянно обращается к каталогу с десятками тысяч маленьких файликов (например при машинном обучении), то вы наверняка знаете, что в этом случае тормозит любая современная файловая система, а Redis — нет.

Redis можно установить через пакет Synology DSM, подключив репозиторий Synocommunity, но там лежит старая версия 3.0.5-5, поэтому лучше использовать Docker или виртуалку, запущенную на NAS-е. Устанавливаем пакет Synology Virtual Machine Manager и внутри разворачиваем 5-ю версию Redis-а на операционной системе Debian.

Давайте протестируем скорость доступа, используя встроенный бенчмарк Redis-а. Полтора миллиона транзакций в секунду в конвейерном режиме и пятьсот тысяч с настройками по умолчанию. Сам по себе Redis — однопоточный, так что вы можете клонировать виртуалку, чтобы задействовать более 1 ядра процессора NAS-а.

Пример с Redis наглядно демонстрирует, что сегодня рассматривать СХД только в качестве файлохранилки можно в двух случаях: когда речь идёт о домашнем 2-дисковом NAS-е или наоборот, когда мы говорим о мощной инфраструктуре банков или авиакомпаний. В остальном же — пожалуйста, вот вам централизованная кэширующая система: подключайтесь к ней и экономьте ресурсы ваших хостов. Вам даже не потребуется 10-гигабитное сетевое подключение: в типичных случаях использования, 1-гигабитной сети вполне достаточно для быстрой работы подключенных клиентов.

Ну и не забывайте, что Synology DSM может использовать защиту данных Redis-а снэпшотами на уровне файловой системы Btrfs. Конечно, использование Redis потребует от вас небольшую переработку приложения, что не всегда возможно, поэтому давайте посмотрим работу встроенного кэширования Synology DSM.

Тест Sysbench OLTP

Возьмём базу данных MariaDB в виртуалке с небольшим объёмом памяти, ну например 8 ГБ. Создадим таблицу в 50 миллионов записей с таким расчетом, чтобы её объём в 11.2 ГБ был больше ОЗУ, доступной для гостевой системы, но меньше ОЗУ NAS-а (16 ГБ) и заставим машину активно использовать диск в режиме транзакционной нагрузки, используя случайные запросы чтения. Проведём этот тест трижды: сначала виртуалка работает на хосте под VMware ESXi 6.7, подключенном по iSCSI, потом то же самое, но с NFS, а затем перенесём виртуалку в Synology Virtual Machine Manager, используя для миграции пакет Synology Active Backup for Business.

Тесты показывают, что сетевой трафик составляет 500-600 Мбит/с, но дисковая активность проявляется только в операциях записи, а значит Synology DSM одинаково хорошо кэширует и операции блочного доступа и операции файлового доступа, что не удивительно, поскольку iSCSI LUN-ы хранятся в виде файлов. Напомню, что наша тестовая RackStation RS18017xs+ имеет базовые 16 ГБ ОЗУ.

В данном случае SSD кэширование не даёт особых преимуществ из-за того, что часть виртуального диска, на котором лежит файл базы данных, легко умещается в ОЗУ NAS-а. Давайте создадим ситуацию, в которой объём базы данных сильно превышает свободную память Rackstation RS18017xs+. Увеличивать количество строк в тестовой таблице до миллиардов не получается: сильно начинает тормозить сама база данных, делая результаты не репрезентативными. Гораздо проще отнять лишнюю память у Synology DSM, для чего запустим в гипервизоре Synology VMM виртуальную машину с 12 ГБ ОЗУ, в результате под кэш останется всего около 2.5 ГБ.

И вот здесь SSD кэш сглаживает негативный эффект от нехватки памяти, хотя всё равно показатели чтения хуже, чем в предыдущем тесте. Нам нужно убедиться, что на скорость влияет именно отсутствие лишней памяти, а не гипервизор Synology VMM, для чего мы должны запустить тот же самый тест на самом NAS-е.

Переместив базу данных в гипервизор Synology VMM, нам пришлось добавить в RS18017xs+ ещё 16 ГБ памяти для того, чтобы сохранить возможность кэширования в ОЗУ NAS-а. Тесты показывают ту же производительность, что не удивительно, поскольку для всех файловых операций в СХД используется общий пул. То есть для практического использования базы данных можно вполне обойтись средствами Synology VMM, сократив количество серверов в вашей компании.

Углубляясь в настройки буферизации на уровне приложения и экспериментируя с параметром InnoDB Buffer Pool Size, я заметил, что при значениях от 1 ГБ до 6 ГБ, производительность существенно не меняется, так что выгоднее отдавать этот объём памяти NAS-у. Так поступают хостинг-провайдеры, предлагая в аренду виртуальные машины с небольшим объёмом памяти: база данных активно работает с дисковой подсистемой, в роли которой выступает СХД с SSD и большим объёмом памяти.

Причём, стоит отметить, что далеко не каждый SAN-массив имеет функцию кэширования в ОЗУ: буферизация LUN на уровне блоков — это редкая особенность, но у Synology сейчас даже iSCSI LUN-ы хранятся в виде файлов, поэтому помимо снапшотов по расписанию, DSM легко ориентируется в том, что нужно держать в памяти, а что — нет. Вот вам ещё один плюс NAS-ов перед SAN-ами.

Заключение

Технология SSD-кэширования позволяет повысить производительность СХД при работе со смешанным типом нагрузки. Это доступный и простой способ получить эффективно работающую систему в случаях, когда HDD накопители не имеют физической возможности обеспечить желаемый результат.

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

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

Выводы

Какие выводы можно сделать из нашего тестирования? Прежде всего, обратите внимание на то, насколько агрессивно Synology DSM записывает данные на SSD. Буквально считанные минуты под нагрузкой — и они копируются на SSD накопители, ускоряя и NFS подключения, и iSCSI LUN-ы

По синтетическим тестам, SSD работают даже быстрее ОЗУ, но на деле выходит совсем иначе: чем большое объём горячих данных в вашей инфраструктуре, тем больше памяти нужно установить в NAS, не важно, используются ли в нём жесткие диски, SSD или гибридные массивы. Ну и наш пример с Redis-ом показывает, что если вы вступили на путь добра и решили вместо старой SAN-СХД установить современный умный NAS с виртуализацией, то используйте его возможности по-максимуму: совсем не обязательно стараться забить все отсеки хранилища твердотельными дисками — можно просто добавить поддержку NoSQL баз данных в ваш софт и на самой простой модели Synology серии Rackstation получить чудо-скорость, которую ещё очень много лет не дадут никакие SSD

Ну и наш пример с Redis-ом показывает, что если вы вступили на путь добра и решили вместо старой SAN-СХД установить современный умный NAS с виртуализацией, то используйте его возможности по-максимуму: совсем не обязательно стараться забить все отсеки хранилища твердотельными дисками — можно просто добавить поддержку NoSQL баз данных в ваш софт и на самой простой модели Synology серии Rackstation получить чудо-скорость, которую ещё очень много лет не дадут никакие SSD.

Михаил Дегтярёв (aka LIKE OFF)

07/03.2019

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все для ПК
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: