дисковый контроллер что это
Диски, контроллеры, ОС и Advanced Format
Что такое Advanced Format
Advanced Format — новый формат разметки секторов, используемый в некоторых жёстких дисках. Вместо традиционного сектора размером 512 байт используется 4096 байт. Некоторые диски SCSI/SAS/FC могут использовать 520- и 528-байтные «толстые» сектора для дополнительного контроля целостности данных, но это не относится к теме данной статьи.
Увеличение размера сектора в 8 раз связано с необходимостью повышения эффективности размещения данных на современных дисках. Накладные расходы, связанные с 512-байтной разметкой, начинают мешать дальнейшему увеличению ёмкости HDD. Помимо служебных полей в каждом 512-байтном секторе присутствует поле с кодом коррекции ошибок (ECC) длиной в 50 байт. В 4096-байтном секторе длина ECC-поля составляет 100 байт. Общее эффективность хранения данных удалось улучшить примерно на 10%.
Естественно, поддержка нестандартных секторов требуется со стороны дисковых контроллеров и операционных систем. Для решения проблем с совместимостью был ввёден дополнительный стандарт 512E, который обозначает диски с физическим размером сектора 4096 байт, но при этом эмулирующие обычный размер сектора в 512 байт. Advanced Format диски без эмуляции обозначаются 4KN. Таким образом, сейчас существует три варианта разметки:
Формат | Логический размер сектора | Физический размер сектора |
512 байт | 512 байт | |
512 байт | 4096 байт (4КиБ) | |
4096 байт (4КиБ) | 4096 байт (4КиБ) |
Совместимость
Операционные системы
На первый взгляд кажется, что использование эмуляции 512-байтного сектора снимает все проблемы с совместимостью, но это не так. Во-первых, сразу же возникает проблема с производительностью. Что произойдет при записи блока размером 512 байт на диск с размером сектора 4096 байт (пусть и эмулирующий наличие секторов 512 байт)? Произойдёт классический процесс read-modify-write, вместо одной операции понадобится две: прочитать сектор 4096 байт, поменять в нём 512 байт (записываемый блок) и записать 4096 байт обратно. Аналогичная проблема проявляется и при отсутствии выравнивания, когда записываемый блок данных может быть достаточно большим и даже кратным 4096 байт, но при этом сдвинут относительно границ реальных секторов:
В современных условиях операции записи блоками меньше 4096 байт встречаются крайне редко, а вот проблема с выравниванием остаётся. Например, в старых Windows (до Windows Server 2008) при установке загрузочный раздел создаётся со смещением в 63 сектора. Так уж исторически сложилось с тех времён, когда BIOS использовал реальную геометрию диска вместо LBA. Разумеется, смещение в 63×512 не делится на 4096, что приводит к нарушению выравнивания для всех последующих разделов и снижению производительности. Впервые на данную проблему обратили внимание в связи с использованием RAID-контроллеров и необходимостью выравнивания разделов по границам страйпа и она была решена в Windows Vista/ Windows Server 2008 (и примерно в то же время — в других ОС) введением выравнивания по границам в 1024КиБ (1МиБ), т.е. первый раздел создается со смещением в 2048 512-байтных секторов.
Почему именно 1МиБ, если подойдёт меньшее смещение (главное — чтобы делилось на 4096 байт)? Просто потому, что нужен запас, ведь помимо физического диска в качестве блочного устройства могут выступать тома на RAID-контроллерах (с размером страйпа по умолчанию, например, у Adaptec в 256КиБ), SSD (с большим размером страниц) или образы дисков при использовании виртуализации, рекомендуемый размер NTFS-кластера для SQL или Exchange равен 64КиБ и т.д.
Проблема номер два — возможная потеря данных для сценариев с синхронной записью. Для ситуаций с записью блока меньше 4096 байт или невыравненного блока синхронной записи по факту не получится. Остаётся «научить» ОС не использовать при записи блоки меньше 4096 байт на диски 512E, но с этим есть определённые проблемы.
Microsoft
Проверить выравнивание существующих разделов и задать смещение для новых разделов в Windows можно при помощи diskpart. Пример (раздел на диске 0 со смещением в 1024КиБ или 2048 512-байтных секторов):
Проверить проще всего через WMI (пример):
В колонке StartingOffset должно быть 1024КиБ для первого раздела, для остальных — должно делиться на 1024КиБ, это означает, что и на 4096 байт и все другие «хорошие числа» (размеры страйпов и NTFS-кластеров) всё будет делиться.
Напомню, что в современных Windows смещение в 1024КиБ и так используется по умолчанию, так что проверять/выставлять его вручную нужно лишь для ОС из «63-секторной» эпохи. При автоматическом создании GPT-разметки (через Disk Management) на 512N или 512E диске вы увидите смещение для первого раздела в 17КиБ. Это не повод для тревоги, так как это служебный раздел MSR. Первый стандартный раздел будет создан со смещением в 135266304 байт (129МиБ) — прекрасно делится на любое из наших «хороших чисел».
Linux
Пример для GNU Parted (для 512N/512E дисков):
В LVM всё хорошо: смещение по умолчанию равно 1МиБ и размер PE (physical extent) кратен 1МиБ.
VMware
Статья в базе знаний VMware утверждает, что ни 512E, ни 4KN диски не поддерживаются. Поддержка дисков 4KN заявлена в vSphere 6.0.
С появлением VMFS-5 мы получили единый размер блока — 1МиБ и правильное 1МиБ-смещение для первого раздела. Раньше использовалось не всегда подходящее смещение в 64КиБ. Но всё это не отменяет заявления VMware о том, что 512E диски не поддерживаются. Видимо, это связано с тем, что формат VMDK хранит данные с гранулярностью 512 байт.
Прочие ОС
Mac OSX поддерживает Advanced Format начиная с Tiger. Остаются ещё FreeBSD и прочие *BSD, Oracle Solaris и множество других ОС, но детальное рассмотрение ситуации с Advanced Format дисками в них выходит за рамки данной статьи.
Сервисы Microsoft
Hyper-V
Exchange Server
SQL Server
Ситуация та же, что и для Exchange Server — в отказоустойчивых конфигурациях для баз и логов на всех узлах должы использоваться диски с одинаковым физическим размером сектора.
При использовании Storage Spaces возникает интересная ситуация: презентуемый размер физического сектора оказывается равным 4КиБ вне зависимости от того, из каких дисков собран Storage Spaces (том Storage Spaces можно создать из разных дисков — 512N и 512E, смешивать с 4KN, естественно, нельзя, кроме случаев использования tiering’а с SSD). Формат VHDX (виртуальный диск) по умолчанию создаётся как 512E. В этом можно убедиться, запустив fsutil fsinfo ntfsinfo :
При использовании VHDX на томе Storage Spaces (или аппаратном RAID), состоящем из 4KN дисков, сам VHDX тоже желательно сделать 4KN:
Безопасно ли это для SQL и других приложений, использующих синхронную запись? Ответ — да, так как большая гранулярность хранения не нарушает целостности данных, на производительность это тоже не влияет, так как 4096 делится на 512.
Сервисы, использующие ESENT
Не совсем актуальная проблема в Windows Server 2008. Сервисы, использующие в работе Extensible Storage Engine API (AD, WINS, DHCP) могут упасть при изменении размера физического сектора (например, при миграции с 512N-диска на 512E). Подробное описание и хотфикс смотрите тут.
Прочее ПО
Контроллеры
Adaptec by PMC
LSI/Avago
Это свойство как раз и отвечает за презентуемые хосту размеры блоков:
Default (0): при наличии в томе дисков 512E он презентуется как 512E. Если все диски — 512N, тогда том презентуется как 512N
Disabled (1): Том всегда презентуется как 512N несмотря на наличие дисков 512E
Forced (2): Том всегда презентуется как 512E даже при отсутствии дисков 512E
Emulation Type был портирован и на SAS2 контроллеры (LSI 2108/2208), но без значения Forced (2).
Программный RAID в чипсетах Intel (RST/RSTe)
4KN не поддерживается совсем, Intel RST на дисках 512E требует свежих драйверов.
Advanced Format в дисках корпоративного класса. Что нас ждёт?
Речь пойдёт о дисках корпоративного класса последний серий. Десктопные HDD и позиционируемые для NAS или видеонаблюдения сюда не попали.
Вендор | Серия | Форм-фактор | Интерфейсы | Скорость вращения шпинделя, об/мин | Дополнительно | |||
Seagate | Enterprise Performance 10K HDD (10k.8) | 2.5″ | SAS | 10000 | Y | Y | Y | для 512N ёмкость ограничена: 600/1200ГБ |
Seagate | Enterprise Performance 15K HDD (15k.5) | 2.5″ | SAS | 15000 | Y | Y | Y | 32ГБ встроенного SSD-кэша |
Seagate | Enterprise Capacity 2.5 HDD (V.3) | 2.5″ | SAS, SATA | 7200 | Y | Y | ||
Seagate | Enterprise Capacity 3.5 HDD (V.4) | 3.5″ | SAS, SATA | 7200 | Y | Y | ||
Seagate | Archive HDD | 3.5″ | SATA | 7200 | Y | Позиционируются для архивного применения, меньше MTBF и хуже BER | ||
Seagate | Terascale HDD | 3.5″ | SATA | 5900/7200 | Y | Позиционируются для облачного применения, меньше MTBF и хуже BER | ||
HGST | Ultrastar C10K1800 | 2.5″ | SAS | 10000 | Y | Y | Y | для 512N ёмкость ограничена: 300/600/900/1200ГБ |
HGST | Ultrastar C15K600 | 2.5″ | SAS | 15000 | Y | Y | Y | |
HGST | Ultrastar C7K1000 | 2.5″ | SAS | 7200 | Y | |||
HGST | Ultrastar He 8 | 3.5″ | SAS, SATA | 7200 | Y | Y | ||
HGST | Ultrastar He 6 | 3.5″ | SAS, SATA | 7200 | Y | |||
HGST | Ultrastar 7K6000 | 3.5″ | SAS, SATA | 7200 | Y | Y | ||
HGST | MegaScale DC 4000.B | 3.5″ | SATA | 5400 | Y | Позиционируются для облачного применения, меньше MTBF и хуже BER | ||
WD | Xe | 2.5″/3.5″ | SAS | 10000 | Y | |||
WD | Re | 3.5″ | SATA | 7200 | Y | |||
WD | Se | 3.5″ | SATA | 7200 | Y | Позиционируются для облачного применения, меньше MTBF и хуже BER | ||
WD | Ae | 3.5″ | SATA | 5760 | Y | ? | Позиционируются для архивного применения, меньше MTBF и хуже BER | |
Toshiba | AL13SE | 2.5″ | SAS | 10000 | Y | |||
Toshiba | AL13SX | 2.5″ | SAS | 15000 | Y | |||
Toshiba | AL13SEL | 3.5″ | SAS | 10000 | Y | |||
Toshiba | MG03ACA/MG03SCA | 3.5″ | SAS, SATA | 7200 | Y | |||
Toshiba | MG04ACA | 3.5″ | SATA | 7200 | Y | Y | ||
Toshiba | MG04SCA | 3.5″ | SAS | 7200 | Y | Y | ||
Toshiba | MC04ACA | 3.5″ | SATA | 7200 | Y | Позиционируются для облачного применения, меньше MTBF и хуже BER |
Тенденцию вы видите сами — Advanced Format окончательно проник из десктопного сегмента в корпоративный. Быстрые SAS диски 10/15 тыс. об/мин ещё выпускаются в варианте 512N, но наращивание плотности заставляет производителей использовать 4КиБ-сектора: Seagate 10k.8 и HGST Ultrastar C10K1800 ёмкостью 1800ГБ доступны только в вариантах 512E и 4KN. Все диски объёмом больше 5ТБ за исключением HGST Ultrastar He 6 — только Advanced Format.
SSD имеют свои особенности. Читать и записывать данные можно страницами, размер которых составляет 2–4–8–16КиБ в зависимости от архитектуры SSD. При этом для записи нужно обеспечить предварительное стирание ячеек, которое осуществляется не постранично, а блоками по несколько сотен страниц. Например, Samsung 840 EVO имеет блоки по 2МиБ, каждый из которых состоит из 256-ти страниц по 8КиБ. При этом, естественно, любой презентуемый хосту размер блока — 512 или 4096 байт — будет абстракцией.
Некоторые из современных SAS/SATA SSD эмулируют 512E-диск, но большая часть из соображений совместимости — 512N. Каких-либо особых мер в связи с этим предпринимать не требуется, так как в SSD корпоративного класса содержимое кэша обязательно защищается от потери питания. Достаточно обеспечить выравнивание по размеру страницы.
Некоторые PCI-E SSD, например, производства Fusion IO дают возможность при помощи фирменных утилит изменить при форматировании размер логического сектора, т.е. переключаться между 512E и 4KN режимами. Для некоторых SSD с интерфейсом SAS это тоже возможно, например, Seagate 1200 поддерживает изменение размера сектора обычным sg_format. Переход на 4КиБ сектор в некоторых сценариях может существенно поднять производительность.
Что такое RAID-массив и зачем он нужен
Содержание
Содержание
В системах хранения данных критически важны сохранность и время восстановления в случае сбоя. Свою ценность, а в некоторых задачах и более высокую, имеет скорость работы накопителей. Использование RAID-массивов в различных конфигурациях — это поиск компромисса между перечисленными параметрами.
RAID — это технология объединения двух и более накопителей в единый логический элемент с целью повышения производительности и (или) отказоустойчивости отдельно взятого элемента массива.
RAID-массивы классифицируются по следующим параметрам:
RAID-контроллеры: аппаратные и не очень
По исполнению контроллеры делятся на программные и аппаратные. Программные реализуются непосредственно средствами операционной системы или на уровне материнской платы. Последние также известны как интегрированные, а также Fake-RAID. Они работают быстрее чисто софтверных решений за счет специального чипа для управления массивом. Недавно публиковался текст о развертывании таких технологий. Дополнительной железки при этом никакой нет и в любом случае будут использоваться ресурсы вычислительной машины.
Аппаратные RAID-контроллеры выполняются в форм-факторе платы PCIe либо в составе внешнего автономного устройства — дискового массива.
Они имеют на борту собственные процессор, память, BIOS и специальный интерфейс для конфигурации. Платы PCIe также комплектуются дополнительными модулями, сохраняющими данные, если произойдет сбой в электропитании: BBU с Li-Ion аккумулятором и ZMCP на базе суперконденсатора.
Оба модуля позволяют сделать сэйв содержимого кэша. После восстановления работы эти данные будут немедленно записаны на диск. Дисковый массив, будучи автономным, располагает собственными блоком питания и системой охлаждения.
Накопители подключаются к плате либо кабелями напрямую, либо через платы расширения. Автономные дисковые массивы содержат все накопители внутри себя, а наружу смотрит все тот же интерфейс PCIe (есть и другие варианты, например, USB 3.2 и Thunderbolt 3). Кстати, известный вид дисковых массивов — сетевое хранилище данных (NAS).
Что можно подключать к RAID-контроллеру
Следующий важный параметр, по которому различаются RAID-массивы, это поддержка интерфейсов накопителей. Не будем тревожить склеп с IDE-дисками, а констатируем, что по большому счету применяются три типа: SATA, SAS и NVMe. SAS — удел серверов, а вот остальные применяются повсеместно.
Есть программные и аппаратные RAID-контроллеры, которые умеют управлять массивом дисков с одним из интерфейсов. В формате PCIe есть и такие платы, которые реализуют режим Tri-Mode, позволяющий работать со смешанным составом накопителей.
Уровни RAID
Разобравшись с основными конструктивными особенностями RAID-контроллеров, перейдем к главной характеристике — поддержке уровней RAID. В подавляющим большинстве контроллеры работают с уровнями 0, 1, 1E, 10, 5, 5EE, 50, 6, 60. Другие занесены в красную книгу и на практике встречаются редко. Простейшие программные контроллеры позволяют создать RAID 0 и 1. Более продвинутые добавляют RAID 10 и 5. В аппаратных, как правило, такой перечень минимален, и многие платы поддерживают весь спектр уровней. Рассмотрим подробнее каждый из них.
Несколько важных нюансов для понимания эффективных объема и быстродействия, получаемых в результате объединения в массив:
RAID 0
Единственный массив, который не совсем оправдывает название, поскольку не обладает избыточностью. При этом скорость и эффективный объем максимальны. Данные разбиваются на одинаковые блоки, равномерно записываемые на все диски по очереди. Эти блоки называются страйпами, отсюда и сам RAID 0 часто именуют страйпом. Считывание данных также происходит параллельно. Здесь конечно же есть свое но.
Дело в том, что прирост производительности не прямо пропорционален количеству дисков (как хотелось бы). В силу специфики накопителей, особенно механических, выигрыш в конфигурации RAID 0 хорошо заметен только на операциях последовательного чтения. Другими словами, при работе с большими файлами. Типичная область применения — игры, видеомонтаж и рендеринг. При условии, что регулярно производится резервирование на сторонние накопители. Наряду с этим при случайном доступе к файлам разница с отдельно взятым диском уже не так ощутима. Более позитивная картина наблюдается в случае твердотельных накопителей, но они и так удовлетворяют большинству запросов по быстродействию.
В общем, в современных реалиях RAID 0 далеко не всегда оправдает свое применение, а основная задача RAID-массива все же в повышении надежности хранения данных.
Обратная сторона медали за скорость как раз в отсутствии избыточности, что означает нулевую отказоустойчивость. В случае сбоя хотя бы одного из элементов массива, восстановление всего содержимого практически невозможно.
RAID 1
RAID 1, известный как «зеркало», представляет собой другую крайность. Он максимально избыточен — в нем производится 100 % дублирование данных. Этот процесс «съедает» ровно половину объема массива. Число дисков в нем, соответственно, четное. Позволяет увеличить скорость чтения, но синхронная скорость записи в некоторых случаях падает. При отказе одного из дисков работа автоматически продолжается с дублером. Если доступна функция горячей замены дисков, то восстановление штатного режима происходит без остановки. RAID 1 идеален для чувствительных данных.
RAID 5
Состоит минимум из трех накопителей, при этом доступный объем уменьшается на один. Данные записываются в страйпы на все диски кроме одного, на котором размещается контрольная сумма этой части данных. Запись этого блока также чередуется между всеми накопителями, распределяя равномерную нагрузку. Если их больше четырех, то скорость чтения будет выше чем в RAID 1, но запись будет осуществляться медленнее. Контрольные суммы позволяют достать информацию в случае выхода из строя одного из элементов. Сама операция восстановления вызывает повышенную нагрузку на оставшиеся диски. Значительно падает производительность и риск утери всех данных в случае отказа еще одного диска. Желательно иметь опцию горячей замены для оперативного возвращения в нормальный режим работы.
Со всеми плюсами и минусами эти три уровня наиболее распространены и просты в развертывании.
RAID 6
Развитие RAID 5 по части надежности, позволяющее пережить потерю двух дисков. В данной конфигурации в каждом проходе пишется две независимые контрольные суммы на два накопителя. Требуется минимум четыре диска, из которых два уйдет на описанный алгоритм повышения отказоустойчивости. При этом скорость записи будет еще ниже, чем у RAID 5.
Следующие уровни — производные и комбинации перечисленных.
RAID 10
Неплохо было бы объединить достоинства RAID 0 (производительность) и RAID 1 (отказоустойчивость)? Встречайте RAID 10: страйп и зеркало, два в одном. Но и недостатки не забудьте — по-прежнему половина объема уходит на резерв. А что делать, за надежность приходится платить. В этом плане менее экономичен, чем RAID 5 И RAID 6, но более прост в восстановлении после сбоя.
RAID 50
По похожей схеме получаем RAID 50. Здесь уже страйпы не зеркалируются, а распределяются по двум и более массивам RAID 5. Требуется от шести дисков, скорость чтения значительно увеличивается. Кроме того, нивелируется и слабое место RAID 5 и RAID 6 — низкая скорость записи. Отрицательная сторона опять лежит в плоскости экономики. Из эффективного объема выпадают два диска, как и RAID 6, при этом массив выдержит потерю только одного.
RAID 60
Данный гибрид RAID 0 и RAID 6 призван решить проблему производительности последнего. Отказоустойчивость остается на том же уровне, как и часть объема накопителей, отводимая на реализацию алгоритмов контроля целостности данных. Дисков для такого удовольствия понадобится как минимум восемь.
RAID 1E
Еще одна вариация совмещения алгоритмов зеркалирования и чередования данных. Записанные на одной итерации страйпы повторно записываются на следующей, но в обратном порядке. Таким образом в RAID 1E можно использовать три диска. Массив останется тем же зеркалом с эффективным объемом, равным половине от исходного.
RAID 5EE
Один из вариантов использования RAID 5 с резервным диском. Отличается тем, что этот диск не простаивает до выхода из строя одного из элементов массива, а используется наряду с другими. На каждой итерации помимо страйпов данными и контрольной суммой записывается резервный блок. Сделано это для ускорения процесса сборки массива в случае нештатной ситуации. Платой за такую опцию становится второй диск, исключаемый из эффективного объема RAID 5EE.
В таблице ниже приведены сравнительные характеристики рассмотренных уровней RAID.
Не забудем и про массив с незатейливым названием JBOD (дословно переводится как «просто связка дисков»). Строго говоря, он не является RAID-массивом. Это объединенные в один несколько дисков без дополнительной функциональности. Позволяет развернуть логический диск с объемом, который недоступен в рамках одного накопителя. Такой диск полезен для перемещения файлов больших размеров в несколько терабайт.
Вместо заключения напомним самое главное правило для всех, кто хранит данные в RAID-массиве: RAID-массив ≠ бэкап! Регулярно делайте резервные копии данных на независимые носители и да пребудет с вами сила.