http://habrahabr.ru/company/etegro/blog/217735/
Все помнят, как появились первые действительно массовые SSD продукты. Энтузиазм, рост показателей, красивые десятки тысяч IOPS производительности. Практически идиллия.
Естественно, что для серверного (одиночные компьютеры мы не не рассматриваем) рынка это стало огромным шагом вперед — ведь магнитные носители давно стали узким местом для построения высокопроизводительного решения. Нормой считалось несколько шкафов с дисками, которые в сумме осиливали две-три тысячи IOPS, а тут такая возможность увеличить производительность в сотню и более раз с одного накопителя (по сравнению с SAS 15K).
Оптимизма было море, но в реальности оказалось все не так гладко.
Тут и проблемы совместимости, и проблемы ресурса, когда в сервер ставили все подряд из самых дешевых линеек, и проблемы деградации производительности — до сих пор поднимаются вопросы поддержки TRIM в RAID контроллерах.
Развитие SSD технологий шло поэтапно. Сначала все работали над скоростью линейных операций, чтобы достичь предела интерфейсов. С SATA II это случилось почти сразу, на покорение SATA III ушло некоторое время. Следующим этапом стало наращивание производительности операций со случайным доступом, тут тоже удалось добиться приличного роста.
Следующим пунктом, на который обратили внимание, была стабильность производительности:
Взято из обзора Anandtech
В среднем оно, конечно, много, но скачки от 30К до значений в пару десятков iops — это сильно, шпиндель выдает свои показатели стабильно.
Первым, кто громко об этом заявил, был Intel с его линейкой DC S3700.
Взято из обзора Anandtech
Если приблизить правую часть графика, то разброс будет в пределах 20%. Почему это важно?
- Поведение диска в RAID массиве гораздо более предсказуемо, контроллеру намного проще работать, когда все участники массива обладают примерно одинаковой производительностью. Мало кому придет в голову строить массивы из 7.2К и 15К дисков одновременно, а массив из SSD с разбросом мгновенной производительности в сотни раз еще хуже.
- Приложения, которым необходимо стабильно и быстро получать или писать данные случайным образом, будут работать более прогнозируемо.
Достаточно давно появились и SAS накопители, на SLC (Single Level Cell) памяти с космической стоимостью и практически неограниченным ресурсом. Естественно, они были разработаны для работе в составе СХД — там двухпортовый доступ обязательное условие для накопителя. Со временем появились и более доступные продукты на eMLC памяти. Ресурс, конечно, упал, но все равно остается весьма внушительным благодаря большому резервному объему недоступной для пользователя памяти.
Пример современного SAS SSD диска
Так как изначально они разрабатывались для работы в корпоративных системах, то стабильность производительности была на высоте сразу. Поскольку подходы жестких дисков к тестам производительности SSD мало применимы, то индустриальным консорциумом Storage Networking Industry Association (SNIA) была разработана специальная методика SNIA Solid State Storage Performance Test. Главная особенность методики — диск сначала «подготавливается», цель подготовки — забить всю доступную память, ведь особо умный контроллер пишет данные не только на выделенную емкость диска, он размазывает данные по всей доступной памяти. Для того, чтобы получить результат диска в реальном окружении после длительной непрерывной работы в синтетическом тесте — его надо лишить возможности доступа к «свежей» памяти, где никогда не было данных. После этого начинается реальное тестирование:
Случайное чтениеСлучайная запись
На случайной записи видно существенное преимущество от 12G SAS, но и загрузка процессора на обработку потока возрастает в два и более раз.
Текущее положение на рынке SAS/SATA SSD
Диски делятся на несколько групп, каждая из которых успешно применяется для определенных задач.
- Бытовые диски для задач, связанных с чтением. Крайне популярный вариант у российских интернет-холдингов, которые используют программные массивы. В эту же группу можно отнести диски типа Toshiba HG5d, которые позиционируются для entry-level enterprise workloads (отлично подходят для установки ОС либо задач с преимущественным чтением). Живут при таких нагрузках долго, стоят мало, что еще нужно для счастья?
- Корпоративные диски с 1-3 полными перезаписями в день. Позиционируются в хранилища с малым процентом записи, интенсивным чтением или для кэширования чтения. Хорошо работают с RAID контроллерами, некоторые сделаны для СХД и имеют интерфейс SAS, кэш диска обязательно защищен конденсаторами. Несущественно дороже первой группы.
- Диски с 10 полными перезаписями в день. Универсальная рабочая лошадка как в серверах (где используются преимущественно SATA накопители), так и в СХД. Заметно дороже первой группы.
- Диски с 25 полными перезаписями в день. Самые дорогие и быстрые, куча памяти под резерв устанавливает высокий ценник за гигабайт доступной ёмкости.
Теперь расскажем о SSD в необычном исполнении, ведь флеш (в отличие от магнитных пластин) можно размещать как угодно.
SATA SSD в формате DIMM
Благодаря росту объема модулей памяти и стараниям Intel/AMD по увеличению количества поддерживаемых планок памяти на процессоре мало какие серверы используют все слоты на плате.
По нашему опыту даже 16 планок памяти в сервере встречается не слишком часто, в то время как модели RS130/230 G4 предлагают по 24 слота в системе.
Много-много памяти
Когда простаивает такая часть возможностей платформы — это глубоко обидно и досадно.
Что же с этим можно сделать?
Пустые слоты можно занять SSD накопителями!
Например, такими:
SSD в формате DIMM
Сейчас у нас валидируются несколько таких накопителей, емкость которых достигает 200GB на SLC памяти и 480GB на MLC/eMLC.
Технически это обычный SSD на базе контроллера SandForce SF-2281, знакомого по многим дискам в формате 2.5" и весьма популярного в недорогих дисках для задач с преобладанием чтения (из первой группы). Интерфейс — стандартный SATA, от слота памяти берется только питание. Используется флеш Toshiba (MLC NAND Toggle Mode 2.0, 19нм) TH58TEG8DDJBA8C, 3К P/E циклов, общим объемом в 256 гигабайт. Обещанный Bit Error Rate (BER) менее 1 in 10^17 bits read (что это дает — было рассмотрено в
предыдущем материале по жестким дискам).
Вид на контроллер
Установка в сервер проста и удобна — достаточно вставить в слот памяти (c него берется питание) и протянуть кабель к порту:
Вид в сервереОригинальные решения
Текущие SSD используют обычный SATA разъем, который встречается не на всех платах. К примеру, на наших RS130 G4 таких разъемов только два. При необходимости можно сделать кабель, который объединит четыре SSD в mini-SAS или mini-SAS HD.
mini-SAS кабель
Используя такой вариант можно сделать разные интересные изделия, например:
32 SSD в корпусе высотой 1U
Про SSD со стандартными SAS/SATA интерфейсами, пожалуй, все. В следующем материале мы рассмотрим PCIe SSD и их будущее, а пока немного о методе определения ресурса SSD на запись.
Ресурс на запись
При домашнем использовании мало кого волнует ресурс диска на запись, в то время как для более серьезных задач это значение может быть критичным. Уже традиционным стал показатель количества перезаписей диска в день Disk Writes Per Day (DWPD), который определяется как общий объем записаны данных Total Terabyte Written, поделенный на период работы (обычно 5 лет). Лучшие SATA диски имеют показатель 10 DWPD, лучшие SAS SSD доходят до 45 DWPD.
Как этот волшебный показатель измеряется? Нужно углубиться в теорию работы флеш- памяти.
Главная особенность флеша — для записи (program) данных ячейку сначала нужно стереть (erase). К сожалению, нельзя стереть просто ячейку, такие операции проводятся над блоками (Erase block), минимальными объемами памяти для стирания, состоящими из нескольких страниц. Страница — это минимальная область памяти, которая может быть прочтена или записана за одну операцию чтения/записи.
Так появилось понятие цикла Программирования/стирания — Program/erase cycle. Запись данных на одну или несколько страниц в блоке и стирание блока, в любом порядке.
Логичным образом возникло понятие фактора увеличения записи — Write amplification factor (WAF). Количество данных, записанных на диск, поделенное на количество данных, отправленных системой для записи.
Что влияет на WAF?
Природа нагрузки:
- последовательная или случайная;
- большие или малые блоки;
- есть ли выравнивание данных по размерам блоков;
- вид данных (особенно для SSD с поддержкой компрессии).
Например, если система отправляет для записи 4КБ, а на флеш записано 16КБ (один блок), то WAF = 4.
Один блок флеш-памяти
Здесь изображен один блок NAND, состоящий из 64 страниц. Предположим, что каждая страница имеет размер 2КБ (четыре сектора), в итоге 256 секторов в блоке. Все страницы блока заняты полезными данными. Предположим, что система перезаписывает только несколько секторов в блоке.
Страницы для перезаписи
Чтобы записать 8 секторов, нам нужно:
- Прочитать весь блок в оперативную память.
- Изменить данные в страницах 1, 2 и 3.
- Стереть блок из NAND.
- Записать блок из оперативной памяти.
Итого 256 секторов стерто и перезаписано ради изменения всего 8, WAF уже 32. Но это все ужасы мелких блоков и неоптимизированных алгоритмов работы с флешом, при записи крупными блоками WAF будет равен единице.
JEDEC (индустриальный консорциум по всякой микроэлектронике) определил кучу факторов, которые влияют на жизненный цикл SSD дисков и вывел функцию зависимости как f(TBW) = (TBW ×2 ×WAF) / C, где C — емкость диска, а множитель 2 введен для предотвращения влияния износа флеша на надежность хранения.
Итого, TBW Flash capacity*PE cycles/2*WA
В результате, живучесть каждого SSD определяется типом нагрузки, которую придется определять вручную. Случай линейной записи самый простой, для случайных операций будет еще сильно влиять запас NAND памяти, который не используется пользователем.
Если взять диск с 3K P/E циклов на ячейку памяти, то при линейной записи TBW = 384 или около 1 DWPD для емкости в 256GB в течении 5 лет.
Enterprise workload, по JEDEC'у, дает WA примерно равный 5, или около 0,2 DWPD в течении 5 лет.