Особенности выбора твердотельных накопителей (SSD) для серверов и RAID-массивов

Как и было обещано в публикации «Целесообразность и преимущества применения серверных накопителей, построение RAID-массивов, стоит ли экономить и когда?», остановимся более подробно на проблеме выбора твердотельных накопителей. Но в начале немного теории.

Твердотельные накопители (Solid State Drives, SSD) — накопители, ориентированные на обеспечение минимальной latency (задержки до начала непосредственно операции чтения или записи) и большого количества IOPS (Input/Output Operations per Second, операций ввода/вывода в секунду). Выбирая SSD пользователь ориентируется прежде всего на то, на сколько быстрым будет накопитель для решения его задачи и на сколько надежным будет хранение данных на нем.

Твердотельные накопители состоят из NAND-микросхем, которые образуют массив памяти, они лишены недостатков HDD-дисков, так как нет движущихся частей и механического износа, за счет чего и достигается высокая производительность и минимальная latency (в жестких дисках основная задержка связана с позиционированием головки). Каждая ячейка памяти может быть перезаписана определенное количество раз. Операции чтения не оказывают влияния на износ SSD. В основном применяют три основных типа чипов NAND: SLC (Single Level Cell), MLC (Multi Level Cell) и TLC (Three Level Cell) — чипы с одноуровневыми, многоуровневыми и трехуровнивыми ячейками. Соответственно ячейки в SLC могут использовать два значения напряжения 0 или 1 (могут хранить 1 бит информации), в MLC 00, 01, 10 или 11 (хранят 2 бита информации), в TLC 000, 001, 010, 011, 100, 101, 110 или 111 (хранят 3 бита). Становится понятно, что чем больше значений может принимать ячейка, тем больше увеличивается вероятность некорректного считывания этого значения, тем больше времени требуется на коррекцию ошибок, тем больше информации может хранить накопитель. Именно по этой причине TLC требует большего объема ECC (Error Correction Code). В то же время, количество циклов перезаписи падает с увеличением плотности хранения информации и максимально в SLC и потому эта память самая быстрая, так как считывать одно из двух значений гораздо проще.

Теперь немного об особенностях самих микросхем. Память NAND, в отличии от NOR, применяемой во флешках, является более экономически выгодной и имеет ряд преимуществ и недостатков. Преимущества заключаются в гораздо большей емкости массива, возможности более эффективного последовательного чтения. Недостатки заключены в режиме постраничного доступа, отсутствии случайного доступа к данным, появлении дополнительных ошибок за счет большой плотности записи данных в ячейки. Каждая NAND-микросхема разделена на блоки 512 или 256 КБ, те же в свою очередь на страницы размером 4КБ. Возможно осуществлять чтение с отдельных страниц и запись, при условии, что они пусты. Однако, как только информация была помещена, ее невозможно перезаписать, пока не будет стерт весь блок страниц. В этом и состоит основной недостаток, оказывающий огромное влияние на эффективность записи и износ накопителя, так как NAND-микросхема имеет ограниченное количество циклов перезаписи. Для обеспечения равномерного износа всех ячеек, равномерной утилизации накопителя, контроллер перемещает записываемые данные с места на место при записи, тем самым увеличивая влияние WAF (Write Amplification Factor) на работу SSD, благодаря которому количество действительно записываемой информации гораздо больше, нежели логической, записываемой пользователем, в следствии чего уменьшается показатель случайного чтения. По сути данные перемещаются с места на место более одного раза, так как информация в памяти должна быть стерта перед повторной записью и чем более эффективно реализован алгоритм WAF, тем дольше проживет накопитель.

Технология Over-Provisioning позволяет оптимизировать основной недостаток, связанный с записью / перезаписью и улучшить производительность, увеличить срок жизни накопителя. Она заключается в том, что на каждом из накопителей выделяется область, недоступная для пользователя, которую использует контроллер для перемещения данных, тем самым выравнивая показатели износа ячеек, так как для стирания ячейки 4КБ требуется стереть всю строку ячеек (на 256 или 512 КБ), что логичнее выполнять в фоновом режиме, используя для записи в первую очередь неразмеченную область. Легко понять, что чем больше область ОР, тем проще контроллеру будет выполнять возложенные на него функции, тем меньше будет WAF и эффективнее будет случайная запись и случайное чтение. Производитель закладывает под ОР от 7% до 50% от объема накопителя, за счет чего значительно увеличивается скорость записи, что видно с графиков, представленных ниже (ОР 0%, 12%, 25%, 50%).

f5a67f89e69a421782007363200671cf.png
211ec918cd68491aacda9a18617db6a5.png
790dba7f8a9f4a328c0e6840e13e80d3.png
233ea127588b4b479d043523d32bdf4d.png

Как видим из графиков, производительность значительно повышается уже при ОР 25% и выше. Большинство производителей SSD позволяют управлять этим параметрам, у того же Samsung есть полезная утилита для этих целей:

07edc7561b1342a3873a6e4395c3b3a6.png

В чем же отличие серверного и desktop-накопителя? Самое важное отличие заключается в том, насколько эффективна работа с операциями записи в непрерывном режиме, а это, в основном, определяется типом чипа, применяемыми алгоритмами и областью Over-Provisioning, которая выделена производителем. К примеру для Intel 320 серии Over-Provisioning составляет 8% от емкости его микросхем, а для Intel 710, накопителя вроде бы как с идентичным типом чипа — 42%. Более того, Intel рекомендует еще минимум 20% оставить неразмеченными при создании раздела, чтоб они также автоматически могли быть использованы под Over-Provisioning, даже на серверных накопителях, где уже выделено 42%. Это удлинит срок жизни накопителя до 3-х раз, так как уменьшится WAF, и повысит производительность записи до 75%.

Но чем же принципиально отличаются декстопные накопители от серверных? Возьмем для примера накопители Intel 320 и 520 — хорошие десктопные твердотельные накопители, в последнем применена «хитрость» в виде контроллера LSI SandForce, который сжимает записываемые данные и передает их на накопитель уже в сжатом виде, таким образом увеличивая скорость записи. И сравним их с серверным накопителем Intel 710 серии.

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

http://ark.intel.com/ru/products/56563/Intel-SSD-320-Series-120GB-2_5in-SATA-3Gbs-25nm-MLC — cмотрим и видим, что:

Случайное чтение (участок 8 ГБ) — 38000 IOPS
Случайное чтение (участок 100%) — 38000 IOPS
Случайная запись (участок 8 ГБ) — 14000 IOPS
Случайная запись (участок 100%) — 400 IOPS

То есть, если мы занимаем на нашем SSD-накопителе на 120 ГБ всего лишь 8, отводя более 90% емкости под Over-Provisioning, то показатели случайной записи довольно хороши и составляют 14 KIOPS, если же мы используем все пространство — всего лишь 400 IOPS на случайную запись, производительность падает в 35 раз и оказывается на уровне пары хороших SAS-дисков!

Теперь рассмотрим http://www.intel.com/content/dam/www/public/us/en/documents/product-specifications/ssd-710-series-specification.pdf, как видим, что даже при 100% заполнении доступной емкости, скорость на запись довольно прилична — 2700 IOPS, а при наличии 20% от емкости под Over-Provisioning возрастает до 4000 IOPS. Это следствие немного, но все же другой памяти, с High Endurance Technology (HET), если по-простому — это применение отборной памяти. Также применяется иная прошивка с другим алгоритмом записи, которая позволяет снизить количество ошибок и продлить жизнь накопителя. И что очень важно — используется иной алгоритм очистки свободного пространства. За счет этого производительность поддерживается при НЕПРЕРЫВНОЙ работе практически всегда на достойном уровне, на диске постоянно проходит фоновая очистка и оптимизация распределения данных. В десктопном же Intel 320 — она может несколько падать при непрерывной работе, так как процессы очистки идут не постоянно.

Вывод — десктопный диск будет жить довольно долго на небольших объемах данных и по скорости может обеспечить довольно хорошие результаты в случае наличия большого пространства под Over-Provisioning. Когда это выгодно? Допустим есть база данных, та же 1С, к которой требуется доступ 10–20 пользователям. База имеет объем 4 ГБ. Более 90% емкости накопителя отводим под Over-Provisioning и размечаем только необходимое, с небольшим запасом, скажем, 8 ГБ. В результате имеем довольно хорошую производительность и экономичность решения с очень хорошим показателем надежности. Конечно, в случае 40–50 пользователей 1С, все же лучше будет использовать серверный накопитель, так как при непрерывной нагрузке показатели все же будут падать у десктопного SSD.

Теперь остановимся более подробно на накопителях с контроллерами типа SandForce. Просмотрев характеристики http://download.intel.com/newsroom/kits/ssd/pdfs/intel_ssd_520_product_spec_325968.pdf, приходим к выводу, что Intel 520 — очень хороший вариант в случае компрессируемых данных, обеспечивает до 80 000 IOPS на запись, однако в случае несжимаемых данных, таких, как видео, показатели падают значительно — до 13 KIOPS и менее. Помимо прочего, в небольшой сноске (под номером 2) указано, что такие фантастические скорости на запись (80 KIOPS) достижимы только в случаях, когда размечено только 8 ГБ, что в случае 180-гигабайтного накопителя составляет всего лишь порядка 3% его емкости, остальное отводится под Over-Provisioning, в результате опять же можно сделать вывод, что этот диск будет хорошо работать с небольшими базами данными и текстовыми файлами, а в случае необходимости быстрой записи несжимаемых данных, таких, как видео — все же лучше использовать полноценные серверные накопители.

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

Справедливо будет поговорить и о накопителях от других популярных производителей — Seagate и Kingston. Чем они отличаются? Seagate Pulsar, в отличии от рассматриваемых накопителей выше, имеет интерфейс SAS, а не SATA и это является его основным преимуществом. У твердотельных накопителей с интерфейсом SATA есть контроллер сохранности данных на накопителе, есть контроллер сохранности данных на самом контроллере, но вот то, что происходит с данными на этапе их передачи, отслеживается недостаточно хорошо. Интерфейс SAS решает эту проблему и полноценно контролирует канал передачи и в случае какой-то ошибки из-за той же наводки — исправит ее, SATA-интерфейс — нет. Кроме того, тут используются преимущества надежности самого интерфейса SAS, когда вместо 512 пишется 520 байт, вместе с 8 байтами четности. Помимо прочего можем использовать преимущества дуплекса SAS-интерфейса, но где это может быть использовано — лучше будет осветить в отдельной публикации.

Что же касается серии накопителей Kingston — это не только надежные накопители, но и весьма производительные. До недавнего времени их серверная серия была одной из самых быстрых, пока на рынке не появился Intel 3700. При этом цена на эти накопители довольно приятна, соотношение цена / производительность / надежность, является, пожалуй, наиболее оптимальными. Именно по этой причине в «новой» нашей линейке серверов в Нидерландах, с которыми мы начали распродажу, мы предложили именно эти накопители, обеспечив тем самым довольно интересное ценовое предложение, в результате которого, серверов c этими накопителями, осталось совсем немного:

a4db109697514ecf9d96091a1bcbb717.png

В этих накопителях 8 чипов по 32 ГБ, образуют суммарный объем в 256 ГБ, около 7% емкости выделено под Over-Provisioning, чистая квота одного накопителя выходит равной 240 ГБ. SandForce контроллер оказывает положительное влияние на прирост производительности в случае работы с компрессируемыми данными, а именно базами данных и зачастую удовлетворяет потребности в IOPS для 95% наших клиентов. В случае же некомпрессируемых данных или данных с большой энтропией, таких как видео, пользователи в основном используют его больше для раздачи контента, нежели для записи, а на чтение производительность не падает столь значительно, что также удовлетворяет потребности большинства пользователей, а если требуется обеспечить большую производительность на запись — достаточно увеличить Over-Provisioning. Как видно из графика, прирост производительности для данных с нулевой компрессией (энтропия 100%) при росте Over-Provisioning, максимальный:

abb28d1ed8624aa4a05ab570d693ef5e.jpg

Стоит отметить еще честность производителя, тесты очень консервативны. И зачастую реальные результаты оказывались выше гарантируемых на 10–15%.

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

95b4abac8caa4b248895ad4cfa1d804e.png
85191f9909264aa1a509ab12dd08e5ee.png

Трафик можно увеличить, также, как и канал, апгрейды доступны по очень приятным ценам:

1 Gbps 150TB — +$99.00
1 Gbps Unmetered — +$231.00
2 Gbps Unmetered — +$491.00

Что же касается использования твердотельных накопителей в RAID-массивах, не будем повторятся об особенностях их использования в RAID, существует волшебная авторская статья amarao, которую я рекомендую к прочтению SSD + raid0 — не всё так просто и которая поможет сформировать полноценное понимание. В этой же статье расскажу немного о SSD-накопителях с интерфейсом PCI-Express, в котором уже используется встроенный RAID-контроллер. В случае задачи построения очень быстрого решения, скажем, для нагруженной биллинговой системы, такие накопители незаменимы, так как способны обеспечить сотню KIOPS на запись и более, а также, что очень важно, очень низкую латентность. Если латентность большинства твердотельных накопителей находится в пределах 65 микросекунд, что в 10–40 раз лучше показателей латентности жестких дисков, то у топовых SSD PCI-Express достигаются значения 25 микросекунд и менее, то есть практически скорость RAM. Конечно, за счет самого интерфейса PCI-Express идет снижение быстродействия, по сравнению с RAM, тем не менее, в скором времени ожидаются заметные улучшения в плане латентности.

Емкость накопителя с интерфейсом PCI-Express набирается «банками памяти», на плате уже имеется SandForce чип, а также аппаратный RAID-контроллер. То есть это уже зеркало со скоростью реакции 25 микросекунд со скоростью записи более 100 KIOPS, которое имеет очень высокую надежность. Эффективная емкость таких накопителей, как правило невелика и может составлять 100ГБ. Цена — также довольно внушительна (7000–14000 евро). Но в случае, как уже отмечалось, нагруженных биллинговых систем, совсем нагруженных баз данных, а также с целью быстрого формирования бухгалтерских отчетов 1С в крупных компаниях (скорость построения возрастает почти на 2 порядка, в 100 раз быстрее) — такие решения незаменимы.

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

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

© Habrahabr.ru