28 апреля 2010 г.

Некоторые методы обеспечения целостности данных в Clariion

Давайте рассмотрим несколько потенциальных возможностей появления “битых” данных и способов борьбы с такими случаями в массивах Clariion.

Операция записи данных на RAID5, по сути, состоит из двух фаз: запись блоков данных, запись parity. В случае пропадания питания до того как вторая фаза была завершена, данные parity будут некорректны. Эту проблема, конечно, обнаружится и будет исправлена скрабером SNiiFFER (о нем чуть позже), но только после некоторого неопределенного времени. Если до этого один из дисков выйдет из строя, восстановленные данные будут некорректны. Именно поэтому секторы, содержащие неверные значения parity необходимо выявить и пересчитать как можно раньше. Для ускорения этого процесса используются специальные записи в NVRAM каждого SP. Перед выполнением операции записи на диск, в небольшую область NVRAM помещаются сведения о номере модифицируемой LUN, адресе блока и объеме записываемых данных. После успешного выполнения операции записи данных и parity, эта информация удаляется. При загрузке массива с появлением электропитания, записи NVRAM анализируются на предмет наличия незавершенных операций, а в случае их нахождения, блоки данных и parity сразу восстанавливаются.

Как вы знаете, размер сектора в дисковых массивах Clariion равен не 512, а 520 байт. Дополнительные 8 байт используются для хранения следующей информации:
  • 2bytes контрольная сумма LRC (Longitudinal Redundancy Checksum,)
  • 2bytes штамп времени timestamp
  • 2bytes штамп времени writestamp
  • 2bytes штамп shedstamp
Штампы времени является уникальными значениями, генерируемым SP. Каждый раз, когда производится full stripe write, в соответствующие поля секторов всех дисков RAID Group записывается новый timestamp. В случае модификации только одного из секторов, на дисках с данными и parity выставляются одинаковые значения writestamp. После выполнения full stripe write, writestamp обнуляется. Таким образом, по совпадению значений writestamp в секторе данных и соответствующем ему секторе parity можно убедиться в успешности завершения обеих фаз операции записи. Вместе штампы времени представляют собой уникальный идентификатор “версии” данных и parity. Если после каких-либо сбоев, обнаруживается несовпадение этих версий, значение parity пересчитывается.

Однако, нельзя недооценивать возможность повреждения parity при использовании RAID Group с уже сломавшимся диском. В этом случае, неверный parity может привести к невозможности получения корректных данных. Хочу обратить ваше внимание на то, что приведенная ситуация не является RAID5 double failure и поэтому обязательно должна быть разрешена. Для этого в дисковых массивах Clariion используется проприетарный алгоритм parity shedding. Главным вопросом , который привел к ее появлению был: “зачем нам parity в RAID5 с вышедшим из строя диском?”. При использовании parity shedding, поломка диска запускает процесс восстановления данных и их записи вместо parity. Соответствующий сектор помечается при помощи shedstamp. Таким образом, мы убиваем сразу двух зайцев: во-первых, увеличиваем производительность доступа к данным (ведь уже нет необходимости каждый раз восстанавливать данные из parity), а во-вторых, исключаем потенциальную возможность повреждения самой parity. Ради интереса, задайте вопрос представителям других производителей дисковых массивов, как в их продуктах решена эта задача?  ;)

Рассмотрим случай повреждения или некорректного чтения самих данных. Эта проблема актуальна для всех типов RAID. Решается она классическим способом, вместе с данными хранится контрольная сумма. При считывании сектора, его контрольная сумма вычисляется заново и побитно сравнивается с уже имеющимся значением LRC. В случае несовпадения, производится еще одна попытка чтения данных, а в случае ее повторной неудачи, информация восстанавливается с другой части зеркала RAID10  или parity RAID5.

Скрабинг данных (scrubbing) – это функция обнаружения ошибок чтения и  целостности информации. Фоновый процесс SNiiFFER постоянно читает секторы данных и проверяет их корректность. Он обнаруживает ошибки, которые могут быть исправлены самим контроллером жесткого диска (disk-recovered errors), а также проблемы с данными, которые невозможно восстановить на уровне дисков (medium errors). При обнаружении disk-recovered error, SNiiFFER отдает команду о проактивном переносе данных в другой физический сектор диска. Medium errors восстанавливаются используя возможности избыточности информации в RAID. SNiiFFER работает в фоне с очень низким приоритетом и поэтому никак не влияет на обслуживание операций ввода-вывода. В системе мониторинга производительности его активность видна в видна как операции чтения блоками 64KB и Throughput ~2IOPS).

25 апреля 2010 г.

Основные характеристики дисков (часть 2)

Необходимо всегда понимать, в каком из контекстов используется значение емкости:
  • значение емкости полученное, так называемыми, десятичным (decimal) или двоичным (binary) способами.
  • номинальное значение емкости до форматирования и доступное для использования (usable) значение емкости после форматирования
Ни для кого не открою секрета утверждением, что байт состоит из 8 бит, а килобайт из 1024 байт. Однако производители жестких дисков традиционно так не считают. Для “удобства потребителя” маркетинг предложил использовать альтернативный десятичный способ, позволяющий в полной мере оценить эстетику больших круглых чисел. К сожалению, такая забота, по сути, завышает реальную емкость дисков. 10% различия в дисках объемом 1TB будут равны 93GB. Согласитесь, что это достаточно ощутимая разница.

Единица измерения
Двоичные байты
Десятичные байты
Разница %
Kilobyte
1 024
1 000
2
Megabyte
1 048 576
1 000 000
5
Gigabyte
1 073 741 824
1 000 000 000
8
Terabyte
1 099 511 627 776
1 000 000 000 000
10

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

Все производители накопителей данных постоянно участвуют в гонке за повышение емкости своих жестких дисков. Существуют несколько способов ее увеличения:
  • повышение плотности записи данных (areal density) – перспективный путь, которым пытаются идти все производители при разработке продуктов следующих поколений (в наших примерах обратите внимание на разницу плотности записи между Cheetah 15K.6 и Cheetah 15K.7).
  • увеличение количества магнитных пластин и головок – этими показателями часто отличаются диски различной емкости в рамках одной продуктовой линейки (например, Cheetah 15K.7 600GB и Cheetah 15K.7 450GB).
  • увеличение диаметра магнитных пластин – по этим параметрам чаще всего отличаются накопители, относящиеся к продуктовым линейкам различных нишевых категорий.

Рассмотрим последний пункт более подробно. Например, диски Cheetah 15K.6 450GB 15K RPM и Barracuda ES.2 1TB 7,2K RPM (см. таблицу из прошлого поста) имеют равное количество пластин и головок и практически одинаковые значения плотности записи. В тоже время их емкость очень сильно отличается. Это объясняется тем, что в накопителях Barracuda используются пластины большего диаметра. К сожалению, за все нужно платить. При применении крупных и, соответственно, более инертных магнитных пластин приходится использовать меньшую частоту вращения шпинделя, что в свою очередь, ведет к увеличению Avg. Rotational Latency. C другой стороны, больший диаметр пластины означает увеличение длины хода блока головок чтения-записи, что, естественным образом, приводит к росту Avg. Seek Latency. Разные значения производительности, емкости, надежности и цены дисков дают нам возможность выбора оптимальной конфигурации хранилища данных.

На полезную емкость дисковых накопителей, конечно, влияет способ их форматирования. Жесткие диски персональных компьютеров и серверов всегда поставляются заказчику отформатированными на низком уровне. Их логическая структура секторов уже размечена еще на заводе. Сектора обычно имеют стандартный размер 512bytes (в простонародье “полкило”). Но в дисковых массивах Clariion размер сектора увеличен до 520bytes. Дополнительные 8bytes используются для функций обеспечения целостности данных.

Операционная среда FLARE также резервирует некоторый объем для своих служебных нужд. На каждом из первых 5 дисков полки DAE0 (vault drives) для хранения внутренней базы данных, загрузочных образов и дампов кэш зарезервированы следующие объемы:
  • CX4 - 62GB
  • CX3 - 33GB
  • CX - 6GB
На всех остальных дисках массива для служебных целей резервируется крохотный объем 34MB (см. комментарии к этому посту). Полезный объем накопителей в дисковых массивах Clariion CX4 показаны в таблице.

Емкость
Полезный объем
Диски Vault GB
Другие диски GB
1TB
855,182
917,1492
600GB
474,8083
536,7751
450GB
340,6062
402,5730
400GB
304,7978
366,7646
300GB
206,4041
268,3709
200GB
121,4444
183,4112
146GB
71,6806
133,6473
73GB
4,6387
66,6055

Добавлено:
В VNX в качестве Vault используются 4x диска (вместо 5x в CX4) на каждом из них под служебные нужды выделяется 192GB .

Новые дисковые массивы Clariion CX4 и AX4-5 в момент написания этого документа продавались с накопителями, описанными в таблице. При модернизации массивов предыдущих поколений  до CX4, соответствующие диски также поддерживаются.

Емкость
Интерфейсы
Тип
Скорость вращения
CX4
1TB
4 Gbps FC
ж. д.
7.2K rpm
4 Gbps FC
ж. д.
5.4K rpm
600GB
4 Gbps FC
ж. д.
10K rpm
450GB
4 Gbps FC
ж. д.
15K rpm
4 Gbps FC
ж. д.
10K rpm
400GB
4 Gbps FC
ж. д.
10K rpm
4 Gbps FC
SSD
-
300GB
4 Gbps FC
ж. д.
15K rpm
200GB
4 Gbps FC
SSD
-
146GB
4 Gbps FC
ж. д.
15K rpm
73GB
4 Gbps FC
SSD
-
AX4-5
1TB
SATA II
ж. д.
7.2K rpm
750GB
SATA II
ж. д.
7.2K rpm
600GB
3/6 Gb SAS
ж. д.
10K rpm
450GB
3 Gb SAS
ж. д.
15K rpm
400GB
3 Gb SAS
ж. д.
10K rpm
300GB
3 Gb SAS
ж. д.
15K rpm
146GB
3 Gb SAS
ж. д.
15K rpm

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

Размер буферов
Контроллеры современных жестких дисков имеют буферы, которые используются для кэширования запросов. Типичный размер таких буферов 16MB. Накопители SATA обычно имеют увеличенный объем 32MB. Одним из методов оптимизации производительности доступа к данным на диске является предварительная выборка (prefetch) читаемых блоков. Эта операция никоим образом не зависит от prefetch на уровне кэша Clariion. Иногда бывает так, что read-miss запрос в кэш дискового массива будет обработан как read-hit буферами соответствующих накопителей.

Единовременно жесткие диски могут обслуживать только один запрос на чтение или запись. Обработка потока данных осуществляется классическим способом - организацией очереди в специальном буфере на контроллере накопителя. Однако, в случае устройств хранения с механическим позиционированием, простейший алгоритм обработки очередности запросов FIFO (First In First Out) будет очень неэффективным.
Для оптимизации этого процесса все накопители в современных дисковых массивах Clariion поддерживают аппаратную установку очередности команд. В FC и SAS это реализовано за счет технологии Tagged Command Queuing (TCQ), а в дисках SATA за счет применения Native Command Queuing (NCQ). Суть этих технологий заключается в том, что поступающие команды накапливаются в буфере и далее, в зависимости от адресов блоков и текущего положения головки чтения-записи, сортируются и выполняются в последовательности, позволяющей минимизировать количество перемещений головок и времени ожидания нужного сектора. Однако стоит заметить, что контроллеры накопителей FC и SAS используют систему команд SCSI, что позволяет более эффективно работать с блоками данных, чем при помощи команд ATA.


О накопителях Flash здесь и здесь...

22 апреля 2010 г.

Основные характеристики дисков (часть 1)

Об адресации жестких дисков здесь...

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

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


Внешний интерфейс
Основными внешними интерфейсами в настоящий момент являются FC (Fibre Channel), SATA (Serial ATA) и SAS (Serial Attach SCSI). Так, в приведенном примере, диски семейства Seagate Cheetah могут выпускаться с интерфейсами FC 4Gbps, SAS 3Gbps или SAS 6Gbps, а Barracuda с интерфейсами SAS 3Gbps или SATA 3Gbps.

Обратите внимание, что внешний интерфейс никоим образом не определяет производительность или отказоустойчивости жестких дисков. Поэтому утверждения вроде “диски SAS надежнее/быстрее SATA” совершенно бессмысленны.

Важно, что внешние интерфейсы имеют принципиально более высокие характеристики, по сравнению с реальной производительностью доступа к данным жестких дисков. Например, теоретические 600MB/s интерфейса SAS 6Gbps почти в 3 раза превосходят реальные показатели Bandwidth дисков Cheetah 15K.7. А вот в случае с flash-дисками, может случиться обратная ситуация и уже внешний интерфейс (например, SATA II 3Gbps) уже может стать узким местом.

Диск
Transfer Rate интерфейса
Плотность записи Gbits/inch2
Кэш MB
Макс. внутренний Bandwidth MB/s
Avg. Rotation Latency ms
Avg. Seek Latency read/write ms
Кол-во пластин/ головок
AFR %/ MTBF млн. ч.
Cheetah 15K.7 600GB 15K RPM
4Gbps FC
6Gbps SAS
225
16
204
2
3,4/3,9
4/8
0,55/1,6
Cheetah 15K.7 450GB 15K RPM
4Gbps FC
6Gbps SAS
225
16
204
2
3,4/3,9
3/6
0,55/1,6
Cheetah 15K.6 450GB 15K RPM
4Gbps FC
3Gbps SAS
165
16
171
2
3,4/3,9
4/8
0,55/1,6
Cheetah 15K.6 300GB 15K RPM
4Gbps FC
3Gbps SAS
165
16
171
2
3,4/3,9
3/6
0,55/1,6
Cheetah NS.2 600GB 10K RPM
4Gbps FC
6Gbps SAS
225
16
150
3
3,8/4,4
4/8
0,55/1,6
Cheetah NS.2 4500GB 10K RPM
4Gbps FC
6Gbps SAS
225
16
150
3
3,8/4,4
3/6
0,55/1,6
Cheetah NS 400GB 10K RPM
4Gbps FC
3Gbps SAS
N/A
16
97
3
3,9/4,2
N/A
0,62/1,4
Barracuda ES.2 1TB 7,2K RPM
3Gbps SAS 3Gbps SATA
164
32SATA
16SAS
105 SATA
116
SAS
4
8,5/9,5
4/8
0,73/1,2
Barracuda ES.2 750GB 7,2K RPM
3Gbps SAS 3Gbps SATA
164
32SATA
16SAS
105 SATA
116 SAS
4
8,5/9,5
3/6
0,73/1,2
 
Частота вращения шпинделя
Частота вращения шпинделя с закрепленными на нем пластинами является основным фактором, определяющим производительность жестких дисков. Обычно ее измеряют в количестве оборотов в минуту (Revolutions Per Minute, RPM). Для сокращения записи, тысячу RPM часто обозначают символом K (Kilo). Наиболее используемыми являются частоты 15K, 10K, 7,2K и 5,4K RPM.

Процесс передачи данных с/на жесткий диск состоит из 3 фаз:
  1. перемещения блока головок чтения-записи на соответствующую группу треков и более точного позиционирования на нужный трек (Seek)
  2. ожидания поворота пластин, пока соответствующий сектор не появится под головкой (Rotation)
  3. считывания или записи данных (Transfer)

Соответственно, общая задержка передачи будет состоять из Seek Latency, Rotation Latency и Transfer Time:


Расстояние, на которое необходимо переместиться блоку головок чтения-записи для того, чтобы позиционироваться на нужный трек, называется Seek Distance. Обычно его считают не в количестве треков, а гигабайтах разницы между адресуемыми блоками LBA. Например, если последовательно запрашиваются блоки с адресами 100 и 1000100, Seek Distance будет равно 0,5GB (512bytes*(1000100-100)/1024/1024/1024).

Если приложение работает с данными, средние значения Avg. Seek Distance которых <25% от общей емкости накопителя, можно сделать вывод о том, что наиболее востребованные данные расположены очень локально. Снижая Seek Latency на уровне приложений, мы можем добиться заметного увеличения производительности доступа к данным. Если же востребованные данные разбросаны по всей поверхности диска и Avg. Seek Distance >75% от емкости, необходимо быть готовым к тому, что производительность доступа будет более скромной.

Rotational Latency напрямую зависит от частоты вращения шпинделя. Так, диск, вращающийся с частотой 15K RPM, будет иметь среднее значение Avg. Rotational Latency, т. е. время совершения половины одного оборота, равным 2ms (60сек. / 15000об. / 2).

Transfer time, прежде всего, зависит от объема считываемых или записываемых данных, а также внутренней Bandwidth диска. Последняя, в свою очередь, повышается с увеличением частоты вращения шпинделя и плотности записи данных на магнитной пластине. Обратите внимание на разницу в Bandwidth накопителей Cheetah 15K.6 и Barracuda ES.2. При практически одинаковой плотности записи данных их внутренние Bandwidth заметно отличаются за счет разницы частот вращения.

Суммируя вышесказанное, можно утверждать, что диски с высокой частотой вращения шпинделя имеют достаточно низкие значения Seek и Rotational Latency даже при произвольном доступе к данным малыми блоками. Поэтому они лучше подходят для throughput oriented приложений
Характеристики производительности накопителей с частотой вращения 7,2K и 5,4K RPM заметно хуже. Но при последовательном доступе к данным большими блоками, разницей в Seek Latency можно пренебречь. И хотя значения их внутренней Bandwidth все же уступают дискам 15K и 10K RPM, учитывая их достаточно низкую стоимость, можно рекомендовать их для хранения данных bandwidth oriented приложений.

Обращаю ваше внимание на то, что в таблице приведены максимальные значения Bandwidth. На самом деле, за счет неравномерности распределения плотности записи по поверхности магнитных пластин, производительность доступа на внешних треках несколько выше, чем на внутренних. Разница может более 10%. За счет кэширования запросов при небольших и средних нагрузках это различие будет практически не заметно. В случае же высокой нагрузки, грамотное распределение данных поможет оптимизировать производительность. Это можно сделать на этапе создания LUNs на RAID Group. Например, в дисковых массивах EMC Clariion, при использовании утилит конфигурации в первую очередь создаются LUNs на внешних треках дисков и затем дисковое пространство заполняется по направлению к шпинделю.

Какое же распределение LUNs будет наиболее эффективным, если в одной GAID Group мы используем высоко и средне нагруженные тома? Рассмотрим примеры на рисунке.


Очевидно, что вариант 1 является неграмотным. Располагать нагруженный том на внутренних треках не разумно.
Вариант 2 кажется более правильным. Оба нагруженных тома находятся рядом на внешних треках накопителя. Но для работы с данными ненагруженных LUNs блоку головок чтения-записи будет необходимо регулярно перемещаться по всему диапазону треков. Издержки увеличение Avg. Seek Distance могут быть больше, чем преимущества, полученные от расположения данных на внешних треках.
Вариант 3 будет наиболее оптимальным решением. Расположение нагруженных томов “посередине” пластины позволит с одной стороны воспользоваться преимуществом приемлемой производительности средних треков, а с другой стороны, почти в 2 раза уменьшить Avg. Seek Distance.

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

Диск
Throughput IOPS
Bandwidth MB/s
EFD
2 500
-
15K RPM  FC
180
12
10K RPM  FC
140
10
7,2K RPM  SATA
80
8
7,2K RPM  ATA
60
7

Несколько заниженные значения Throughput были получены из экспериментальных данных о поведении дисков при произвольном доступе блоками 2-8KB. Данные Bandwidth рассматриваются в контексте последовательной активность блоками 128KB.

Емкость и размеры буферов дисков мы обсудим во второй части...