Разное

Raid 0 программный: Программный RAID в Linux с помощью mdadm

Содержание

Программный RAID1 (зеркало) для загрузочного GPT диска в Windows 10/ Server 2016

В этой статье мы рассмотрим, как создать программное зеркало (RAID1) из двух GPT дисков в Windows Server 2016/Windows 10, установленных на UEFI системе. Мы рассмотрим полноценную конфигурацию BCD загрузчика, позволяющую обеспечить корректную загрузку Windows и защитить данные от выхода из строя любого диска.

Итак, у нас имеется простой компьютер UEFI-архитектуры без встроенного RAID контроллера с двумя идентичными дисками размерами по 50 Гб. Наша задача — установить на первый GPT диск ОС (Windows Server 2016, Windows 10 или бесплатного сервер Hyper-V), а затем собрать из двух дисков программное зеркало (RAID1 – Mirroring).

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

Запишите установочный образ Windows на DVD/ USB флешку, загрузите компьютер) с этого загрузочного устройства (в режиме UEFI, не Legacy) и запустите установку Windows Server 2016.

После установки, откройте консоли управления дисками (diskmgmt.msc), убедитесь, что на первом диске используется таблица разделов GPT (свойства диска -> вкладка Volumes -> Partition style –> GUID partition table), а второй диск пустой (неразмечен).

Подготовка таблицы разделов для зеркала на 2 диске

Откройте командную строку с правами администратора и выполните команду diskpart. Наберите:

DISKPART>List disk

Как вы видите, в системе имеется два диска:

  • Disk 0 – диск с таблицей разделов GPT, на который установлена Windows
  • Disk 1 – пустой неразмеченный диск

На всякий случай еще раз очистим второй диск и конвертируем его в GPT:

Select disk 1

clean

Convert GPT

Введите список разделов на втором диске:

List part

Если найдется хотя бы один раздел (в моем примере это Partition 1 – Reserved – Size 128 Mb), удалите его:

Sel part 1

Delete partition override

Выведите список разделов на 1 диске (disk 0). Далее вам нужно создать такие же разделы на Disk 1.

Select disk 0

List part

Имеется 4 раздела:

Создаем такие же разделы на Disk 1:

Select disk 1

Create partition primary size=450

format quick fs=ntfs label=»WinRE»

set id=»de94bba4-06d1-4d40-a16a-bfd50179d6ac»

create partition efi size=99

create partition msr size=16

list part

Преобразования дисков в динамические, создание зеркала

Теперь оба диска нужно преобразовать в динамические:

Select disk 0

Convert dynamic

Select disk 1

Con dyn

Создадим зеркало для системного диска (диск C:). Нужно выбрать раздел на первом диске и создать для него зеркало на 2 диске:

Select volume c
Add disk=1

Должно появится сообщение:

DiskPart succeeded in adding a mirror to the volume

Откройте консоль управления дисками, и убедитесь, что запустилась синхронизуя раздела C на (Recynching). Дождитесь ее окончания (может занять до нескольких часов в значимости от размера раздела C: ).

При загрузке Windows теперь будет появляться меню Windows Boot Manager с предложение выбрать с какого диска загружаться. Если не выбрать диск вручную, система через 30 секунд попытается загрузиться с первого диска:

  • Windows Server 2016
  • Windows Server 2016 – secondary plex

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

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

Далее мы покажем, как скопировать EFI раздел на второй диск и изменить конфигурацию загрузчика BCD, чтобы вы могли загрузить Windows как с первого, так и со второго диска.

Подготовка EFI раздела на втором диске в зеркале

Теперь нужно подготовить EFI раздел на втором диске в зеркале, чтобы компьютер мог использовать этот раздел для загрузки Windows. Назначим EFI разделу на Disk 1 букву S и отформатируем его в файловой системе FAT32:

Select disk 1

Select part 2

assign letter=S

format fs=FAT32 quick

Теперь назначим букву диска P: для EFI раздела на Disk 0:

select disk 0

select partition 2

assign letter=P

exit

Копирование конфигурации EFI и BCD на второй диск

Выведите текущую конфигурацию загрузчика BCD с помощью команды:

bcdedit /enum

При создании зеркала, служба VDS автоматически добавила в конфигурацию BCD запись для второго зеркального диска (с меткой Windows Server 2016 – secondary plex).

Чтобы EFI в случае потери первого диска могут загружаться со второго диска, нужно изменить конфигурацию BCD.

Для этого нужно скопировать текущую конфигурацию Windows Boot Manager

bcdedit /copy {bootmgr} /d "Windows Boot Manager Cloned"

The entry was successfully copied to {44d1d6bf-xxxxxxxxxxxxxxxx}

Теперь скопируйте полученный ID конфигурации и используйте его в следующей команде:

bcdedit /set {44d1d6bf-xxxxxxxxxxxxxxxx} device partition=s:

Если все правильно, должна появится строка The operation completed successfully.

Выведите текущую конфигурацию Windows Boot Manager (bcdedit /enum). Обратите внимает, что у загрузчика теперь два варианта загрузки EFI с разных дисков (default и resume object).

Теперь нужно сделать копию BCD хранилища на разделе EFI первого диска и скопировать файлы на второй диск:

P:
bcdedit /export P:\EFI\Microsoft\Boot\BCD2
robocopy p:\ s:\ /e /r:0

Осталось переименовать BCD хранилище на втором диске:

Rename s:\EFI\Microsoft\Boot\BCD2 BCD

И удалить копию на Disk 0:

Del P:\EFI\Microsoft\Boot\BCD2

Теперь при выходе из строя первого диска, вам нужно при загрузке компьютера выбрать устройство «Windows Boot Manager Cloned», а затем «Microsoft Windows Server 2016 —  secondary plex».

При загрузке с отказавшим дисков, в диспетчере Disk Management вы увидите сообщение Failed Redndancy.

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

mdadm создание массива raid 1, программный рейд

Рейд массив — RAID (redundunt array of inexpensive OR independant disks) — совокупность дисков сервера, работающих совместно и обеспечивающих избыточность по скорости записи/считывания информации или по надежности хранения данных. Для организации Raid mdadm является самым распространенным программным решением. Рассмотрим в mdadm создание массива raid 1, а также массива raid 5.

 

Рейды обычно реализованы аппаратно, однако часто встречаются и программные рейды. Применяются они, в частности, для хранения резервных копий данных.

 

 

apt-get install mdadm

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

 

Создаем простейший RAID 1, создание более сложных конфигураций может потребовать больше времени, однако принципы те же.

 

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

 

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

Изменяем таблицу разделов, прежде всего просматриваем существующие разделы

df

 

Отмонтируем устройство

umount /mnt/sdb

 

Начинаем работу с ним

fdisk /mnt/sdb

 

Выводим состояние девайса на экран

p

 

Удаляем его

d

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

p

 

Добавляем девайс

n

 

Номер партиции

1

Настройки по умолчанию (при желании здесь можно задать сектора, которые будут использоваться для записи данных)

[enter]

[enter]

 

Сменим тип партиции

t

По умолчанию используется код 83 — Linux, сейчас выбираем fd-linux raid auto

Просматриваем внесенные изменения

p

 

Записываем их на диск

w

 

Добавляем новый диск и проделываем с ним аналогичные операции

fdisk /dev/sdc

p

n

p

1

[enter]

[enter]

t

df

w

 

Диск не форматируем

mdadm —create /dev/md0 —raid-devices=2 —level=1 /dev/sdb1 /dev/sdc1

/dev/md0 — имя логического девайса, который мы создаем

raid-devices — количество устройств в рейде

level — тип рейд массива

cat /proc/mdstat

 

Просматривая содержимое файла мы можем видеть прогресс в создании рейд массива

while sleep 5; do grep resync /proc/mdstat

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

 

Убедимся в том, что устройство было создано успешно

ls -l -dev-md*

 

Теперь /dev/md0 выглядит для системы также как любое другое системное устройство, создадим на нем файловую систему

mkfs.ext4 /dev/md0

mkdir /mnt/raid1

mount /dev/md0 /mnt/raid1

 

Проверяем, что все получилось

df

 

Добавляем созданное устройство в автозагрузку

mcedit /etc/fstab

/dev/md0    /mnt/raid1    ext4    defaults    defaults    0

 

Если в /etc/fstab (подробнее про fstab) были прописаны устройства, из которых создан программный рейд — отмонтируем их, в данном случае такое устройство одно

umount /dev/sdb1

mount -a

df

 

Используя mdadm создадим программный RAID-5

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

 

Потребуется новое устройство, которое создается тем же способом, что рассматривался ранее

fdisk /dev/sdd

mdadm —create /dev/md0 —raid-devices=3 —level=5 /dev/sdb1 /dev/sdc1 /dev/sdd1

Вновь форматируем, монтируем устройство  и размещаем данные

 

Читайте подробнее про утилиту fdisk, которая использовалась для работы с системными устройствами в процессе настройки

Восстановление данных с массива RAID 0 (Striping)

Обычно применяется в задачах, где важна максимальная производительность и большой объём временного дискового пространства, например обработка аудио/видео данных, разнотипных изображений, CAD, логгирование и пр., когда при поломке диска данные могут быть легко перезагружены без влияния на общую работу. Также нет потерь дискового пространства, т.к. RAID использует всё доступное дисковое пространство.

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

Схематично структура RAID 0 ваглядит так:

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

Восстановление массива RAID 0

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

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

Пример восстановления массива RAID 0

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

И так, дано: массив RAID 0 из трёх 500Гб дисков, последовательность дисков в массиве неизвестна, размер блока тоже неизвестен, есть ли отступ начала данных на дисках тоже неизвестно.

Требуется воссоздать структуру массива и скопировать данные с него. Подразумевается, что используются посекторные копии дисков либо сами исходные диски исправны.

Первое. Определение последовательности дисков массива и размера блока чередования. Для этого можно воспользоваться программой raid reconstructor.

На первом шаге выбираем тип массива – RAID-0(Striping) и количество дисков #drives – 3. Выбираем диски на места Drive1, Drive2 и Drive 3. Затем, жмем кнопку Open drives и по нажатию кнопки Analyze переходим к автоматическому анализатору параметров массива.

Тут в окне Block size to probe нужно добавить галочку напротив 128 секторов, т.к. встречается достаточно часто и можно убрать напротив 16 секторов для уменьшения времени анализа. После предварительного сканирования, программа решила, что имеет место смещение на дисках в 384 сектора, далее проверим так ли это. Для начала анализа жмём кнопку Next.

Что ж, нам повезло. Параметры определены и предложен наиболее вероятный вариант сборки. Определён размер блока, как раз 64кб, последовательность дисков и предполагаемое смещение в 384 сектора.

Для сборки массива будем использовать программу WinHex.

Для этого в меню Специалист выбираем пункт Восстановить RAID-массив. И выбираем компоненты этого массива последовательно все три наших диска. Смещение пока не задаём, в правом окне выбираем тип массива – RAID 0, в окно Размер блока вводим размер страйпа – 128 секторов и кнопкой ОК завершаем ввод параметров. Далее видим результат.

Неразмеченное место на 1.4 ТБ и никаких признаков раздела. Значит, смещение на дисках всё-таки есть и нам сейчас надо его определить. Предположениями автомата мы пользоваться не будем, сами определим. Для этого нужно найти диск, на котором находится начало раздела. За образец мы возьмём системный диск. Закрываем наш массив, открываем все диски по отдельности и открываем системный диск.

Нас интересует начало загрузочного сектора диска. Точнее строка 0х33C08ED0BC. Копируем её, Правка -> Копировать блок -> Хекс-значения. Затем, нужно выполнить поиск этой строки на дисках. Тот на котором она есть – первый диск массива, но мы его и так знаем, а расположение её на диске даст нам искомое смещение. Выбираем Поиск -> Найти хекс-значения, направление посика – вниз.

Искомая последовательность нашлась на диске 2 в секторе 32768. Вот 32768 и есть смещение данных в нашем массиве. Теперь мы можем повторить сборку, используя найденное значение. Снова выбираем Специалист -> Восстановить RAID-массив, диски там уже указаны, как и тип массива и размер блока, мы только в поле Отступ вводим наше найденное смещение 32768 и жмём ОК.

Вот теперь другое дело! Появился раздел и его можно открыть.

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

Выбираем файл в 5,6МБ в контекстном меню выбираем Программы просмотра -> Связанная программа и любуемся результатом.

Как видно, всё получилось отлично. Теперь можно приступить к сохранению данных.

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

Понимание RAID 5

Аппаратные подсистемы RAID 5 являются на сегодняшний день наиболее популярными для файл-серверов общего назначения, Web-серверов и других прикладных задач, связанных с хранением и обработкой данных. Они не только повышают производительность и улучшают защиту данных, но позволяют снизить стоимость такого решения при сохранении или улучшении основных характеристик и свойств.

Эффективное хранение данных – важная задача для вычислительной среды предприятия, и многие организации используют RAID-массивы в серверных, сетевых и Интернет приложениях хранения и обработки данных, чтобы повысить их доступность. Технологии RAID могут позволить IT-менеджерам использовать в своих интересах ключевую производительность и операционные характеристики, которые контроллеры и подсистемы RAID 5 обеспечивают благодаря процессорам ввода/вывода, которые освобождают центральный процессор от прерываний во время дисковых операций «чтение-модификация-запись».

По реализации RAID-контроллеры бывают программными (т.н. софтовыми), программно-аппаратными и полностью аппаратными.

Программный RAID не требует специальных аппаратных средств. Все данные обрабатываются центральным процессором. В этом случае используется стандартное подключение накопителей. Неудобство такой реализации RAID – дополнительная существенная нагрузка на процессор, сокращение процессорного времени на обработку запросов приложений и операционной системы, так как центральный процессор обрабатывает все RAID-операции (вычисление XOR, размещение данных и обработка прерываний по этим задачам).

Программно-аппаратный RAID реализуется с помощью чипа ввода-вывода специальной микросхемы (ASIC), которая может выполнять операции XOR. В данном случае часть операций по обеспечению функционирования RAID-массива берет на себя эта микросхема. Все остальное – по-прежнему центральный процессор, осуществляющий операции с помощью драйверов. Программно-аппаратный RAID – по существу более производительное решение на основе центрального процессора системы.

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

Определение уровней RAID

Существует несколько основных типов (т.н. «уровней») RAID. Каждый предлагает уникальную комбинацию свойств, два основных из которых – это степень защиты данных и производительность. Для того, чтобы понять, как работает RAID 5, рассмотрим два начальных уровня RAID – «0» и «1»:

RAID 0 (страйп, stripe): этот уровень RAID обеспечивает одновременное чтение/запись блоков данных сразу на все накопители массива параллельно. Такая параллельная обработка данных позволяет считывать и записывать информацию на массив RAID 0 значительно быстрее, чем на один накопитель. RAID 0 обычно используется для задач, в которых скорость обработки данных гораздо важнее их целостности, поскольку при отказе одного из накопителей все данные массива теряются.

RAID 1 (зеркало, mirror): этот уровень RAID дублирует данные на одном и более накопителях. RAID 1, в противоположность RAID 0, используется для задач, в которых защита данных важнее производительности. В случае выхода из строя одного из накопителей, информация полностью сохранится на втором. RAID-1 обеспечивает более быстрое чтение, чем один накопитель, но запись на него происходит медленнее. Поскольку защита операционной системы является важной задачей, RAID 1 зачастую используется, чтобы зеркалировать загрузочный накопитель сервера (в том случае, когда операционная система и данные разнесены по разным накопителям или массивам).

Как работает RAID 5

RAID 5 сочетает в себе свойства RAID 0 и RAID 1. С одной стороны, операции чтения и записи происходят одновременно (параллельно) со всеми дисками массива. С другой стороны, при выходе из строя одного диска информация не теряется.

RAID 5 обеспечивает целостность данных дискового массива, используя пространство, по объему равное меньшему накопителю в массиве. Например, в массиве из пяти накопителей емкостью по 72 ГБ, доступная емкость массива будет составлять 288 ГБ. Доступная для пользователя емкость массива RAID 5 считается по формуле S * (N – 1), где S – емкость наименьшего накопителя в массиве, N – общее количество накопителей в массиве.

Количество накопителей, их емкость и суммарная емкость массива RAID 5 на сохранности данных не сказываются. Также, как единственный накопитель емкостью 72 ГБ может защитить все данные в массиве из пяти накопителей общей емкостью 288 ГБ, в массиве с 15-ю накопителями емкостью 300 ГБ, единственный накопитель на 300 ГБ может защитить весь массив на 4,2 ТБ в случае отказа одного накопителя.

RAID 5 обеспечивает эффективный способ защиты данных и достигает подобной RAID 0 производительности по чтению. В то же время, скорость записи RAID 5 может достигать больших значений, чем у одного накопителя. Таким образом, поскольку RAID 5 эффективно защищает данные и может повысить производительность дисковой подсистемы, он является наиболее популярным на сегодняшний день.

Вычисление функции XOR

Один накопитель может защитить данные любого числа других накопителей при условии, что из строя выходит только один из накопителей массива. XOR является и ассоциативной, и коммутативной операцией, что означает, что ни порядок, ни группировка операндов не влияет на результаты. XOR – также бинарная операция, и имеет только четыре возможных комбинации двух операндов. Два операнда имеют «истинный» результат XOR, когда один и только один операнд имеет значение 1.

Вычисление XOR реализуют с помощью специальных аппаратных средств, которыми могут быть чип XOR ASIC или процессор ввода/вывода с интегрированными функциональными возможностями XOR, что значительно увеличивает производительность RAID-контроллера. Каждый байт данных, сохраняемых в томе RAID 5, требует вычислений XOR. Представление о том, как работает операция XOR, является очень важным для понимания, как подсистема RAID 5 может защитить большой объем данных с помощью относительно небольшого объема одного накопителя.

На рисунке 1 каждый прямоугольник Dn представляет блок данных, называемый стрип (strip, англ. полоска). Все полоски ряда называются страйп (stripe, англ. полоса). В RAID 5, данные четности расположены в разных стрипах на каждом накопителе – это так называемое parity rotation (англ. «вращение четности»). Это сделано для увеличения производительности: поскольку четность вычисляется и записывается в каждой операции «чтение-модификация-запись», размещение ее на одном накопителе привело бы к образованию узкого места, так называемого «бутылочного горлышка». Обращения к такому накопителю производились бы во столько раз чаще по отношению к другим накопителям в системе, сколько этих накопителей в системе. Данные четности – Pn, где n – номер страйпа, всего-навсего результат операции XOR на всех других элементах данных в пределах того же страйпа. Поскольку XOR – ассоциативная и коммутативная операция, ее результат над несколькими операндами можно найти путем выполнения XOR сначала на любых двух операндах, затем выполнением XOR над результатом этой операции и следующим операндом, и так далее со всеми операндами, пока не будет достигнут результат.

Рисунок 1. Карта данных типичного RAID 5 с четырьмя накопителями

Том RAID 5 допускает отказ любого одного накопителя массива без потери данных. Как правило, когда физический накопитель выходит из строя, как, например, накопитель 3 на рисунке 2, говорят, что массив в критическом состоянии (англ. degraded). В такой ситуации недостающие данные для любого страйпа могут быть определены выполнением операции XOR на всех оставшихся элементах данных этого страйпа. Грубо говоря, каждый потерянный элемент данных представляется как общая сумма оставшихся стрип в страйпе. Обычный размер стрипа – от 32 кБ до 128 кБ. На рисунке 2 показан массив с условным объемом стрипа, где каждый элемент представляет единственный бит.

Четность для первой полосы:
P1 = D1 XOR D2 XOR D3;
P1 промежут. = D1 XOR D2 = 1;
P1 = P1 промежут. XOR D3 = 0.
Таким образом, P1 = 0.

Рисунок 2. Карта данных RAID 5 с четырьмя накопителями; массив с условным объемом стрипа.

Если хост запрашивает у контроллера данные с массива, который находится в критическом состоянии, RAID-контроллер должен сначала прочитать все доступные элементы данных на полосе, включая четность. После этого выполняется XOR над этими элементами. Результатом этой операции являются потерянные данные. Таким образом, доступ к массиву в случае выхода из строя одного из накопителей не прерывается. Однако, если из строя в это время выходит второй накопитель, то безвозвратно теряются данные всего массива.

Большинство аппаратных RAID-контроллеров восстанавливают массив автоматически, если доступен запасной (hot-spare) накопитель, возвращая массив в нормальное состояние. Кроме того, как правило, с аппаратными RAID-контроллерами поставляется программное обеспечение, которое включает средства, позволяющие уведомить администраторов системы, когда такой отказ происходит. Это позволяет администраторам устранить проблему прежде, чем следующий накопитель выйдет из строя, и массив перейдет в критическое состояние без возможности автоматического восстановления.

Выполнение операции «чтение-модификация-запись»

Операция записи в RAID 5 ответственна за вычисление и запись данных четности. Эта операция обычно упоминается как операция «чтение-модификация-запись». Представьте страйп составленным из четырех блоков данных и одного блока четности. Предположим, что хост хочет изменить маленький блок данных, которые занимают место только на одном стрипе в пределах страйпа. RAID-контроллер не может просто записать этот маленький блок данных и считать запрос выполненным. Эта операция также должна обновить данные четности, которые вычислены выполнением операции XOR на каждом стрипе в пределах страйпа. Таким образом, четность вычисляется всегда, когда изменяется один или более стрипов.

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

Рисунок 3. Шаг за шагом: операция «чтение-модификация-запись» в массиве RAID 5 с четырьмя накопителями

1. Получение новых данных от хоста: операционная система запрашивает запись данных в блок D5 на накопителе 2.
2. Чтение старых данных накопителя 2, на место которых предполагается записать новые данные. Чтение только того блока данных, который в процессе записи будет изменен, устраняет необходимость для вычисления четности читать данные со всех других накопителей в пределах страйпа. Число шагов, необходимых для операции «чтение-модификация-запись», не зависит от числа накопителей в массиве.
3. Чтение старой четности. Эта операция не зависит от числа накопителей в массиве.
4. Вычисление новой четности страйпа. Для этого нужно вычислить XOR шагов 2 и 3 минус (в данном случае, в булевой арифметике, это тот же XOR) вклад старых данных, которые будут переписаны. Это объясняется ассоциативностью и коммутативностью XOR. Таким образом, чтобы определить четность для страйпа с новым блоком D5, нужно всего лишь вычислить XOR новых данных, старых данных и старой четности.
5. Проверка целостности данных: этот процесс не описан на рисунке 3, поскольку его реализация сильно различается у разных производителей. Смысл этого процесса в отслеживании выполнения последующих шагов 6 и 7. Для целостного дискового массива подсистема должна гарантировать, что блок четности всегда соответствует данным в пределах полосы. Поскольку невозможно гарантировать, что новые данные и новый блок четности будут записаны на разные диски одновременно, подсистема RAID определяет обрабатываемый страйп как незавершенный (нецелостный), «dirty» (англ. «грязный»), и это означает, что целостность данных нарушена.
6. Запись данных, которые были получены от хоста в шаге 1. Теперь, в соответствии с таблицей размещения данных, подсистема RAID определяет, на каком физическом накопителе, и где именно на накопителе, будут записаны эти данные.
7. Запись нового блока четности: новый блок четности был вычислен в шаге 4; теперь подсистема RAID пишет его на накопитель.
8. Проверка целостности данных: как только подсистема RAID проверяет, что шаги 6 и 7 были закончены успешно, т.е. и данные и четность записаны на накопители, страйп считают целостным.

В примере на рисунке 3, предположим, что Dnew = 0, Dold = 1, и Pold = 0. Обработка шага 4 на этих данных даст нам: 0 XOR 1 XOR 0 = 1. Это четность P. После процедуры «чтение-модификация-запись», второй ряд в иллюстрации 3 будет D4 = 1, D5 = 0, P2 = 1, и D6 = 0.

Этот оптимизированный метод полностью масштабируем. Количество операций чтения, записи, и операции XOR независимы от числа накопителей в массиве. Поскольку накопитель с данными четности участвует в каждой операции записи (шаги 6 и 7), данные четности хранятся на всех накопителях в массиве, перемещаясь в страйпе относительно блоков данных. Если бы все данные четности хранились на одном физическом накопителе, то этот накопитель мог бы стать узким местом, «бутылочным горлышком», о чем уже говорилось выше.

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

Прерывание – это запрос от компонента системы на процессорное время. Подсистемы ввода/вывода производят прерывание центрального процессора, когда они заканчивают транзакцию. Ниже приведено небольшое сравнение, какие прерывания генерируют различные по типу исполнения RAID-контроллеры для простой записи на массив RAID 5:

Программный RAID: поскольку в данном случае центральный процессор системы отвечает за размещение данных на диске, он должен сгенерировать запрос на каждое чтение и запись, необходимые для операции «чтение-модификация-запись». Таким образом, центральный процессор получает четыре прерывания от подсистемы, состоящие из двух запросов на чтение, и двух на запись (шаги 2, 3, 6, и 7 в примере на рисунке 3).

Программно-аппаратный RAID: эта реализация генерирует те же самые четыре прерывания, что и программный RAID, поскольку упрощение в этой реализации связано в большинстве случаев только с вычислением операции XOR специальной микросхемой XOR ASIC.

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

источник (www.timcompany.ru)

CentOS Linux 7.2 и программный RAID с помощью mdadm

В рамках подготовки небольшой инфраструктуры под виртуализацию на базе Linux потребовалось организовать сервер под NFS-шары, которые в последствии планируется использовать под задачу резервного копирования виртуальных машин и прочие полезные цели. Для того, чтобы организовать дисковую ёмкость для NFS-сервера на базе CentOS Linux 7.2, было решено сдуть пыль с пары дисковых полок HP MSA 20, которые давно уже «вялились» на складе, и организовать их прямое подключение к SCSI U320 RAID-контроллеру HP Smart Array 6400. У этого устаревшего контроллера имеется одно не очень приятное ограничение – он не умеет создавать RAID-массивы размером больше 2TB. Чтобы данное ограничение не мешало нам в организации нужного нам объёма дискового пространства, было решено воспользоваться функционалом mdadm (multiple disks admin) для организации программного RAID. В этой заметке мы и рассмотрим пример создания программного дискового массива уровня RAID6 с помощью mdadm в CentOS Linux 7.2.

Итак, в дисковую полку MSA 20 было установлено 5 дисков по 1TB. Контроллер HP Smart Array 6400 устроен таким образом, что не транслирует напрямую в хостовую систему подключенные диски в виде физических дисковых устройств, а транслирует только созданные на нём RAID-массивы. Поэтому я создал на контроллере 5 массивов уровня RAID0, после чего в системе появились соответствующие устройства /dev/cciss/c1d[0-4]:

# lsblk

NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sr0             11:0    1  1024M  0 rom
cciss!c0d0     104:0    0  68.3G  0 disk
├─cciss!c0d0p1 104:1    0   512M  0 part  /boot
├─cciss!c0d0p2 104:2    0    50G  0 part  /
├─cciss!c0d0p3 104:3    0  15.9G  0 part  /home
├─cciss!c0d0p4 104:4    0     1K  0 part
└─cciss!c0d0p5 104:5    0     2G  0 part
cciss!c1d0     105:0    0 931.5G  0 disk
cciss!c1d1     105:16   0 931.5G  0 disk
cciss!c1d2     105:32   0 931.5G  0 disk
cciss!c1d3     105:48   0 931.5G  0 disk
cciss!c1d4     105:64   0 931.5G  0 disk

Предварительная проверка дисков

Перед тем, как собирать диски в программный RAID-массив, совсем не лишним будет убедиться в том, что с ними всё в порядке. Например можно проверить состояние дисков с помощью технологии S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology). В общем случае в CentOS Linux проверить состояние здоровья диска через S.M.A.R.T. можно с помощью утилиты smartctl из состава smartmontools:

# yum install smartmontools
# smartctl --all --health /dev/sdb

Однако в моём случае, как было замечено ранее, устройства /dev/cciss/c[x]d[x] являются не физическими дисками, а логическими устройствами транслированными в ОС контроллером Smart Array. Поэтому вместо утилиты smartctl, для быстрой проверки статуса дисков, можно воспользоваться ранее установленной утилитой hpacucli:

# hpacucli

HP Array Configuration Utility CLI 9.40.12.0
Detecting Controllers...Done.
Type "help" for a list of supported commands.
Type "exit" to close the console.

=>

Пример команд, которые выведут информацию о текущей конфигурации всех массивов и дисков для всех контроллеров Smart Array и подключённых к ним дисковых полок (вывод команд показывать не буду, так как он очень объёмный):

=> ctrl all show config 
=> ctrl all show config detail
=> ctrl all show status

Пример команды получения только информации о текущем состоянии физических дисков установленных в отдельно взятой дисковой полке (с отбором по её серийному номеру):

=> ctrl chassisserialnumber=E04KE04K physicaldrive all show status

   physicaldrive 1:1 (box 1:bay 1, 1 TB): OK
   physicaldrive 1:2 (box 1:bay 2, 1 TB): OK
   physicaldrive 1:3 (box 1:bay 3, 1 TB): OK
   physicaldrive 1:4 (box 1:bay 4, 1 TB): OK
   physicaldrive 1:5 (box 1:bay 5, 1 TB): OK

Итак, предполагаем, что с нашими дисками всё в порядке, и теперь можно перейти к процедуре создания программного RAID-массива.


Создание RAID-массива

Устанавливаем пакет mdadm:

# yum update 
# yum install mdadm -y

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

# mdadm --create --help

Следующей командой мы создаём программный массив RAID6 в устройстве /dev/md0 из 5 устройств /dev/cciss/c1d[0-4] с произвольным описанием:

# mdadm --create /dev/md0 --level=6 --raid-devices=5 /dev/cciss/c1d[0-4] --name='MSA20 Chassis E04KE04K'

mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Проверяем состояние массива командой:

# mdadm --detail /dev/md0

/dev/md0:
        Version : 1.2
  Creation Time : Fri Aug 26 15:12:10 2016
     Raid Level : raid6
     Array Size : 2929795584 (2794.07 GiB 3000.11 GB)
  Used Dev Size : 976598528 (931.36 GiB 1000.04 GB)
   Raid Devices : 5
  Total Devices : 5
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Fri Aug 26 15:16:25 2016
          State : clean, resyncing
 Active Devices : 5
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

  Resync Status : 0% complete

           Name : MSA20 Chassis E04KE04K
           UUID : ac36eb88:6d3e07be:a56429ae:509d62cb
         Events : 50

    Number   Major   Minor   RaidDevice State
       0     105        0        0      active sync   /dev/cciss/c1d0
       1     105       16        1      active sync   /dev/cciss/c1d1
       2     105       32        2      active sync   /dev/cciss/c1d2
       3     105       48        3      active sync   /dev/cciss/c1d3
       4     105       64        4      active sync   /dev/cciss/c1d4

Как видим, в данный момент наш массив находится в состоянии инициализации (см. State и Resync Status).

Получить список всех массивов в системе можно командой:

# mdadm --detail --scan

ARRAY /dev/md0 metadata=1.2 name="MSA20 Chassis E04KE04K" UUID=ac36eb88:6d3e07be:a56429ae:509d62cb

Конфигурационный файл mdadm

Для того, чтобы наши массивы автоматически запускались после перезагрузки системы генерируем конфигурационный из текущей запущенной конфигурации mdadm:

# mdadm --verbose --detail --scan > /etc/mdadm.conf

Проверим содержимое получившегося файла mdadm.conf:

# cat /etc/mdadm.conf

ARRAY /dev/md0 level=raid6 num-devices=5 metadata=1.2 name="MSA20 Chassis E04KE04K" UUID=ac36eb88:6d3e07be:a56429ae:509d62cb
devices=/dev/cciss/c1d0,/dev/cciss/c1d1,/dev/cciss/c1d2,/dev/cciss/c1d3,/dev/cciss/c1d4

Немного подправим файл, добавив параметр DEVICE, в котором перечислим все дисковые устройства, которые могут участвовать в каких-либо массивах, плюс соберём все параметры массива в одну строку. В итоге файл примет следующий вид:

DEVICE /dev/cciss/c1d[0-4]
ARRAY /dev/md0 level=raid6 num-devices=5 name="MSA20 Chassis E04KE04K" UUID=ac36eb88:6d3e07be:a56429ae:509d62cb devices=/dev/cciss/c1d0,/dev/cciss/c1d1,/dev/cciss/c1d2,/dev/cciss/c1d3,/dev/cciss/c1d4

Дополнительную информацию о формате конфигурационного файла mdadm можно получить через man mdadm.conf.

В некоторых ситуациях, как это описано, например, здесь, после перезагрузки системы, можно наблюдать такое явление, когда массивы изначально сконфигурированные как, например, /dev/md0, /dev/md1 и т.д., запускаются в системе, как /dev/md126, /dev/md127 и т.д.  Чтобы избежать этого, после правки /etc/mdadm.conf нужно обновлять загрузочный образ initramfs. Для этого сначала сделаем резервную копию текущего используемого образа, затем вызовем команду его сборки (модифицированный нами файл /etc/mdadm.conf будет добавлен в загрузочный образ при пересборке):

# cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
# /sbin/dracut --mdadmconf --add="mdraid" --force -v

Перезагрузим наш сервер и убедимся в том, что в процессе загрузки системы, по данным из ранее настроенного конфигурационного файла /etc/mdadm.conf, наш массив успешно запустился и в данный момент всё ещё находится в фазе инициализации.

# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 cciss/c1d3[3] cciss/c1d0[0] cciss/c1d2[2] cciss/c1d1[1] cciss/c1d4[4]
      2929795584 blocks super 1.2 level 6, 512k chunk, algorithm 2 [5/5] [UUUUU]
      [>....................]  resync =  1.3% (13558472/976598528) finish=399.4min speed=40178K/sec
      bitmap: 8/8 pages [32KB], 65536KB chunk

unused devices: none

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

# mdadm --assemble --scan --verbose

Файловая система для RAID-массива

Создаём файловую систему на массиве (в нашем случае это будет ext4), затем создаём каталог, в который будем монтировать созданный раздел и, наконец, монтируем этот раздел:

# mkfs.ext4 /dev/md0
# mkdir /mnt/mdadm-vv1
# mount /dev/md0 /mnt/mdadm-vv1
# df -H /dev/md0

Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        3.0T   93M  2.9T   1% /mnt/mdadm-vv1

Теперь пропишем в файл /etc/fstab информацию для автоматического монтирования раздела в точку монтирования /mnt/mdadm-vv1 в процессе загрузки системы. Для этого сначала узнаем UUID раздела:

# blkid /dev/md0

/dev/md0: UUID="ace6cab1-015a-475c-aa09-11e12c046db1" TYPE="ext4"

Потом добавим информацию о монтировании в конец файла /etc/fstab

...
#
# Mount software RAID-disk /dev/md0 on /mnt/mdadm-vv1
#
UUID=ace6cab1-015a-475c-aa09-11e12c046db1 /mnt/mdadm-vv1 ext4 discard,defaults 0 2

После этого перезагружаем сервер и убеждаемся в том, что конечный результат достигнут и раздел автоматически монтируется в точку монтирования /mnt/mdadm-vv1. Пробуем создать новый пустой файл в смонтированном в каталог разделе, проверяя тем самым возможность записи в этот каталог:

# touch /mnt/mdadm-vv1/write-test.txt
# rm /mnt/mdadm-vv1/write-test.txt

Мониторинг состояния RAID-массива

Добавляем в конец файла /etc/mdadm.conf параметры определяющие адрес, на который будут отсылаться письма в случае проблем в RAID-массивами (MAILADDR) и адрес отправителя, если нужно (MAILFROM):

...
MAILADDR [email protected]
MAILFROM [email protected]

Перезапускаем службу mdmonitor и проверяем её состояние:

# service mdmonitor restart
# service mdmonitor status

Redirecting to /bin/systemctl status  mdmonitor.service
● mdmonitor.service - Software RAID monitoring and management
   Loaded: loaded (/usr/lib/systemd/system/mdmonitor.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2016-08-26 20:13:09 MSK; 5s ago
  Process: 16057 ExecStart=/sbin/mdadm --monitor --scan -f --pid-file=/var/run/mdadm/mdadm.pid (code=exited, status=0/SUCCESS)
 Main PID: 16058 (mdadm)
   CGroup: /system.slice/mdmonitor.service
           └─16058 /sbin/mdadm --monitor --scan -f --pid-file=/var/run/mdadm/mdadm.pid

Aug 26 20:13:09 KOM-FS03.holding.com systemd[1]: Starting Software RAID monitoring and management...
Aug 26 20:13:09 KOM-FS03.holding.com systemd[1]: Started Software RAID monitoring and management.

Чтобы быть уверенным в том, что наш сервер сможет успешно отправлять почту из службы mdmonitor, нам потребуется настроить и проверить сам механизм отправки почты с сервера. О том, как настроить и проверить отправку почты с помощью предустановленной в CentOS Linux 7 службы postfix, написано в Вики-статье Как настроить отсылку уведомлений на внешний почтовый сервер с помощью postfix в CentOS.


Проверка работы RAID-массива

После того, как служба мониторинга запущена, переходим к тестированию нашего массива и заодно проверим то, как отработает механизм оповещений у службы mdmonitor.

Дожидаемся момента, когда массив будет полностью проинициализирован (не должно отображаться состояние resyncing):

# mdadm --detail /dev/md0 | grep State

State : clean
...

Попробуем сымитировать сбой диска в массиве. Помечаем один из дисков массива, как неисправный (в нашем случае в качестве «жертвы» выбран диск /dev/cciss/c1d2):

# mdadm /dev/md0 --fail /dev/cciss/c1d2

mdadm: set /dev/cciss/c1d2 faulty in /dev/md0

Посмотрим, как изменился статус нашего массива:

# mdadm --detail /dev/md0

... Update Time : Sat Aug 27 17:16:07 2016 State : clean, degraded Active Devices : 4 Working Devices : 4 Failed Devices : 1 Spare Devices : 0 ... Number Major Minor RaidDevice State 0 105 0 0 active sync /dev/cciss/c1d0 1 105 16 1 active sync /dev/cciss/c1d1 4 0 0 4 removed 3 105 48 3 active sync /dev/cciss/c1d3 4 105 64 4 active sync /dev/cciss/c1d4 2 105 32 - faulty /dev/cciss/c1d2

Параллельно мы должны получить от службы mdmonitor письмо с оповещением о проблеме примерно следующего вида:

This is an automatically generated mail message from mdadm running on KOM-FS03.holding.com

A Fail event had been detected on md device /dev/md0.
It could be related to component device /dev/cciss/c1d2.

Faithfully yours, etc.

P.S. The /proc/mdstat file currently contains the following:

Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 cciss/c1d3[3] cciss/c1d1[1] cciss/c1d4[4] cciss/c1d0[0] cciss/c1d2[2](F)
2929795584 blocks super 1.2 level 6, 512k chunk, algorithm 2 [5/4] [UU_UU]
bitmap: 2/8 pages [8KB], 65536KB chunk
unused devices: <none>

Как видим, в письме достаточно информации, чтобы идентифицировать проблему.

Удаляем «сбойный» диск из массива:

# mdadm /dev/md0 --remove /dev/cciss/c1d2

mdadm: hot removed /dev/cciss/c1d2 from /dev/md0

На этом этапе, в случае реального выхода из строя диска, подразумевается физическая замена неисправного диска на исправный.

Возвращаем диск в массив:

# mdadm /dev/md0 --add /dev/cciss/c1d2

mdadm: re-added /dev/cciss/c1d2

После добавления диска, автоматически начнётся перестройка массива:

# mdadm --detail /dev/md0

...
    Update Time : Sat Aug 27 17:34:21 2016
          State : active, degraded, recovering
 Active Devices : 4
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 1

...

 Rebuild Status : 92% complete

...

    Number   Major   Minor   RaidDevice State
       0     105        0        0      active sync   /dev/cciss/c1d0
       1     105       16        1      active sync   /dev/cciss/c1d1
       2     105       32        2      spare rebuilding   /dev/cciss/c1d2
       3     105       48        3      active sync   /dev/cciss/c1d3
       4     105       64        4      active sync   /dev/cciss/c1d4

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


Форсированное разрушение массива

Пока я экспериментировал с mdadm, столкнулся с одной проблемой – после создания сразу двух массивов (инициализация массивов ещё не была завершена) и неправильной настройки файла mdadm.conf, я получил систему, которая падала в kernel panic в процессе загрузки ОС, то есть фактически, я получил неработоспособную систему. Исправить ситуацию удалось через режим восстановления (загружаемся в установочного диска CentOS и в процессе загрузки жмём ESC, затем вводим «rescue linux dd«, чтобы перейти в режим восстановления с возможностью предварительной загрузки драйвера контроллера дисков) и форсированное разрушение массива по методу, подсказанному здесь:

# mdadm --stop /dev/md[x] 
# mdadm --zero-superblock /dev/sd[x] (do this for all your raid disks)

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

# dd if=/dev/zero of=/dev/sd[x] bs=512 count=1

После удаления данных о массиве не забываем вычистить о нём информацию в /etc/fstab и /etc/mdadm.conf.


Дополнительные источники информации:

Поделиться ссылкой на эту запись:

Похожее

Загрузки для продуктов RAID

Драйвер Windows * для модуля хранения Intel® RMSP3JD160J и адаптера хранения Intel® RSP3QD160J, RSP3GD016J

Предоставляет драйвер Windows * для контроллеров хранения данных Trimode Intel®, поддерживающих только JBOD (сквозной).

Драйвер Windows 10 *
Windows Server 2019 *
Windows Server 2016 *
2.61.06.02
Последний
20.11.2020
Пакет микропрограмм для RAID-модуля Intel® RMSP3CD080F, RMSP3HD080E и RAID-адаптера Intel® RSP3TD160F, RSP3MD088F, RSP3DD080F, RSP3WD080E

Предоставляет микропрограммное обеспечение для RAID-контроллеров Intel® Trimode (NVMe + SAS + SATA).

Прошивка Независимая ОС 51.13.0-3432
Последний
09.11.2020
Пакет микропрограмм для RAID-модуля Intel® RMSP3AD160F

Предоставляет пакет микропрограмм для полнофункционального Trimode (NVMe + SAS + SATA) RAID-модуля Intel® RMSP3AD160F с поддержкой RAID 0, 1, 5, 6, 10, 50, 60.

Прошивка Независимая ОС 51.13.0-3432
Последний
09.11.2020
Веб-консоль Intel® RAID 3 (RWC3) для Windows *

Устанавливает веб-приложение для мониторинга и управления отдельными продуктами Intel RAID для Windows *.

Программное обеспечение Windows 10 *
Windows Server 2019 *
Windows Server 2016 *
7.014.010.000
Последний
27.08.2020
Веб-консоль Intel® RAID 3 (RWC3) для Linux *

Устанавливает веб-приложение для мониторинга и управления отдельными продуктами Intel RAID для Linux *.

Программное обеспечение Red Hat Enterprise Linux 8.2 *
Red Hat Enterprise Linux 8.1 *
Red Hat Enterprise Linux 8.0 *
9 еще
007.014.010.000
Последний
27.08.2020
Пакет микропрограмм для RAID-модуля Intel® RMS3CC080, RMS3CC040 и RAID-адаптера Intel® RS3DC080, RS3DC040, RS3SC008, RS3MC044

Предоставляет микропрограммное обеспечение для полнофункциональных RAID-контроллеров Intel® 12 Гбит / с с поддержкой RAID 0, 1, 5, 6, 10, 50, 60.

Прошивка Независимая ОС 24.21.0-0126
Последний
15.07.2020
Пакет прошивки для интегрированного RAID-модуля Intel® RMS3AC160

Предоставляет микропрограммное обеспечение для полнофункциональных интегрированных RAID-модулей Intel® RMS3AC160 12 Гбит / с.

Прошивка Независимая ОС 24.22.0-0065
Последний
15.07.2020
Пакет микропрограмм для модуля хранения Intel® RMSP3JD160J и адаптера хранения Intel® RSP3QD160J, RSP3GD016J

Предоставляет микропрограммное обеспечение для контроллера хранения данных Trimode Intel®, поддерживающего только JBOD (сквозной).

Прошивка Независимая ОС 12.00.00.01
Последний
28.05.2020
Драйвер Windows * для RAID-модулей Intel RMS3VC160 и Intel RAID Controller RS3UC080J, RS3GC008

Предоставляет драйвер Windows * (ИТ) для RAID-контроллеров Intel® 12 Гбит / с, поддерживающих только JBOD (сквозной).

Драйвер Windows 10 *
Windows 8.1 *
Windows 8 *
4 еще
16.0-2.51.25.02
Последний
01.05.2020
Автономная утилита StorCLI

Предоставляет программное обеспечение для управления из командной строки для некоторых продуктов Intel® RAID.

Программное обеспечение Независимая ОС 7.1211.00
Последний
27.04.2020
Драйвер Linux * для RAID-модуля Intel® RMSP3AD160F, RMSP3CD080F, RMSP3HD080E и RAID-адаптера Intel® RSP3TD160F, RSP3MD088F, RSP3DD080F, RSP3WD080E

Предоставляет драйвер Linux * для RAID-контроллеров Intel® Trimode (NVMe + SAS + SATA).

Драйвер Red Hat Linux *
SUSE Linux *
Ubuntu *
CentOS *
07.712.02.00
Последний
13.04.2020
Драйвер Linux * для интегрированного RAID-модуля Intel® RMS25PB080 (N), RMS25PB040, RMT3PB080, RMS25CB080 (N), RMS25CB040, RMT3CB080 и контроллера RS25AB080, RS25SB008, RS25DB080, RS25NB008, RT3WB080

Предоставляет драйвер Linux * для полнофункциональных (MR) RAID-контроллеров Intel 6 Гбит / с.

Драйвер Red Hat Linux *
SUSE Linux *
Ubuntu *
CentOS *
07.712.02.00
Последний
13.04.2020
Драйвер Linux * для RAID-контроллера кэш-памяти Intel® RAID RCS25ZB040, RCS25ZB040LX

Предоставляет драйвер Linux * для RAID-контроллера кэш-памяти Intel® RAID.

Драйвер Red Hat Linux *
SUSE Linux *
Ubuntu *
CentOS *
07.712.02.00
Последний
13.04.2020
Драйвер Linux * для интегрированного RAID-модуля Intel® RMS3AC160, RMS3CC080, RMS3CC040, RMS3HC080 и RAID-контроллера Intel® RS3DC080, RS3DC040, RS3SC008, RS3MC044, RS3WC080

Предоставляет драйвер Linux * для полнофункциональных (MR) и начального уровня (iMR) RAID-контроллеров Intel® 12 Гбит / с.

Драйвер Red Hat Linux *
SUSE Linux *
Ubuntu *
CentOS *
07.712.02.00
Последний
13.04.2020
Драйвер Linux * для модуля хранения Intel® RMSP3JD160J и адаптера хранения Intel® RSP3QD160J, RSP3GD016J

Предоставляет драйвер Linux * для контроллеров хранилища Intel Trimode (IT), поддерживающих JBOD (сквозная передача).

Драйвер Red Hat Linux *
SUSE Linux *
Ubuntu 18.04 LTS *
Ubuntu 16.04 *
тел. 9.2-28.00.04.00
Последний
22.10.2019
Linux * Драйвер для RAID-модуля Intel Intel RMS3JC080 и RAID-контроллера RS3UC080, RS3FC044

Предоставляет драйвер Linux * для RAID-контроллеров Intel начального уровня 12 Гбит / с с поддержкой RAID 0, 1, 10, 1E.

Драйвер Red Hat Linux *
SUSE Linux *
Ubuntu *
тел. 9.2-28.00.04.00
Последний
22.10.2019
Драйвер Linux * для RAID-модулей Intel® RMS3VC160 и RAID-контроллера Intel® RS3UC080J, RS3GC008

Предоставляет драйвер Linux * для RAID-контроллеров Intel 12 Гбит / с, поддерживающих только JBOD (сквозной).

Драйвер Red Hat Linux *
SUSE Linux *
Ubuntu *
ph9.2-28.00.04.00
Последний
22.10.2019
Драйвер Windows * для встроенного RAID-модуля Intel RMS3AC160, RMS3CC080, RMS3CC040, RMS3HC080 и Intel RAID Controller RS3DC080, RS3DC040, RS3SC008, RS3MC044, RS3WC080

Предоставляет драйвер Windows для полнофункциональных (MR) и начального уровня (iMR) RAID-контроллеров Intel 12 Гбит / с.

Драйвер Windows 10 *
Windows 8.1 *
Windows 8 *
4 еще
6.714.18.00
Последний
13.09.2019
Драйвер Windows * для RAID-модуля Intel® RMSP3AD160F, RMSP3CD080F, RMSP3HD080E и RAID-адаптера Intel® RSP3TD160F, RSP3MD088F, RSP3DD080F, RSP3WD080E

Предоставляет драйвер Windows * для RAID-контроллеров Intel Trimode (NVMe + SAS + SATA).

Драйвер Windows 10 *
Windows 8.1 *
Windows 8 *
4 еще
7.708.12.00
Последний
13.09.2019
Драйвер Windows * для интегрированного RAID-модуля Intel® RMS25PB080 (N), RMS25PB040, RMT3PB080, RMS25CB080 (N), RMS25CB040, RMT3CB080 и контроллера RS25AB080, RS25SB008, RS25DB080, RS25NB008, RT3WB080

Предоставляет драйвер Windows * для полнофункциональных (MR) RAID-контроллеров Intel 6 Гбит / с.

Драйвер Windows 10 *
Windows 8.1 *
Windows 8 *
4 еще
6.714.18.00
Последний
13.09.2019

Как настроить программный RAID 0 для Windows и Linux

Увеличьте скорость, объединив два или более дисков в RAID 0

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

В нашем тестовом стенде мы использовали пару Samsung 840EVO с последней прошивкой.

RAID имеет несколько «уровней», на которых диски используются по-разному. Уровень 0 (RAID 0) распределяет или «чередует» данные между двумя или более дисками. Проблема с чередованием данных по дискам заключается в том, что, когда что-то идет не так, они действительно идут не так: если один жесткий диск в массиве RAID 0 выходит из строя и не может быть восстановлен, весь массив RAID теряется.

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

Существует три способа реализации RAID: аппаратный, программный и FakeRAID. Аппаратный RAID быстрее, но он также дороже из-за необходимости в специализированном оборудовании.Программное обеспечение и FakeRAID используют процессор вместо выделенного чипа RAID.

Создание программного RAID-массива в программном обеспечении операционной системы — это самый простой способ. Windows 8 поставляется со всем необходимым для использования программного RAID, а пакет Linux «mdadm» указан в большинстве стандартных репозиториев.

Проблема с программным RAID заключается в том, что он существует только в ОС, в которой он был создан. Linux не может видеть массив RAID, созданный в Windows, и наоборот. Если вы используете двойную загрузку как Linux, так и Windows и вам нужен доступ к массиву из обеих операционных систем, используйте FakeRAID.В противном случае придерживайтесь программного обеспечения.

Подготовьте оборудование

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

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

Прежде чем диск можно будет использовать в массиве RAID, на нем не должно быть файловых систем и разделов. Если вы используете старые диски, сначала убедитесь, что вы получили от них все ценное. Вы можете удалить любые разделы с помощью «Управление дисками» в Windows или «gparted» в Linux. Если вы используете FakeRAID, утилита RAID материнской платы должна предупредить вас, прежде чем стирать таблицы разделов и файловые системы на них.

В вашей операционной системе вам потребуются повышенные разрешения для создания RAID-массива.Для Windows вам нужно быть администратором. В Linux вам понадобится либо пароль root, либо доступ sudo.

Если вы хотите использовать FakeRAID, убедитесь, что ваша материнская плата поддерживает его. Однако будьте осторожны: установка ОС поверх массива RAID 0 может быть очень рискованной, если ваши системные данные критически важны.

Windows: места для хранения

Создание программного массива RAID 0 в Windows действительно просто и относительно безболезненно. Дело в том, что Microsoft не называет это RAID в Windows 8, вместо этого выбирая «пространства хранения» и «пулы хранения».

Нажмите Win + S, найдите «места для хранения» и откройте утилиту. Затем нажмите . Создать новый пул и место для хранения . Вам будет предложено предоставить доступ администратора. Нажмите Да , чтобы продолжить.

Встроенное программное обеспечение RAID в Windows 8 носит название «Storage Spaces».

Вы увидите окно, показывающее все неформатированные диски, которые можно использовать. Выберите все диски в массиве и нажмите Create pool .

Чтобы создать пул хранения в Windows 8, диски необходимо неформатировать.

Затем дайте пулу имя и букву диска. Имя появится как метка диска. Выберите NTFS в качестве файловой системы. Для типа устойчивости выберите Простой (без устойчивости) . Это эквивалент RAID0. Когда вы будете готовы, нажмите Создать дисковое пространство , чтобы создать массив.

Хотя для простого хранилища технически требуется только один жесткий диск, вам нужно как минимум два, чтобы он стал настоящей конфигурацией RAID.

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

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

Смотрите? Сказал, что это было легко. Далее мы рассмотрим создание массивов RAID 0 в Linux и FakeRAID.

Обзор

— Linux Raid Wiki

Эта область вики основана на «Практическом руководстве по программному RAID» Якоба Остергаарда jakob @ unthought.net и Эмилио Буэсо [email protected]

Этот HOWTO описывает, как использовать программный RAID в Linux. Он обращается к конкретной версии уровня программного RAID, а именно к
0.90 Уровень RAID в настоящее время поддерживается Нилом Брауном. Это уровень RAID, который является стандартом в Linux-2.6 и Linux-2.4, и эта версия также
используется ядрами Linux-2.2, поставляемыми некоторыми поставщиками. Поддержка RAID 0.90 доступна в виде исправлений для Linux-2.0 и Linux-2.2.
многие считают гораздо более стабильным, чем более старый RAID, уже поддерживаемый этими ядрами.

Эта Wiki посвящена RAID «нового стиля», присутствующему только в серии ядра 2.6. Он не описывает функциональность RAID «старого стиля», присутствующую в ядрах 2.0 и 2.2, хотя большая часть функциональности доступна в более поздних ядрах серии 2.4.

Заявление об ограничении ответственности

Обязательный отказ от ответственности:

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

Что такое RAID?

В 1987 году Дэвид А. Паттерсон, Гарт Гибсон и Дэвид Х. Кац из Калифорнийского университета в Беркли опубликовали статью под названием A Case for Redundant Arrays of Cheap Disks (RAID) .[1] В этой статье описываются различные типы дисковых массивов, обозначаемые аббревиатурой RAID. Основная идея RAID состояла в том, чтобы объединить несколько небольших независимых дисков в массив дисководов, что обеспечило бы производительность, превышающую производительность одного большого дорогостоящего диска (SLED). Кроме того, этот массив дисков представляется компьютеру как единое логическое запоминающее устройство или диск.

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

В документе Беркли были определены пять типов архитектур массивов, от RAID-1 до RAID-5, каждый из которых обеспечивает отказоустойчивость диска и каждый предлагает различные компромиссы в функциях и производительности. В дополнение к этим пяти архитектурам массивов с резервированием стало популярным называть массив дисков без избыточности массивом RAID-0.

Некоторые из исходных уровней RAID, а именно уровни 2 и 3, теперь используются только в очень специализированных системах и, фактически, даже не поддерживаются драйверами Linux Software RAID. Появился другой уровень, «линейный», и особенно уровень RAID 0 часто комбинируется с уровнем RAID 1 (RAID-1 + 0 или «RAID-10»).

Условия

В этом HOWTO слово «RAID» означает «Программный RAID Linux». Этот HOWTO не рассматривает какие-либо аспекты аппаратного RAID. Кроме того, он не обрабатывает какие-либо аспекты программного RAID в других ядрах операционных систем.

При описании настроек RAID полезно указывать количество дисков и их размеры. Буква N всегда используется для обозначения количества активных дисков в массиве (не считая запасных дисков). Буква S — это размер самого маленького диска в массиве, если не указано иное. Буква P используется как производительность одного диска в массиве в МБ / с. При использовании мы предполагаем, что диски одинаково быстры, что не всегда может быть верным в реальных сценариях.

Обратите внимание, что слова «устройство» и «диск» должны означать примерно одно и то же.Обычно устройства, которые используются для построения RAID-устройства, представляют собой разделы на дисках, не обязательно целые диски. Но объединение нескольких разделов на одном диске обычно не имеет смысла, поэтому слова «устройства» и «диски» означают просто «разделы на разных дисках».

Уровни RAID

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

Текущие драйверы RAID в Linux поддерживают следующие уровни:

Линейный режим

  • Два или более дисков объединены в одно физическое устройство. Диски «добавляются» друг к другу, поэтому при линейной записи на устройство RAID сначала заполняется диск 0, затем диск 1 и так далее. Диски не обязательно должны быть одинакового размера. На самом деле размер здесь вообще не имеет значения. 🙂
  • На этом уровне нет избыточности.Если один из дисков выйдет из строя, вы, скорее всего, потеряете все свои данные. Однако вам может повезти восстановить некоторые данные, поскольку в файловой системе будет просто отсутствовать один большой последовательный фрагмент данных.
  • Производительность чтения и записи не увеличивается при однократном чтении / записи. Но если устройство используют несколько пользователей, вам может повезти, что один пользователь эффективно использует первый диск, а другой пользователь обращается к файлам, которые случайно находятся на втором диске. Если это произойдет, вы увидите прирост производительности.

RAID-0

  • Также называется режимом «полосы». Устройства должны (но не обязательно) иметь одинаковый размер. Операции с массивом будут разделены на устройства; например, большая запись может быть разделена на 64 КБ на диск 0, 64 КБ на диск 1, 64 КБ на диск 2, затем снова 64 КБ на диск 0 и так далее. Запись на каждый диск будет выполняться одновременно. Если одно устройство намного больше, чем другие устройства, это дополнительное пространство все еще используется в устройстве RAID, но вы будете получать доступ только к этому большему диску во время записи в верхнем конце вашего устройства RAID.Это, конечно, вредит производительности.
  • Как и в линейном режиме, на этом уровне тоже нет избыточности. В отличие от линейного режима, вы не сможете спасти какие-либо данные, если диск выйдет из строя. Если вы удалите диск из набора RAID-0, устройство RAID не просто пропустит один последовательный блок данных, он будет заполнен небольшими дырами по всему устройству. e2fsck или другие инструменты восстановления файловой системы, вероятно, не смогут восстановить многое с такого устройства.
  • Производительность чтения и записи увеличится, поскольку операции чтения и записи выполняются на устройствах параллельно.Обычно это основная причина использования RAID-0. Если шины, идущие к дискам, достаточно быстры, вы можете получить очень близко к N * P МБ / с.

RAID-1

  • Это первый режим с резервированием. RAID-1 можно использовать на двух или более дисках с нулевым или более запасными дисками. Этот режим поддерживает точное отражение информации с одного диска на другом диске (ах). Конечно, диски должны быть одинакового размера. Если один диск больше другого, ваше устройство RAID будет размером с наименьший диск.
  • Если удалено до N-1 дисков (или произошел сбой), все данные останутся нетронутыми. Если есть запасные диски, и если система (например, драйверы SCSI или набор микросхем IDE и т. Д.) Пережила сбой, восстановление зеркала немедленно начнется на одном из резервных дисков после обнаружения сбоя диска.
  • Скорость записи часто ниже, чем на одном устройстве, поскольку идентичные копии записанных данных должны быть отправлены на каждый диск в массиве. С большими массивами RAID-1 это может стать реальной проблемой, так как вы можете перегружать шину PCI этими дополнительными копиями.Фактически это одно из немногих мест, где решения с аппаратным RAID могут иметь преимущество перед программными решениями — если вы используете аппаратную карту RAID, дополнительные копии данных для записи не должны будут проходить через шину PCI, поскольку это RAID-контроллер, который создаст дополнительную копию. Производительность чтения хорошая, особенно если у вас несколько читателей или рабочие нагрузки с интенсивным поиском. Код RAID использует довольно хороший алгоритм балансировки чтения, который просто позволяет диску, головки которого находятся ближе всего к желаемой позиции диска, выполнять операцию чтения.Поскольку на современных дисках операции поиска относительно дороги (время поиска 8 мс соответствует чтению 640 КБ при 80 МБ / с), выбор диска с самым коротким временем поиска действительно дает заметное улучшение производительности.

RAID-4

  • Этот уровень RAID используется не очень часто. Его можно использовать на трех и более дисках. Вместо того, чтобы полностью зеркалировать информацию, он хранит информацию о четности на одном диске и записывает данные на другие диски в виде RAID-0.Поскольку один диск зарезервирован для информации о четности, размер массива будет (N-1) * S, где S — размер наименьшего диска в массиве. Как и в RAID-1, диски должны быть одинакового размера, либо вам просто нужно принять, что S в формуле (N-1) * S выше будет размером наименьшего диска в массиве.
  • Если один диск выходит из строя, информация о четности может использоваться для восстановления всех данных. Если два диска выходят из строя, все данные теряются.
  • Причина, по которой этот уровень не используется чаще, заключается в том, что информация о четности хранится на одном диске.Эта информация должна обновляться каждый раз при записи на один из других дисков. Таким образом, диск с четностью станет узким местом, если он не будет намного быстрее других дисков. Однако, если у вас просто много медленных дисков и один очень быстрый, этот уровень RAID может оказаться очень полезным.

RAID-5

  • Это, пожалуй, наиболее полезный режим RAID, когда нужно объединить большее количество физических дисков и при этом сохранить некоторую избыточность. RAID-5 можно (с пользой) использовать на трех или более дисках с нулевым или более запасными дисками.В результате размер устройства RAID-5 будет (N-1) * S, как и у RAID-4. Большая разница между RAID-5 и -4 заключается в том, что информация о четности распределяется равномерно между участвующими дисками, что позволяет избежать проблемы узких мест в RAID-4, а также обеспечивает большую производительность диска при чтении, поскольку все диски будут использоваться.
  • Если один из дисков выйдет из строя, все данные останутся нетронутыми благодаря информации о четности. При наличии запасных дисков восстановление начнется сразу после выхода устройства из строя.Если два диска выходят из строя одновременно или до восстановления рейда, все данные теряются. RAID-5 может выдержать отказ одного диска, но не двух или более.
  • Производительность чтения и записи обычно увеличивается, но сложно предсказать, насколько сильно. Чтение почти аналогично чтению RAID-0, запись может быть либо довольно дорогой (требуется чтение перед записью, чтобы иметь возможность вычислить правильную информацию о четности, например, в операциях с базой данных), либо аналогична RAID-1 записи (когда выполняются более крупные последовательные записи, и четность может быть вычислена непосредственно из других записываемых блоков).Эффективность записи сильно зависит от объема памяти в машине и схемы использования массива. Сильно разрозненные записи обойдутся дороже.

RAID-6

  • Это расширение RAID-5 для повышения устойчивости. RAID-6 может (с пользой) использоваться на четырех или более дисках с нулевым или более запасными дисками. В результате размер устройства RAID-6 будет (N-2) * S. Большая разница между RAID-5 и -6 состоит в том, что есть два разных блока информации о четности, которые равномерно распределяются между участвующими дисками.
  • Так как есть два блока четности; если один или два диска выйдут из строя, все данные останутся нетронутыми. Если есть запасные диски, реконструкция начнется сразу после сбоя (-ов) устройства.
  • Скорость чтения почти такая же, как у RAID-5, но скорость записи хуже.

RAID-10

  • RAID-10 — это комбинация RAID-1 и RAID-0 «внутри ядра», которая более эффективна, чем простое распределение уровней RAID.
  • RAID-10 имеет схему («дальняя»), которая может обеспечивать последовательную пропускную способность чтения, масштабируемую по количеству дисков, а не по количеству пар RAID-1.Вы можете получить около 95% производительности RAID-0 с таким же количеством дисков.
  • RAID-10 позволяет использовать запасные диски для всех пар raid1.

НЕИСПРАВНОСТЬ

  • Это специальный уровень RAID для отладки. Он допускает только одно устройство и имитирует сбои чтения / записи низкого уровня.
  • Использование FAULTY устройства на другом уровне RAID позволяет администраторам практиковаться в работе с такими вещами, как сбои секторов, а не с отказами всего диска

Требования

Этот HOWTO предполагает, что вы используете Linux 2.6 или новее и последний набор инструментов.

Если вы используете последний дистрибутив GNU / Linux, основанный на ядре 2.4 или новее, в вашей системе, скорее всего, уже есть соответствующая версия mdadm для вашего ядра.

Примечание. Согласно его домашней странице http://people.redhat.com/mingo/raidtools/, raidtools не обновлялся с января 2003 года и заменен на mdadm устаревшим.

Может быть много веских причин для использования RAID. Некоторые из них: способность
объединить несколько физических дисков в одно более крупное виртуальное устройство ,
улучшения производительности и избыточности.

Однако очень важно понимать, что RAID не является общим
замена хороших резервных копий. Некоторые уровни RAID сделают ваши системы
невосприимчив к потере данных из-за отказа одного или двух дисков, но RAID не позволит
для восстановления после случайного rm -rf / . RAID тоже не поможет
вы сохраните свои данные, если сервер, на котором находится сам RAID, будет потерян
так или иначе (кража, наводнение, землетрясение, марсианское вторжение
так далее.)

RAID предназначен для поддержки систем в рабочем состоянии в случае
частых проблем с оборудованием (сбой диска).Это не само по себе
полное решение для защиты данных. Это очень важно понимать.

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

Поддержка устройств и файловой системы

Linux RAID может работать на большинстве блочных устройств. Неважно,
вы используете устройства SATA, USB, IDE или SCSI или их сочетание. Некоторые люди также использовали
Сетевое блочное устройство (NBD) успешно.

Поскольку программное обеспечение Linux RAID само по себе является блочным устройством, указанное выше
подразумевает, что вы действительно можете создать RAID из других устройств RAID.Это, в свою очередь, позволяет поддерживать RAID-1 + 0 (RAID-0 из нескольких
Устройства RAID-1), просто используя функции RAID-0 и RAID-1.
все вместе. Другие, более экзотические конфигурации, такие как RAID-5 вместо RAID-5.
Также поддерживаются «матричные» конфигурации.

(Не путайте RAID 1 + 0 с RAID-10. Хотя номинально идентичный, 1 + 0 — это рейд-массив, построенный на других RAID-массивах, тогда как RAID-10 на самом деле является отдельным уровнем рейда linux. К сожалению, обычно используются термины используются взаимозаменяемо.Если вы видите знак «+», это значит, что это рейдовый массив из рейдовых массивов — другой общий — 5 + 0.)

Уровень RAID не имеет абсолютно ничего общего с уровнем файловой системы.
Вы можете разместить любую файловую систему на устройстве RAID, как и любой другой блок.
устройство.

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

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

См. Введение # The_RAID_levels для упоминания характеристик производительности
каждый уровень.

См. Раздел «Производительность» для сравнения различных уровней RAID.

Замена на RAID

Замена зеркального RAID-массива может помочь вам выжить при отказе диска. Если диск выходит из строя, данные для процессов подкачки будут недоступны в среде без зеркалирования. Если вы работаете в зеркальной среде, система может продолжать работать, даже если диск не работает.Вы даже можете иметь более одной копии данных с массивом типа raid10, что предотвратит отказ нескольких дисков.

Нет особых причин использовать RAID0 для повышения производительности подкачки. Ядро
сам может чередовать свопинг на нескольких устройствах, если просто дать им
такой же приоритет в файле / etc / fstab.

Хороший / etc / fstab может выглядеть так:

 / dev / sda2 swap swap по умолчанию, pri = 1 0 0
 / dev / sdb2 swap swap по умолчанию, pri = 1 0 0
 / dev / sdc2 swap swap по умолчанию, pri = 1 0 0
 / dev / sdd2 swap swap по умолчанию, pri = 1 0 0
 / dev / sde2 swap swap по умолчанию, pri = 1 0 0
 / dev / sdf2 swap swap по умолчанию, pri = 1 0 0
 / dev / sdg2 swap swap по умолчанию, pri = 1 0 0
 

Эта установка позволяет машине переключаться параллельно на семи жестких дисках.Нет
необходимость в RAID0, так как это уже давно входит в состав ядра.

Другой причиной использования RAID для подкачки является высокая доступность. Если вы установите
настроить систему для загрузки, например. устройство RAID-1, система должна иметь
чтобы пережить сбой диска. Если система без зеркальной подкачки заменяла неисправное устройство, вы, скорее всего, выйдете из строя. Замена на
зеркальный раздел RAID, такой как RAID-1, raid10, n2 или raid10, f2, решит эту проблему.

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

Вы можете настроить RAID в файле подкачки в файловой системе на вашем RAID
устройство, или вы можете настроить устройство RAID как раздел подкачки, как вы
усмотрению. Как правило, устройство RAID — это просто блочное устройство.

Почему мдадм?

mdadm теперь является стандартным программным инструментом управления RAID для Linux.

Инструмент mdadm был написан Нилом Брауном, инженером-программистом в
Университет Нового Южного Уэльса и разработчик ядра.
См. Http://www.kernel.org/pub/linux/utils/raid/mdadm/ANNOUNCE для получения последней версии.
Он был основан на наборе raidtools и устарел.

  • mdadm может диагностировать, отслеживать и собирать подробную информацию о ваших массивах
  • mdadm — это единая централизованная программа, обеспечивающая общий синтаксис для каждой команды управления RAID
  • mdadm может выполнять почти все свои функции без файла конфигурации и не использует его по умолчанию
  • Также, если необходим файл конфигурации, mdadm поможет с управлением его содержимым.

Программные RAID-устройства представляют собой так называемые «блочные» устройства, как и обычные
диски или разделы диска.Устройство RAID «построено» из ряда
другие блочные устройства — например, RAID-1 может быть построен из двух
обычные диски, либо из двух разделов диска (на отдельных дисках —
см. подробности в описании RAID-1).

(Не рекомендуется создавать RAID-массив непосредственно на диске. Это
не проблема с RAID, но некоторые дисковые утилиты предполагают, что диск
без GPT или MBR пусто и с радостью топтется по нему.)

Других особых требований к устройствам, с которых вы
создавайте свои устройства RAID — это дает вам большую свободу в проектировании
ваше решение RAID.Например, вы можете построить RAID из комбинации
SATA, сетевые и другие устройства RAID (это полезно для RAID-0 + 1, где вы просто создаете два
Устройства RAID-1 из обычных дисков и, наконец, построение RAID-0
устройство из этих двух устройств RAID-1). Не рекомендуется использовать USB
устройства, однако, они переходят в спящий режим и плохо взаимодействуют с кодом рейда.

Поэтому в следующем тексте мы будем использовать слово «устройство» как
означает «диск», «раздел» или даже «устройство RAID». «Устройство» в
следующий текст просто относится к «блочному устройству Linux».Возможно
что угодно, от диска SATA до сетевого блочного устройства. Мы обычно
называют эти «устройства» просто «дисками», потому что именно они
будет в общем случае.

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

Далее мы описываем два особых типа устройств; а именно
«запасные диски» и «неисправные диски».

Стоит отметить наличие
НЕПРАВИЛЬНЫЙ уровень RAID — не запутайтесь — это
специальный уровень отладки RAID, который использует обычное устройство и моделирует неисправности.

Запасные диски

Запасные диски (часто называемые горячими резервами) — это диски, которые не участвуют в наборе RAID, пока
активных дисков выходят из строя. Когда обнаруживается сбой устройства, это
устройство помечается как «неисправное» и сразу начинается реконструкция.
первый доступный запасной диск.

Таким образом, запасные диски добавляют дополнительную безопасность особенно системам RAID-5.
к которым, возможно, трудно добраться (физически).Можно позволить системе
работать какое-то время, с неисправным устройством, так как запасной диск занимает
место неисправного устройства и вся избыточность восстанавливается.

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

Вы не можете быть уверены, что ваша система продолжит работать после диска
крах хотя. Уровень RAID должен нормально обрабатывать отказы устройств,
но драйверы SCSI могут быть повреждены при обработке ошибок или чипсете IDE
может быть заблокирован, или может произойти многое другое.

Кроме того, как только начинается реконструкция горячего резервирования, уровень RAID будет
начать чтение со всех остальных дисков, чтобы воссоздать избыточный
Информация. Если на нескольких дисках со временем образовались сбойные блоки,
сама реконструкция может вызвать сбой в одном из
«хорошие» диски. Это может привести к полному отказу RAID и является основным
причина использования RAID-6 вместо RAID-5 и горячего резерва.
Действительно, использование неправильного типа диска обычно приводит к полному
провал рейда.(Обычно из этой ситуации можно выйти,
Однако.)

Если вы часто выполняете резервное копирование всей файловой системы на массиве RAID,
или регулярно чистите массив, затем
крайне маловероятно, что вы когда-либо попадете в такую ​​ситуацию — это
еще одна очень веская причина для частого резервного копирования. Помните, RAID
не заменяет резервные копии.

Неисправные диски

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

Неисправные диски по-прежнему появляются и ведут себя как члены массива. Рейд
слой просто избегает их чтения / записи.

Если устройство необходимо удалить из массива по какой-либо причине (например,
замена из-за отчетов SMART), то перед этим он должен быть помечен как неисправный
можно удалить.

В разделе «Обнаружение, запросы и тестирование» содержится дополнительная информация.

В этом разделе будут упомянуты некоторые проблемы с оборудованием, возникающие при
работает программный RAID.Ссылки на IDE и SCSI удалены, все
последние диски — SATA.

Если вы стремитесь к высокой производительности, вам следует использовать SSD (или
гибридные диски), и убедитесь, что вы соответствуете производительности дисков
к производительности автобуса. Многие материнские платы поставляются с 6 разъемами SATA.
так что настроить RAID легко и доступно.

См. Также раздел об узких местах.

Выбор привода

Накопители для настольных ПК и корпоративных клиентов

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

TLER и SCT / ERC

TLER (Time Limited Error Recovery) — это продукт WD, который означает, что диски вернутся в исходное состояние в течение 7 секунд.
Представив его, WD впоследствии отключил его на большинстве настольных дисков.
хотя он включен по умолчанию на корпоративных дисках.

SCT / ERC — это общая спецификация, реализованная TLER.

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

smartctl -x

Эта команда сообщит вам, на что способен привод. Если возможно, это
Было бы разумно увидеть его результат на диске (ах), который вы собираетесь купить.
Ниже приведены результаты работы накопителя Toshiba моего ноутбука. Обратите особое внимание на то, где говорится
Поддерживается SCT Error Recovery Control.

краппит: / главная / энтони # smartctl -x / dev / sda
smartctl 6.2 07.11.2013 r3856 [x86_64-linux-4.1.27-27-default] (SUSE RPM)
Copyright (C) 2002-13, Брюс Аллен, Кристиан Франке, www.smartmontools.org

=== НАЧАЛО ИНФОРМАЦИОННОГО РАЗДЕЛА ===
Модель устройства: ST2000LM003 HN-M201RAD
Серийный номер: S321J9DG805231
Идентификатор устройства LU WWN: 5 0004cf 2106b38eb
Версия прошивки: 2BC10001
Емкость пользователя: 2 000 398 934 016 байт [2,00 ТБ]
Размеры секторов: 512 байт логических, 4096 байт физических
Скорость вращения: 5400 об / мин
Устройство: отсутствует в базе данных smartctl [для подробностей используйте: -P showall]
Версия ATA: ATA8-ACS T13 / 1699-D, редакция 6
Версия SATA: SATA 3.0, 6,0 Гбит / с (текущая: 3,0 Гбит / с)
Местное время: Вт, 20 сентября, 00:05:59, 2016 BST.
Поддержка SMART: Доступна - устройство поддерживает SMART.
Поддержка SMART: Включена
Функция AAM: отключена
Функция APM: отключена
Rd упреждающий просмотр: включен
Кэш записи: Включен
Безопасность ATA: отключена, НЕ ЗАМОРОЖЕНА [SEC1]
Wt Cache Reorder: Включено

=== НАЧАЛО ЧТЕНИЯ РАЗДЕЛА ДАННЫХ SMART ===
Результат теста SMART для самооценки общего состояния здоровья: ПРОШЕЛ

Общие ценности SMART:
Статус автономного сбора данных: (0x00) Активность автономного сбора данных
                                        никогда не запускался.Автоматический сбор данных в автономном режиме: отключен.
Состояние выполнения самотестирования: (0) Предыдущая процедура самотестирования завершена.
                                        без ошибок или без самотестирования никогда
                                        был запущен.
Общее время для завершения офлайн
сбор данных: (22740) секунд.
Автономный сбор данных
возможности: (0x5b) SMART немедленно выполнить Offline.
                                        Поддержка автоматического включения / выключения сбора данных в автономном режиме.Приостановить автономный сбор при новых
                                        команда.
                                        Поддерживается автономное сканирование поверхности.
                                        Поддерживается самотестирование.
                                        Самотестирование передачи не поддерживается.
                                        Поддерживается выборочная самопроверка.
Возможности SMART: (0x0003) Сохраняет данные SMART перед вводом
                                        режим энергосбережения.Поддерживает таймер автоматического сохранения SMART.
Возможность регистрации ошибок: (0x01) Поддерживается регистрация ошибок.
                                        Поддерживается универсальное ведение журнала.
Краткая программа самопроверки
рекомендуемое время опроса: (1) минуты.
Расширенная программа самопроверки
рекомендуемое время опроса: (379) минут.
Возможности SCT: (0x003f) Поддерживается статус SCT.
                                        Поддерживается SCT Error Recovery Control.SCT Feature Control поддерживается.
                                        Таблица данных SCT поддерживается.
 

Конфигурация SATA (2011 г.)

SATA начинает поддерживать новую функцию под названием «множители портов»,
которые эффективно мультиплексируют несколько дисков SATA на один порт SATA хоста.
это может уменьшить проблемы с кабелями. также довольно часто можно увидеть многопортовый
Контроллеры SATA, которые подключают 4 порта к разъему Infiniband;
это позволяет, например, создавать контроллеры SATA с 24 портами.

Горячая замена (2011)

Примечание: описание поддержки горячего подключения Linux RAID см. На странице Hotplug.

Горячая замена с SATA / SAS

Поддержка горячего подключения SATA / SAS требуется спецификациями SATA / SAS, поэтому платформа SATA / SAS — это та платформа, где горячее подключение должно быть наименее проблемным. Но, тем не менее, вы можете попасть в ловушку несоблюдения требований, поэтому читайте дальше, прежде чем начинать экспериментировать!

Поддержка Hotplug в наборах микросхем материнской платы / контроллера диска

Более новые наборы микросхем контроллеров материнских плат / дисков и их драйверы обычно поддерживают горячее подключение.

Если набор микросхем AHCI-совместимый, он (вероятно) сможет использовать модуль ядра ahci, обеспечивающий горячее подключение и поддержку управления питанием. Модуль ahci присутствует в ядре Linux с версии 2.6.19.

Но все же не все чипсеты поддерживают горячее подключение. Кроме того, некоторые наборы микросхем, которые теоретически могут поддерживать горячее подключение (но не являются AHCI-совместимыми), не имеют необходимой поддержки в ядре Linux. Для получения дополнительной информации о состоянии драйверов SATA см. Http://ata.wiki.kernel.org/index.php/SATA_hardware_features.

Поддержка Hotplug на дисках SATA / SAS

Все современные диски SATA и SAS, оснащенные 15-контактным разъемом питания SATA, готовы к горячему подключению.
Могут быть очень старые исторические диски SATA с 4-контактным разъемом питания Molex, у которых нет 15-контактного разъема питания SATA. Такие старые диски никогда не следует подключать напрямую (без отсека для горячей замены), иначе вы рискуете их повредить.

Поддержка горячего подключения кабелями SATA / SAS

Для защиты схемы диска во время горячего подключения 15-контактный разъем питания SATA / SAS на стороне кабеля должен иметь 2 контакта (контакт №4 и 12) длиннее остальных.

Пояснение:

  • на стороне разъема кабеля / объединительной платы («розетки») контакты 4 и 12 длиннее и называются «смещенными контактами». Эти контакты подключают GND к диску до того, как будут подключены другие контакты, гарантируя, что никакая чувствительная схема не будет подключена до того, как появится надежное заземление системы
  • на стороне устройства, контакты 3, 7, 13 расположены в шахматном порядке. Эти контакты подают питание 3,3 В, 5 В и 12 В на силовую электронику предварительной зарядки на диске до того, как будут подключены другие контакты питания.

Важное предупреждение
В обычных 15-контактных розетках кабеля питания SATA, которые можно найти в обычных блоках питания или корпусах компьютеров, контакты 4 и 12 не расположены в шахматном порядке! На самом деле, довольно сложно найти розетку SATA с возможностью горячей замены. На первый взгляд, разница невелика, посмотрите здесь изображения нескольких типов разъемов SATA, прежде чем пытаться начать играть в игры с горячим подключением на своем диске!

!!!! Пожалуйста, помните, что без смещенных контактов GND на гнезде кабеля питания SATA вы рискуете повредить ваш диск при выполнении горячего подключения / горячего отключения !!!!

Разъем питания SATA, совместимый с «горячей» заменой, должен присутствовать во всех отсеках для «горячей» замены SAS / SATA.

В случае, если у вас нет отсека для горячей замены, но у вас есть 15-контактный разъем питания SATA, совместимый с горячим подключением , это должна быть правильная последовательность подключения и отключения диска [2]:

Для горячего подключения:

  1. подключите 15-контактную розетку к диску
  2. подключить 7-контактный кабель для передачи данных

Для горячего отключения:

  1. отключите кабель передачи данных от диска
  2. отключите шнур питания

Горячая замена с SCA

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

Замените устройство RAID, дисковое устройство и номера хоста / канала / id / lun
с соответствующими значениями в примере ниже:

  • Дамп таблицы разделов с диска, если она еще доступна для чтения:
 sfdisk -d / dev / sdb> partitions.sdb
 
  • Отметьте неисправный и извлеките диск для замены из массива:
 mdadm -f / dev / md0 / dev / sdb1
    mdadm -r / dev / md0 / dev / sdb1
 
  • Найдите Host, Channel, ID и Lun диска, который нужно заменить, заглянув в
 / proc / scsi / scsi
 
  • Снимаем привод с автобуса:
 echo "scsi remove-single-device 0 0 2 0"> / proc / scsi / scsi
 
  • Убедитесь, что диск был правильно удален, заглянув в
 / proc / scsi / scsi
 
  • Отключите диск от отсека SCA и вставьте новый диск.
  • Добавьте новый привод в автобус:
 echo "scsi add-single-device 0 0 2 0"> / proc / scsi / scsi
 

(это тоже должно раскрутить привод)

  • Переразметьте диск, используя ранее созданную таблицу разделов:
 sfdisk / dev / sdb <разделы.SDB
 
  • Добавьте диск в свой массив:
 mdadm -a / dev / md0 / dev / sdb1
 

Аргументы команд "scsi remove-single-device": Хост,
Канал, Ид и Лун. Эти числа находятся в "/ proc / scsi / scsi"
файл.

Вышеупомянутые шаги были опробованы и протестированы в системе с IBM SCA
диски и контроллер Adaptec SCSI. Если у вас возникнут проблемы или
найдите более простые способы сделать это, обсудите это на linux-raid
список рассылки.

Общие настройки

Это то, что вам нужно для любого из уровней RAID:

  • Ядро с соответствующей поддержкой MD в виде модулей или встроенных.Желательно ядро ​​из серии 4.х. Хотя большая часть этого должна работать и с более поздними ядрами 3.x.
  • Терпение, пицца и ваш любимый напиток с кофеином.

Первые два элемента входят в стандартную комплектацию большинства дистрибутивов GNU / Linux.
Cегодня.

Если ваша система поддерживает RAID, у вас должен быть файл с именем
/ proc / mdstat. Помните, этот файл - ваш друг. Если ты не
есть этот файл, возможно, ваше ядро ​​не поддерживает RAID.

Если вы уверены, что ваше ядро ​​поддерживает RAID, вам может потребоваться запустить команду run modprobe raid [режим RAID], чтобы загрузить поддержку raid в ваше ядро.
например, для поддержки raid5:

 modprobe raid456
 

Посмотрите, что содержит файл, выполнив

 cat / proc / mdstat
 

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

Подготовка и разбиение дисковых устройств на разделы

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

Это приводит к 2 частым вопросам:

  • Следует использовать устройство целиком или его раздел?
  • Какой тип раздела?

, которые обсуждаются в разделе "Типы разделов"

Загрузка и установка mdadm - инструмента управления RAID

mdadm теперь является стандартным инструментом управления RAID и должен быть найден в любом современном дистрибутиве.

Вы можете получить самую последнюю версию mdadm с помощью

 git clone git: // neil.brown.name/mdadm
 

При отсутствии других настроек сделайте это в каталоге / usr / local / src. В программе для Linux нет ничего из этого autoconf - просто следуйте инструкциям в файле INSTALL.

В качестве альтернативы просто используйте метод обычного распространения для получения пакета:

Debian, Ubuntu:

 apt-get install mdadm
 

Gentoo:

 появляется mdadm
 

RedHat:

 yum install mdadm
 

[открыть] SUSE:

 zypper в мдадм
 

Mdadm режимы работы

mdadm хорошо документирован на его странице руководства - стоит прочитать.

 человек мдадм
 

mdadm имеет 7 основных режимов работы. Обычная работа просто использует команды «Создать», «Собрать» и «Монитор» - остальные пригодятся, когда вы возитесь с массивом; обычно исправляя или изменяя его.

1. Создать

Создайте новый массив с суперблоками для каждого устройства (обычное создание).

2. Соберите

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

3. Следить или контролировать

Отслеживайте одно или несколько устройств MD и реагируйте на любые изменения состояния. Это имеет значение только для raid1, 4, 5,
6, 10 или многолучевые массивы, поскольку только они имеют интересное состояние. raid0 или linear никогда не пропадали,
запасные или вышедшие из строя диски, поэтому отслеживать нечего.Обычно это делается и после перезагрузки.

4. Сборка

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

5. Рост

Увеличивайте, уменьшайте или иным образом изменяйте форму массива.В настоящее время поддерживаются варианты роста, включая изменение активного размера компонентных устройств на уровне RAID 1/4/5/6 и изменение количества активных устройств в RAID1.

6. Управление

Это для выполнения действий с определенными компонентами массива, таких как добавление новых запчастей и удаление
неисправные устройства.

7. Разное

Это режим «все остальное», который поддерживает операции с активными массивами, операции с компонентными устройствами, такие как стирание старых суперблоков, и операции сбора информации.

Создать устройство RAID

Ниже мы увидим, как создавать массивы различных типов; основной подход:

 mdadm --create / dev / md0 
   mdadm --monitor / dev / md0
 

Если вы хотите получить доступ ко всем последним и предстоящим функциям, таким как полностью именованные RAID-массивы, чтобы вам больше не приходилось запоминать, какой раздел и где находится, вам нужно обязательно использовать постоянные метаданные в формате версии 1.0 или выше, поскольку нет способа (в настоящее время или запланированного) преобразовать массив в другую версию метаданных.Текущие рекомендации - использовать метаданные версии 1.2, за исключением создания загрузочного раздела, в этом случае используйте метаданные версии 1.0 и RAID-1. [3]

Загрузка из рейда 1.2 поддерживается только при загрузке с помощью initramfs, поскольку ядро ​​больше не может собирать или распознавать массив - оно полагается на инструменты пользовательского пространства. Загрузка напрямую из 1.0 поддерживается, потому что метаданные находятся в конце массива, а начало зеркального массива 1.0 просто выглядит как обычный раздел для ядра.

ПРИМЕЧАНИЕ. Способ обновления метаданных с версии 0.90 до 1.0 содержится в разделе «Форматы суперблока RAID».

Чтобы изменить версию метаданных (теперь по умолчанию это метаданные версии 1.2), добавьте параметр --metadata после переключателя , указывающего, что вы делаете в первую очередь. Это будет работать:

 mdadm --create / dev / md0 --metadata 1.0 
 

Однако это не сработает:

 mdadm --metadata 1.0 --create / dev / md0 
 

Линейный режим

Хорошо, у вас есть два или более раздела, которые не обязательно
того же размера (но, конечно, может быть), который вы хотите добавить к каждому
Другие.

Запасные диски здесь не поддерживаются. Если диск умирает, умирает массив
с этим. Нет информации для размещения на запасном диске.

Используя mdadm, одну команду вроде

 mdadm --create --verbose / dev / md0 --level = linear --raid-devices = 2 / dev / sdb6 / dev / sdc5
 

должен создать массив. Параметры говорят сами за себя. Выход-
положить может выглядеть так

 mdadm: размер блока по умолчанию 64 КБ
   mdadm: массив / dev / md0 запущен.
 

Загляните в / proc / mdstat.Вы должны увидеть, что массив запущен.

Теперь вы можете создать файловую систему, как и любую другую
устройство, смонтируйте его, включите в свой / etc / fstab и так далее.

RAID-0

У вас есть два или более устройств примерно одинакового размера, и вы
хотите объединить свои хранилища, а также объединить свои
производительность путем доступа к ним параллельно.

 mdadm --create --verbose / dev / md0 --level = stripe --raid-devices = 2 / dev / sdb6 / dev / sdc5
 

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

Запустив mdadm, вы инициализировали суперблоки и
запустил устройство рейда. Загляните в / proc / mdstat, чтобы узнать, что
продолжается. Вы должны увидеть, что ваше устройство теперь работает.

/ dev / md0 теперь готов к форматированию, монтированию, использованию и злоупотреблению.

RAID-1

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

 mdadm --create --verbose / dev / md0 --level = mirror --raid-devices = 2 / dev / sdb1 / dev / sdc1
 

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

 mdadm --create --verbose / dev / md0 --level = mirror --raid-devices = 2 / dev / sdb1 / dev / sdc1 --spare-devices = 1 / dev / sdd1
 

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

Просмотрите файл / proc / mdstat. Он должен сообщить вам, что / dev / md0
устройство запущено, зеркало реконструируется, и
ETA завершения реконструкции.

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

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

Попробуйте отформатировать устройство, пока идет реконструкция. Это
будет работать. Также вы можете установить его и использовать при реконструкции.
Бег. Конечно, если при реконструкции сломается не тот диск
работает, вам не повезло.

RAID-4/5/6

У вас есть три или более устройств (четыре или более для RAID-6) примерно одинакового размера, вы хотите
объединить их в более крупное устройство, но при этом сохранить степень
избыточность для безопасности данных. В конце концов у вас есть несколько устройств для
использовать в качестве запасных дисков, которые раньше не входили в массив
другое устройство выходит из строя.

Если вы используете N устройств, наименьшее из которых имеет размер S, размер
весь массив raid-5 будет (N-1) * S или (N-2) * S для raid-6. Это «недостающее» пространство используется для проверки четности
(избыточность) информация. Таким образом, если какой-либо диск выходит из строя, все данные остаются
неповрежденный. Но если два диска выходят из строя на raid-5 или три на raid-6, все данные теряются.

Размер блока по умолчанию - 128 КБ. Это размер io по умолчанию на шпинделе.

Хорошо, хватит разговоров. Посмотрим, работает ли raid-5. Запустите вашу команду:

 mdadm --create --verbose / dev / md0 --level = 5 --raid-devices = 3 / dev / sdb1 / dev / sdc1 / dev / sdd1 --spare-devices = 1 / dev / sde1
 

и посмотрим, что получится.Надеюсь, ваши диски начнут работать
как сумасшедшие, как они начинают реконструкцию вашего массива. Взглянуть
в / proc / mdstat, чтобы узнать, что происходит.

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

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

Теперь вы можете создать файловую систему. Перед форматированием файловой системы прочтите раздел о специальных параметрах mke2fs. Теперь вы можете смонтировать его, включить в свой / etc / fstab и так далее.

Сохранение конфигурации RAID (2011)

После создания массива важно сохранить конфигурацию в соответствующем файле конфигурации mdadm.В Ubuntu это файл /etc/mdadm/mdadm.conf. В некоторых других дистрибутивах это файл /etc/mdadm.conf. Проверьте документацию к вашему дистрибутиву или посмотрите файл man mdadm.conf, чтобы узнать, что применимо к вашему дистрибутиву.

Для сохранения информации о конфигурации:

Ubuntu:

 mdadm --detail --scan >> /etc/mdadm/mdadm.conf
 

Другое (проверьте документацию вашего дистрибутива):

 mdadm --detail --scan >> /etc/mdadm.conf
 

Обратите внимание: если вы сделаете это до того, как ваш массив завершит инициализацию, у вас может быть неточное предложение spares =.

В Ubuntu, если вы не сохраните информацию о создании RAID, вы получите странные ошибки при попытке собрать устройство RAID (описано ниже). Будут сгенерированы ошибки, что жесткий диск занят, даже если он кажется неиспользуемым. Например, ошибка может быть похожей на эту: «mdadm: не удается открыть / dev / sdd1: устройство или ресурс занят». Это происходит потому, что если в файле mdadm.conf нет информации о конфигурации RAID, система может создать устройство RAID из одного диска в массиве, активировать его и оставить отключенным.Вы можете определить эту проблему, посмотрев на вывод «cat / proc / mdstat». Если в нем перечислены такие устройства, как «md_d0», которые не являются частью вашей настройки RAID, сначала остановите постороннее устройство (например: «mdadm --stop / dev / md_d0»), а затем попробуйте собрать свой RAID-массив, как описано ниже. .

Создать и смонтировать файловую систему

Загляните в / proc / mdstat. Вы должны увидеть, что массив запущен.

Теперь вы можете создать файловую систему, как и на любом другом устройстве, смонтировать ее, включить в свой / etc / fstab и так далее.

Распространенными командами создания файловой системы являются mk2fs и mkfs.ext3. Пожалуйста, смотрите варианты mke2fs для примера и деталей.

Использование массива

Остановить работающее устройство RAID очень просто:

 mdadm --stop / dev / md0
 

Пуск немного сложнее; вы можете подумать, что:

 mdadm --run / dev / md0
 

будет работать - но это не так.

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

Если вы ранее запускали:

 mdadm --create / dev / md0 --level = 5 --raid-devices = 4 / dev / sda1 / dev / sdb1 / dev / sdc1 / dev / sdd1
 

тогда

 mdadm --assemble / dev / md0 / dev / sda1 / dev / sdb1 / dev / sdc1 / dev / sdd1
 

подойдет.

Однако простой способ сделать это, если у вас хорошая простая установка:

 mdadm --assemble --scan
 

Для сложных случаев (например, вы извлекаете диски с других машин, которые пытаетесь восстановить)
у этого есть потенциал для запуска массивов, которые вы действительно не хотите запускать.Более безопасный механизм - это
используйте параметр uuid и запустите:

 mdadm --scan --assemble --uuid = a26bf396: 31389f83: 0df1722d: f404fe4c
 

Это соберет только тот массив, который вам нужен, но он будет работать независимо от
что случилось с именами устройств. Это особенно круто, если, например,
вы добавляете новую карту контроллера SATA, и внезапно / dev / sda становится / dev / sde !!!

Постоянный суперблок (2011)

Вернувшись в «Старые добрые времена» (TM), raidtools прочитал бы ваш
/ etc / raidtab, а затем инициализировать массив.Однако это
требуют, чтобы файловая система, на которой находился / etc / raidtab, была смонтирована.
Это было неудачно, если вы хотите загрузиться с RAID.

Также старый подход приводил к сложностям при монтировании файловых систем.
на RAID-устройствах. Их нельзя было поместить в файл / etc / fstab как
обычно, но должен быть смонтирован из сценариев инициализации.

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

Неплохая идея - поддерживать согласованный файл /etc/mdadm.conf,
поскольку вам может понадобиться этот файл для последующего восстановления массива, хотя сегодня в этом нет необходимости.

Постоянный суперблок является обязательным для автоматической сборки
ваши устройства RAID при загрузке системы.

ПРИМЕЧАНИЕ. Были ли необходимы постоянные суперблоки для поддержки рейда ядра? Эта поддержка была перенесена в пользовательское пространство, поэтому этот раздел может (а может и нет) серьезно устареть.

Физические схемы суперблока перечислены в форматах суперблока RAID.

Внешние метаданные (2011)

MDRAID всегда использовал собственный формат метаданных. Существует два основных формата собственных метаданных MDRAID: 0.90 и версия 1. Старый формат 0.90 ограничивает массивы до 28 компонентов и 2 терабайт. В последней версии mdadm по умолчанию используется версия 1.2.

Начиная с ядра Linux v2.6.27 и mdadm v3.0, поддерживаются внешние метаданные.Эти форматы давно поддерживаются DMRAID и позволяют загружать тома RAID из дополнительного ПЗУ в зависимости от поставщика.

Первый формат - это DDF (формат дисковых данных), определенный SNIA как «отраслевой стандарт» формата метаданных RAID. Когда создается массив DDF, создается контейнер, в котором могут быть созданы обычные массивы RAID внутри контейнера.

Второй формат - это формат метаданных Intel (r) Matrix Storage Manager. Это также создает
контейнер, управляемый аналогично DDF.А на некоторых платформах (в зависимости от производителя) это
формат поддерживается опциональным ПЗУ для обеспечения загрузки.
[4]

Чтобы сообщить информацию о RAID из дополнительного ПЗУ:

 mdadm --детальная платформа
 

Платформа

: Intel (R) Matrix Storage Manager
         Версия: 8.9.0.1023
     Уровни RAID: raid0 raid1 raid10 raid5
     Размеры блоков: 4k 8k 16k 32k 64k 128k
       Максимальное количество дисков: 6
     Максимальный объем: 2
  Контроллер ввода-вывода: / sys / devices / pci0000: 00/0000: 00: 1f.2
           Порт0: / dev / sda (3MT0585Z)
           Порт1: - недисковое устройство (ATAPI DVD D Dh26D4S) -
           Порт 2: / dev / sdb (WD-WCANK2850263)
           Порт 3: / dev / sdc (3MT005ML)
           Порт 4: / dev / sdd (WD-WCANK2850441)
           Порт 5: / dev / sde (WD-WCANK2852905)
           Порт 6: - устройство не подключено -
 

Чтобы создать тома RAID, которые являются внешними метаданными, мы должны сначала создать контейнер:

 mdadm --create --verbose / dev / md / imsm / dev / sd [b-g] --raid-devices 4 --metadata = imsm
 

В этом примере мы создали контейнер на основе IMSM для 4 устройств RAID.Теперь мы можем создавать тома внутри контейнера.

 mdadm --create --verbose / dev / md / vol0 / dev / md / imsm --raid-devices 4 --level 5
 

Конечно, параметр --size можно использовать для ограничения размера дискового пространства, используемого в томе во время создания, чтобы создать несколько томов в контейнере. Одно важное замечание: различные тома в контейнере ДОЛЖНЫ занимать одни и те же диски. то есть том RAID10 и том RAID5, охватывающий одинаковое количество дисков.

Размер куска

Размер блока заслуживает объяснения.Ты никогда не сможешь писать
полностью параллельно набору дисков. Если бы у вас было два диска и вы хотели
чтобы записать байт, вам нужно будет записать четыре бита на каждый диск.
Фактически, каждый второй бит пойдет на диск 0, а остальные - на диск.
1. Оборудование просто не поддерживает это. Вместо этого мы выбираем какой-то кусок-
размер, который мы определяем как наименьшую "атомарную" массу данных, которая может
записываться на устройства. Запись 16 КБ с размером блока 4
kB приведет к записи первого и третьего фрагментов по 4 КБ в
первый диск, а также второй и четвертый фрагменты для записи в
второй диск, в корпусе RAID-0 с двумя дисками.Таким образом, для больших
пишет, вы можете увидеть меньшие накладные расходы, имея довольно большие куски,
тогда как массивы, которые в основном содержат небольшие файлы, могут принести больше пользы
от меньшего размера куска.

Размеры блоков должны быть указаны для всех уровней RAID, включая линейный.
Режим. Однако размер блока не имеет значения для линейного
Режим.

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

RAID-0

Данные записываются «почти» параллельно дискам в массиве.
Фактически, байты размера блока записываются на каждый диск последовательно.

Если указать размер блока 4 КБ и записать 16 КБ в массив из трех
дисков, система RAID запишет 4 КБ на диски 0, 1 и 2 в
параллельно, затем оставшиеся 4 КБ на диск 0.

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

RAID-0 с ext2

Следующий совет предоставлен [email protected]:

ПРИМЕЧАНИЕ: этот совет больше не нужен, поскольку ext2 fs поддерживает специальные параметры: см. «Параметры для mke2fs» ниже

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

Пример:

При рейде с размером блока 4 КБ (также называемом размером шага) и файловой системе с размером блока 4 КБ каждый блок занимает один шаг.С двумя дисками размер #disk * stride-size (также называемый шириной полосы) равен 2 * 4k = 8k.
Размер группы блоков по умолчанию составляет 32768 блоков, что кратно ширине полосы 2 блоков, поэтому все группы блоков начинаются с диска 0,
который легко может стать горячей точкой, что снизит общую производительность.
К сожалению, размер группы блоков может быть установлен только с шагом 8 блоков (32 КБ при использовании блоков 4 КБ), что также является кратным ширине полосы,
поэтому вы не можете избежать проблемы, настроив блоки для каждой группы с помощью опции -g в mkfs (8).

Если вы добавляете диск, ширина полосы (#disk * stride-size product) составляет 12 КБ,
Таким образом, первая группа блоков начинается с диска 0, вторая группа блоков начинается с диска 2, а третья - с диска 1.
Нагрузка, вызванная активностью диска в начале группы блоков, распространяется на все диски.

Если вы не можете добавить диск, попробуйте размер шага 32 КБ. Ширина полосы (#disk * stride-size product) тогда равна 64 КБ.
Поскольку вы можете изменять размер группы блоков с шагом 8 блоков (32k), использование 32760 блоков на группу решает проблему.

Кроме того, границы группы блоков должны попадать на границы шага. Приведенные выше примеры подтверждают это.

RAID-1

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

RAID-4

Когда выполняется запись в массив RAID-4, информация о четности должна быть
обновляется и на четном диске.

Размер блока влияет на производительность чтения так же, как в RAID-0,
так как чтение из RAID-4 выполняется таким же образом.

RAID-5

В RAID-5 размер блока имеет то же значение для чтения, что и для
RAID-0. Запись на RAID-5 немного сложнее: когда кусок
записывается в массив RAID-5, соответствующий чанк четности должен быть
также обновлен.Для обновления блока четности требуется либо

  • Исходный фрагмент, новый фрагмент и старый блок четности
  • Или все фрагменты (кроме фрагмента четности) в полосе

Код RAID выберет самый простой способ обновить каждый блок четности
по мере записи. Естественно, если на вашем сервере много
память и / или если записи хорошие и линейные, обновление
блоки четности накладывают накладные расходы только на одну дополнительную запись
по шине (как RAID-1).Расчет паритета
сам по себе чрезвычайно эффективен, поэтому, хотя он, конечно, загружает
основной процессор системы, это влияние незначительно. Если пишет
маленькие и разбросаны по всему массиву, уровень RAID будет
почти всегда нужно читать все нетронутые фрагменты из каждого
Stripe, в который записывается, чтобы вычислить чанк четности.
Это приведет к дополнительной нагрузке на шину и задержке из-за дополнительных чтений.

Разумный размер блока для RAID-5 составляет 128 КБ. Исследование показало, что при использовании 4 дисков (четное количество дисков может иметь значение) большие блоки размером 512–2048 КБ дают лучшие результаты [5].Как всегда, вы можете поэкспериментировать с этим или заглянуть на нашу страницу производительности.

Также смотрите раздел о специальных опциях для mke2fs. Это влияет
Производительность RAID-5.

ext2, ext3 и ext4 (2011)

При форматировании устройств RAID-4 или -5 с помощью mke2fs или mkfs доступны специальные параметры. Параметры -E stride = nn, stripe-width = mm позволят mke2fs лучше размещать различные специфические структуры данных ext2 / ext3 на устройстве RAID.

Примечание. Команды mkfs или mkfs.ext3 или mkfs.ext2 - это версии одной и той же команды с одинаковыми параметрами; используйте то, что поддерживается, и решите, используете ли вы ext2 или ext3 (без ведения журнала или с ведением журнала). См. Две версии одной и той же команды ниже; каждый создает свой тип файловой системы.

Обратите внимание, что ext3 больше не существует в ядре - он был включен в драйвер ext4, хотя файловые системы ext3 все еще могут быть созданы и использованы.

Вот пример с пояснением ниже:

 mke2fs -v -m.1 -b 4096 -E stride = 32, stripe-width = 64 / dev / md0
   или
   mkfs.ext3 -v -m .1 -b 4096 -E stride = 32, stripe-width = 64 / dev / md0
 
 Объяснение опций:
     Первая команда создает файловую систему ext2, вторая создает файловую систему ext3
     -v подробный
     -m .1 оставить 0,1% диска в корневом каталоге (чтобы он не заполнялся и не создавал проблем)
     -b 4096 размер блока 4 КБ (рекомендуется выше для больших файловых систем)
     -E шаг = 32, ширина полосы = 64 см. Расчет ниже
 

Расчет

  • размер блока = 128 КБ (задается командой mdadm, см. Совет по размеру блока выше)
  • размер блока = 4 КБ (рекомендуется для больших файлов и в большинстве случаев)
  • шаг = кусок / блок = 128 КБ / 4 КБ = 32
  • stripe-width = stride * ((n дисков в raid5) - 1) = 32 * ((3) - 1) = 32 * 2 = 64

Если размер блока 128 КБ, это означает, что 128 КБ последовательных данных будут находиться на одном диске.Если мы хотим построить файловую систему ext2 с размером блока 4 КБ, мы понимаем, что в одном фрагменте массива будет 32 блока файловой системы.

stripe-width = 64 вычисляется путем умножения значения stride = 32 на количество дисков данных в массиве.

Raid5 с n дисками имеет n-1 дисков данных, один зарезервирован для контроля четности. (Примечание: на странице руководства mke2fs неверно указано n + 1; это известная ошибка в документации на странице руководства, которая теперь исправлена.) Raid10 (1 + 0) с n дисками на самом деле является raid 0 из n / 2 raid1 подмассивы по 2 диска.

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

На производительность

RAID- {4,5,10} сильно влияют параметры шага и ширины полосы. Неясно, как опция шага повлияет на другие уровни RAID. Если у кого есть информация по этому поводу, прошу дополнить знания.

Размер блока ext2fs сильно влияет на производительность файловой системы. Вы всегда должны использовать размер блока 4 КБ в любой файловой системе, превышающей несколько сотен мегабайт, если только вы не храните на ней очень большое количество очень маленьких файлов.

Изменение после создания

Можно изменить параметры с помощью

 tune2fs -E stride = n, ширина полосы = m / dev / mdx
 

XFS

xfsprogs и утилита mkfs.xfs автоматически выбирают лучший размер полосы и ширину полосы для нижележащих устройств, которые ее поддерживают, например программных RAID-устройств Linux. Ранние версии xfs использовали встроенный libdisk и GET_ARRAY_INFO ioctl для сбора информации; в более новых версиях используется улучшенное определение геометрии в libblkid.При использовании libblkid точная геометрия также может быть получена от аппаратных RAID-устройств, которые правильно экспортируют эту информацию.

Для создания файловых систем XFS, оптимизированных для RAID-массивов вручную, вам потребуются два параметра:

  • размер блока : тот же, что используется с mdadm
  • количество дисков «данных» : количество дисков, на которых хранятся данные, а не диски, используемые для контроля четности или запасных. Например:
    • RAID 0 с 2 дисками: 2 диска данных (n)
    • RAID 1 с 2 дисками: 1 диск данных (n / 2)
    • RAID 10 с 10 дисками: 5 дисков данных (n / 2)
    • RAID 5 с 6 дисками (без запасных): 5 дисков данных (n-1)
    • RAID 6 с 6 дисками (без запасных): 4 диска с данными (n-2)

Имея эти числа под рукой, вы захотите использовать mkfs.Параметры su и sw xfs при создании файловой системы.

  • su : Stripe unit, который представляет собой размер блока RAID в байтах.
  • sw : множитель блока страйпа, т. Е. Количество дисков с данными

Если у вас 4-дисковый массив RAID 5 и размер блока составляет 64 КиБ, используйте следующую команду:

 mkfs -t xfs -d su = 64k -d sw = 3 / dev / md0
 

В качестве альтернативы вы можете использовать параметры sunit / swidth mkfs, чтобы указать единицу измерения и ширину полосы в блоках по 512 байт.Для приведенного выше массива он также может быть указан как:

 mkfs -t xfs -d sunit = 128 -d swidth = 384 / dev / md0
 

Результат точно такой же; однако комбинацию su / sw часто проще запомнить. Помните, что sunit / swidth непоследовательно используются во всех утилитах XFS (см. Xfs_info ниже).

Чтобы проверить параметры, используемые для файловой системы XFS, используйте xfs_info.

 xfs_info / dev / md0
 
 метаданных = / dev / md0 isize = 256 agcount = 32, agsize = 45785440 байт
         = sectsz = 4096 attr = 2
data = bsize = 4096 блоков = 1465133952, imaxpct = 5
         = sunit = 16 ширины = 48 бланков
naming = version 2 bsize = 4096 ascii-ci = 0
log = internal bsize = 4096 блоков = 521728, версия = 2
         = sectsz = 4096 sunit = 1 blks, lazy-count = 0
realtime = нет extsz = 196608 блоков = 0, rtextents = 0
 

Здесь вместо того, чтобы отображать 512-байтовые блоки, как в mkfs.xfs, sunit и swidth отображаются как кратные размеру блока файловой системы (bsize), другая файловая система настраивается. Это несоответствие вызвано устаревшими причинами и плохо документировано.

Для приведенного выше примера оптимальны и правильно указаны параметры sunit (sunit × bsize = su, 16 × 4096 = 64 KiB) и swidth (swidth × bsize = sw, 48 × 4096 = 192 KiB).

Хотя блок полосы и ширину полосы нельзя изменить после создания файловой системы XFS, их можно переопределить во время монтирования с помощью параметров sunit / swidth, аналогичных тем, которые используются в mkfs.xfs.

Из Documentation / filesystems / xfs.txt в дереве ядра:

 sunit = значение и swidth = значение
       Используется для указания блока полосы и ширины для устройства RAID или
       полосатый объем. "значение" должно быть указано в блоке размером 512 байт
       единицы.
       Если эта опция не указана и файловая система была создана на
       объем полосы или ширина полосы или единица измерения были указаны для
       устройство RAID во время mkfs, тогда системный вызов mount будет
       восстановить значение из суперблока.Для файловых систем, которые
       производятся непосредственно на RAID-устройствах, эти параметры можно использовать
       для переопределения информации в суперблоке, если базовый
       структура диска изменяется после создания файловой системы.
       Параметр "swidth" требуется, если параметр "sunit" был
       указан и должен быть кратным значению "sunit".
 

Источник: Samat Says: Настройка XFS для RAID

Этот раздел о жизни с программной системой RAID.
общаться с массивами и возиться с ними.

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

Обнаружение отказа диска

Во-первых: у mdadm есть отличный режим «монитора», который отправляет электронное письмо при обнаружении проблемы в любом массиве (подробнее об этом позже).

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

Для / var / log / messages всегда необходимо заполнять экраны тоннами
сообщения об ошибках, что бы ни случилось. Но когда речь идет о диске
сбой, сообщается об огромном количестве ошибок ядра. Несколько неприятных примеров,
для мазохистов,

Ядро

: канал scsi0 0: сброс для второй половины попыток.
    Ядро: шина SCSI сбрасывается для канала 0 хоста 0.
    kernel: scsi0: Отправка сброса устройства шины CCB # 2666 на цель 0
    kernel: scsi0: Сброс устройства шины CCB # 2666 на цель 0 завершен
    kernel: scsi: прерывание команды из-за тайм-аута: pid 2649, scsi0, channel 0, id 0, lun 0 Write (6) 18 33 11 24 00
    kernel: scsi0: Прерывание CCB # 2669 на цель 0
    Ядро: истекло время ожидания сброса канала 0 хоста SCSI 0 (pid 2644) - стараюсь изо всех сил
    Ядро: шина SCSI сбрасывается для хоста 0 канал 0.Ядро: scsi0: CCB # 2669 для цели 0 Прервано
    kernel: scsi0: Сброс BusLogic BT-958 из-за цели 0
    ядро: scsi0: *** BusLogic BT-958 успешно инициализирован ***
 

Чаще всего отказы дисков выглядят так:

Ядро

: ошибка ввода-вывода sidisk: dev 08:01, сектор 15

ядро: ошибка диска SCSI: хост 0 канал 0 идентификатор 0 lun 0 код возврата = 28000002

или эти

 ядро: hde: read_intr: error = 0x10 {SectorIdNotFound}, CHS = 31563/14/35, сектор = 0
    kernel: hde: read_intr: status = 0x59 {Ошибка DriveReady SeekComplete DataRequest}
 

И, как и ожидалось, классический вид / proc / mdstat также выявит проблемы,

 Личности: [linear] [raid0] [raid1] [translucent]
    read_ahead не установлен
    md7: активный raid1 sdc9 [0] sdd5 [8] 32000 блоков [2/1] [U_]
 

Позже в этом разделе мы узнаем, как контролировать RAID с помощью mdadm, поэтому
мы можем получать отчеты о сбоях диска.Пришло время
узнать больше об интерпретации / proc / mdstat.

Запрос статуса массива

Вы всегда можете посмотреть статус массива, выполнив cat / proc / mdstat
Это не повредит. Взгляните на страницу / proc / mdstat, чтобы узнать, как читать файл.

Наконец, помните, что вы также можете использовать mdadm для проверки
массивы вне.

 mdadm --detail / dev / mdx
 

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

Имитация отказа привода

Если вы планируете использовать RAID для обеспечения отказоустойчивости, вы также можете захотеть
проверьте свою установку, чтобы убедиться, что она действительно работает. Теперь, как
имитировать сбой диска?

Короче говоря, вы не можете, кроме разве что развести огонь
через привод, на котором вы хотите «смоделировать» неисправность. Ты никогда не сможешь
знать, что произойдет, если диск умрет. Он может электрически принимать
автобус, к которому он подключен, рендеринг всех дисков на этой шине
недоступен.Привод также может просто сообщить об ошибке чтения / записи.
на уровень SCSI / IDE / SATA, который, если все сделано правильно, в свою очередь, заставляет уровень RAID обрабатывать это
положение изящно. К счастью, так часто бывает.

Помните, что вы должны использовать RAID- {1,4,5,6,10}, чтобы ваш массив
способен пережить отказ диска. Linear- или RAID-0 выйдет из строя
полностью, когда устройство отсутствует.

Принудительный отказ от оборудования

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

Посмотрите системный журнал и посмотрите / proc / mdstat, чтобы узнать, как устроен RAID.
делаю. Это сработало? Вы получили письмо от монитора mdadm?

Неисправные диски должны быть помечены (F), если вы посмотрите на
/ proc / mdstat.Кроме того, пользователи mdadm должны видеть состояние устройства как
неисправен.

При повторном подключении диска (при выключенном питании
конечно, помните), вы можете снова добавить "новое" устройство в RAID,
с помощью команды mdadm --add '.

Принудительное отключение программным обеспечением

Вы можете просто смоделировать отказ диска, не отключая устройства.
Просто запустите команду

 mdadm --manage --set-faulty / dev / md1 / dev / sdc2
 

должно хватить для выхода из строя диска / dev / sdc2 массива / dev / md1.

Теперь все идет вверх и появляется веселье. Во-первых, вы должны что-то увидеть
как первая строка в журнале вашей системы. Что-то вроде
вторая строка появится, если у вас настроены запасные диски.

 ядро: raid1: сбой диска на sdc2, отключение устройства.
     ядро: md1: повторная синхронизация запасного диска sdb7 для замены неисправного диска
 

Проверка / proc / mdstat out покажет деградированный массив. Если бы был
запасной диск есть, реконструкция должна была начаться.

Еще одна полезная команда на этом этапе:

 mdadm --detail / dev / md1
 

Наслаждайтесь видом.

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

Сначала мы удалим неисправный диск из массива. Запустите команду

 mdadm / dev / md1 -r / dev / sdc2
 

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

Теперь у нас есть / dev / md1, который только что потерял устройство. Это могло быть
деградированный RAID или, возможно, система в процессе реконструкции
процесс. Мы ждем, пока закончится восстановление, прежде чем вернуть все обратно в
обычный.

Итак, поездка заканчивается, когда мы отправляем / dev / sdc2 обратно домой.

 mdadm / dev / md1 -a / dev / sdc2
 

Когда блудный сын вернется в массив, мы увидим, что он становится
активный член / dev / md1, если необходимо. В противном случае он будет отмечен как
запасной диск.Это управление стало проще.

Моделирование повреждения данных

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

RAID не может и не должен защищать от повреждения данных на
СМИ.Поэтому намеренно и бессмысленно
поврежденные данные (например, с помощью dd) на диске, чтобы увидеть, как RAID
система справится с этим. Скорее всего (если вы не повредите
Суперблок RAID), что уровень RAID никогда не узнает о
повреждение, но ваша файловая система на устройстве RAID будет повреждена.

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

Мониторинг RAID-массивов

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

Давайте посмотрим на базовый пример. Бег

 mdadm --monitor --daemonise --mail = root @ localhost --delay = 1800 / dev / md2
 

должен выпустить демон mdadm для мониторинга / dev / md2.Ключ --daemonise указывает mdadm работать как демон. Параметр задержки означает, что опрос будет производиться с интервалом 1800 секунд.
Наконец, о критических событиях и фатальных ошибках следует отправлять по электронной почте на адрес
системный менеджер. Мониторинг RAID стал проще.

Наконец, параметры --program или --alert определяют программу, которую необходимо
запускается всякий раз, когда обнаруживается событие.

Обратите внимание, что при установке ключа -f демон mdadm никогда не завершит работу, если решит, что есть
являются массивами для мониторинга, поэтому обычно его следует запускать в фоновом режиме.Помните, что вы запускаете демон, а не команду оболочки.
Если mdadm запускается для мониторинга без ключа -f, он будет вести себя как обычная команда оболочки и ждать, пока вы ее остановите.

Использование mdadm для мониторинга RAID-массива просто и эффективно. Однако,
есть фундаментальные проблемы с таким мониторингом - какие
происходит, например, если демон mdadm останавливается? Чтобы преодолеть
В этой проблеме следует смотреть в сторону «реальных» решений мониторинга.
Существует ряд бесплатных программ, программ с открытым исходным кодом и даже коммерческих.
доступные решения, которые можно использовать для программного мониторинга RAID на
Linux.Поиск на FreshMeat должен вернуть большое количество совпадений.

18.5. Программные RAID-устройства

18.5. Программные RAID-устройства

Первоначально предоставил Уоррен Блок.

Некоторые материнские платы и карты расширения добавляют простые
аппаратное обеспечение, обычно это просто ПЗУ, которое позволяет
компьютер для загрузки с RAID-массива. После
загрузка, доступ к массиву RAID обрабатывается
с помощью программного обеспечения, запущенного на главном процессоре компьютера. Этот
«Программное обеспечение с аппаратной поддержкой
RAID »дает RAID
массивы, не зависящие от какой-либо конкретной работы
система, и которые работают еще до операционной системы
загружен.

Поддерживаются несколько уровней RAID,
в зависимости от используемого оборудования. См. Graid (8) для
полный список.

graid (8) требуется geom_raid.ko
модуль ядра, который включен в
GENERIC Ядро начиная с FreeBSD9.1.
При необходимости его можно загрузить вручную с помощью
градуированная нагрузка .

Программные устройства RAID часто имеют меню
в который можно войти, нажав специальные клавиши, когда компьютер
загружается.Меню можно использовать для создания и удаления
RAID-массивы. graid (8) также может создавать
массивы прямо из командной строки.

Градиентная этикетка используется для создания нового
массив. Материнская плата, использованная в этом примере, имеет Intel
программный набор микросхем RAID, поэтому Intel
указан формат метаданных. Новому массиву присваивается метка
gm0 , это зеркало
(RAID1) и использует диски
ada0 и
ада1 .

Внимание:

Некоторое пространство на дисках будет перезаписано, когда они
превращаются в новый массив.Резервное копирование существующих данных
первый!

  #    Градиентная этикетка Intel gm0 RAID1 ada0 ada1  
GEOM_RAID: Intel-a29ea104: Создан массив Intel-a29ea104.
GEOM_RAID: Intel-a29ea104: состояние диска ada0 изменено с NONE на ACTIVE.
GEOM_RAID: Intel-a29ea104: Поддиск gm0: состояние 0-ada0 изменено с NONE на ACTIVE.
GEOM_RAID: Intel-a29ea104: состояние диска ada1 изменено с НЕТ на АКТИВНЫЙ.
GEOM_RAID: Intel-a29ea104: Состояние поддиска gm0: 1-ada1 изменено с NONE на ACTIVE.
GEOM_RAID: Intel-a29ea104: массив запущен.GEOM_RAID: Intel-a29ea104: состояние тома gm0 изменено с НАЧАЛО на ОПТИМАЛЬНОЕ.
Intel-a29ea104 создан
GEOM_RAID: Intel-a29ea104: Создан raid / r0 провайдера для тома gm0. 

Проверка состояния показывает, что новое зеркало готово к работе.
использование:

  #    статус степени  
   Название Статус Компоненты
raid / r0 ОПТИМАЛЬНЫЙ ada0 (АКТИВНЫЙ (АКТИВНЫЙ))
                  ada1 (ACTIVE (ACTIVE)) 

Устройство массива отображается в
/ дев / рейд / . Первый массив называется
р0 .Дополнительные массивы, если они есть, будут
быть r1 , r2 и так
на.

Меню BIOS на некоторых из этих устройств
могут создавать массивы со специальными символами в их именах. Чтобы
избежать проблем с этими специальными символами, массивы даны
простые пронумерованные имена, например r0 . Показывать
фактические этикетки, например, gm0 в
пример выше, используйте sysctl (8):

  #    sysctl kern.geom.raid.name_format = 1   

Некоторые программные устройства RAID поддерживают
более одного тома на массиве.Тома работают как перегородки, оставляя место на физическом
диски должны быть разделены и использованы по-разному. Например,
Программные RAID-устройства Intel поддерживают два
тома. В этом примере создается зеркало 40G для безопасного
хранение операционной системы, а затем 20G
Том RAID0 (полосовой) для быстрого временного
хранилище:

  #    градационная этикетка -S 40G Intel gm0 RAID1 ada0 ada1  
  #    graid add -S 20G gm0 RAID0   

Тома отображаются как дополнительные
r X записей
в / dev / raid / .Массив с двумя томами
покажет r0 и
r1 .

См. Graid (8), чтобы узнать количество томов, поддерживаемых
различные программные RAID-устройства.

18.5.3. Преобразование одиночного привода в зеркало

При определенных условиях возможно
преобразовать существующий одиночный диск в массив graid (8)
без переформатирования. Чтобы избежать потери данных во время
преобразование, существующий диск должен соответствовать этим минимальным
требования:

  • Диск должен быть разбит на разделы
    Схема разбиения MBR.GPT или другие схемы разделов с
    метаданные в конце диска будут перезаписаны и
    повреждены метаданными graid (8).

  • Должно быть достаточно неразделенного и неиспользуемого места на
    конец диска для хранения метаданных graid (8).
    Эти метаданные различаются по размеру, но самые большие занимают
    64M, так что по крайней мере столько свободного места
    рекомендуемые.

Если привод соответствует этим требованиям, начните с
полная резервная копия.Затем создайте зеркало с одним приводом с этим
диск:

  #    метаданные graid Intel gm0 RAID1 ada0 НЕТ   

метаданные graid (8) были записаны в конец диска
в неиспользуемом пространстве. Второй диск теперь можно вставить в
зеркало:

  #    graid insert raid / r0 ada1   

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

18.5.4. Вставка новых дисков в массив

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

В примере массива зеркал данные сразу начинают
скопировано на вновь вставленный диск. Любая существующая информация
на новом диске будут перезаписаны.

  #    Graid Вставка raid / r0 ada1  
GEOM_RAID: Intel-a29ea104: состояние диска ada1 изменено с НЕТ на АКТИВНЫЙ.
GEOM_RAID: Intel-a29ea104: Состояние поддиска gm0: 1-ada1 изменено с НЕТ на НОВОЕ.
GEOM_RAID: Intel-a29ea104: Состояние поддиска gm0: 1-ada1 изменено с NEW на REBUILD.
GEOM_RAID: Intel-a29ea104: Subdisk gm0: 1-ada1 начало восстановления с 0. 

18.5.5. Удаление дисков из массива

Отдельные диски могут быть навсегда удалены из
из массива и их метаданные удалены:

  #    graid remove raid / r0 ada1  
GEOM_RAID: Intel-a29ea104: состояние диска ada1 изменено с АКТИВНЫЙ на АВТОНОМНЫЙ.GEOM_RAID: Intel-a29ea104: Поддиск gm0: 1- [неизвестно] состояние изменено с АКТИВНЫЙ на НЕТ.
GEOM_RAID: Intel-a29ea104: состояние тома gm0 изменено с OPTIMAL на DEGRADED. 

18.5.6. Остановка массива

Массив можно остановить без удаления метаданных из
диски. Массив будет перезапущен, когда система
загрузился.

  #    Graid Stop raid / r0   

18.5.7. Проверка состояния массива

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

  #    статус градиента  
   Название Статус Компоненты
raid / r0 DEGRADED ada0 (АКТИВНЫЙ (АКТИВНЫЙ))
                   ada1 (ACTIVE (REBUILD 28%)) 

Некоторые типы массивов, например RAID0 или
CONCAT , может не отображаться в статусе
сообщить, если диски вышли из строя. Чтобы увидеть эти частично неудачные
массивы, добавить -ga :

  #    статус града -ga  
          Название Статус Компоненты
Intel-e2d07d9a BROKEN ada6 (ACTIVE (ACTIVE)) 

Массивы уничтожаются путем удаления всех томов из
их.Когда последний присутствующий том удаляется, массив
остановлен, и метаданные удаляются с дисков:

  #    graid delete raid / r0   

18.5.9.Удаление неожиданных массивов

Диски могут неожиданно содержать метаданные graid (8),
либо от предыдущего использования, либо от тестирования производителя.
graid (8) обнаружит эти диски и создаст массив,
создание препятствий доступу к индивидуальному приводу. Удалять
нежелательные метаданные:

  1. Загрузите систему.В меню загрузки выберите
    2 для подсказки загрузчика. Введите:

     OK   установите kern.geom.raid.enable = 0  
    OK   boot   

    Система загрузится с graid (8)
    отключен.

  2. Создайте резервную копию всех данных на затронутом диске.

  3. Как обходной путь, обнаружение массива graid (8)
    можно отключить, добавив

     kern.geom.raid.enable = 0 

    в /boot/loader.conf .

    Чтобы окончательно удалить метаданные graid (8)
    с поврежденного диска загрузите установку FreeBSD
    CD-ROM или карту памяти и выберите
    Оболочка . Используйте статус
    чтобы найти имя массива, обычно
    raid / r0 :

      #    статус уровня  
       Название Статус Компоненты
    raid / r0 ОПТИМАЛЬНЫЙ ada0 (АКТИВНЫЙ (АКТИВНЫЙ))
                      ada1 (ACTIVE (ACTIVE)) 

    Удалите том по имени:

      #    graid delete raid / r0   

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

    Перезагрузите и проверьте данные, восстановив из резервной копии, если
    необходимо. После удаления метаданных
    kern.geom.raid.enable = 0 запись в
    /boot/loader.conf также может быть
    удалено.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *