Мэдисон Скотт-Клэри, Конг Янг, Джастин Эллингвуд. Как создавать массивы RAID с помощью mdadm в Ubuntu 22.04

Это перевод статьи Madison Scott-Clary, Kong Yang, Justin Ellingwood. How To Create RAID Arrays with mdadm on Ubuntu 22.04.

Содержание

  1. Содержание
  2. Введение
  3. Предварительные требования
  4. Сброс существующих устройств RAID (не обязательно)
  5. Создание массива RAID 0
    1. Идентификация устройств-компонентов
    2. Создание массива
    3. Создание и монтирование файловой системы
    4. Сохранение раскладки массива
  6. Создание массива RAID 1
    1. Создание массива
    2. Создание и монтирование файловой системы
    3. Сохранение раскладки массива
  7. Создание массива RAID 5
    1. Идентификация устройств-компонентов
    2. Создание массива
    3. Создание и монтирование файловой системы
    4. Сохранение раскладки массива
  8. Создание массива RAID 6
    1. Идентификация устройств-компонентов
    2. Создание массива
    3. Создание и монтирование файловой системы
    4. Сохранение раскладки массива
  9. Создание сложного массива RAID 10
    1. Идентификация устройств-компонентов
    2. Создание массива
    3. Создание и монтирование файловой системы
    4. Сохранение раскладки массива
  10. Заключение

Введение

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

В этом руководстве мы создадим различные конфигурации RAID на сервере с Ubuntu 22.04.

Предварительные требования

Для этого руководства нужны:

  • Непрвилегированный пользователь с привилегиями sudo на сервере Ubuntu 22.04. Чтобы узнать, как настроить учётную запись с такими привилегиями, воспользуйтесь руководством по начальной настройке сервера с Ubuntu 22.04 - Ubuntu initial server setup guide.
  • Начальное понимание терминологии и концепций RAID. Чтобы узнать больше о RAID и о подходящем для вас уровне RAID, прочитайте вводную статью о RAID.
  • Несколько свободных накопителей на сервере. В примерах из этого руководства демонстрируется настройка различных типов массивов, для чего понадобится несколько накопителей.
  • В зависимости от типа массива может потребоваться от двух до четырёх накопителей. Для использования в этом руководстве нужно, чтобы они не были отформатированы.

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

Сброс существующих устройств RAID (не обязательно)

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

Предупреждение: Массив и любые записанные на нём данные будут полностью уничтожены. Убедитесь, что указали верный массив и скопировали все нужные данные перед уничтожением массива.

Сначала найдём активные массивы в файле /proc/mdstat:

$ cat /proc/mdstat

Вывод:

Personalities : [raid0] [linear] [multipath] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid0 sdc[1] sdd[0]
      209584128 blocks super 1.2 512k chunks

unused devices: <none>

Затем размонтируем файловую систему на массиве:

$ sudo umount /dev/md0

Теперь остановим и удалим массив:

$ sudo mdadm --stop /dev/md0

Найдём устройства, которые будем использовать для создания массива с помощью следующей команды:

Предупреждение: Учтите, что имена /dev/sd* могут поменяться после перезагрузки. Прежде чем что-то делать, убедитесь, что работаете с верными устройствами.

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Вывод:

NAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G linux_raid_member disk
sdb 100G linux_raid_member disk
sdc 100G disk
sdd 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part 
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk 

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

$ sudo mdadm --zero-superblock /dev/sda
$ sudo mdadm --zero-superblock /dev/sdb

Рекомендуется также удалить любые постоянные ссылки на массив. Отредактируйте файл /etc/fstab и закомментируйте или удалите упомнинания массива. Закомментировать их можно, вставив символ решётки # в начало строки с помощью редактора nano или другого удобного редактора:

$ sudo nano /etc/fstab

/etc/fstab:

...
# /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0

Также закомментируйте или удалите определение массива в файле /etc/mdadm/mdadm.conf:

$ sudo nano /etc/mdadm/mdadm.conf

/etc/mdadm/mdadm.conf:

...
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=7261fb9c:976d0d97:30bc63ce:85e76e91

И наконец, снова обновите initramfs, чтобы избежать попыток собрать недоступный массив при начальной загрузке:

$ sudo update-initramfs -u

С этого момента устройства хранения готовы для использования поотдельности или использования в другом массиве.

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

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

  • Требования: Минимум 2 накопителя.
  • Основное преимущество: Производительность чтения/записи и объём.
  • Что необходимо иметь в виду: Настройте резервное копирование. Сбой одного накопителя приведёт к потере всех данных в массиве.

Идентификация устройств-компонентов

Сначала найдите идентификаторы накопителей, которые собираетесь использовать:

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Вывод:

NAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk

В этом примере имеется два накопителя без файловой системы, каждый из которых имеет объём 100 гигабайт. В текущем сеансе эти устройства получили идентификаторы /dev/sda и /dev/sdb и станут компонентами будущего массива.

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

Для создания массива RAID 0 из этих компонентов, укажите их команде mdadm --create. Также укажите имя устройства, которое хотите создать, уровень RAID и количество устройств. Указанная ниже команда создаст массив /dev/md0 из двух накопителей:

$ sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda /dev/sdb

Заглянем в файл /proc/mdstat, чтобы убедиться, что массив RAID успешно создан:

$ cat /proc/mdstat

Вывод:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid0 sdb[1] sda[0]
      209584128 blocks super 1.2 512k chunks

            unused devices: <none>

Из приведённого выше вывода видно, что из устройств /dev/sda и /dev/sdb был создан массив /dev/md0 в конфигурации RAID 0.

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

Далее создадим на массиве файловую систему:

$ sudo mkfs.ext4 -F /dev/md0

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

$ sudo mkdir -p /mnt/md0

Смонтировать файловую систему можно с помощью следующей команды:

$ sudo mount /dev/md0 /mnt/md0

Затем проверим, сколько места доступно:

$ df -h -x devtmpfs -x tmpfs

Вывод:

Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 196G 61M 186G 1% /mnt/md0

Новая файловая система смонтирована и доступна для использования.

Сохранение раскладки массива

Чтобы массив пересобирался автоматически при загрузке, нужно поправить файл /etc/mdadm/mdadm.conf. Можно автоматически просканировать активные массивы и дополнить файл следующим образом:

$ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Затем можно обновить initramfs или начальную файловую систему в оперативной памяти так, чтобы массив был доступен на начальных этапах загрузки:

$ sudo update-initramfs -u

Добавим опции монтирования новой файловой системы в файл /etc/fstab для автоматического монтирования при загрузке:

$ echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Теперь массив RAID 0 будет автоматически собираться и монтироваться при каждой загрузке.

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

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

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

  • Требования: Минимум 2 накопителя.
  • Основное преимущество: Избыточность на двух накопителях.
  • Что необходимо иметь в виду: Так как имеется две копии данных, возможно использовать только половину общего объёма накопителей.

Идентификация устройств-компонентов

Сначала найдите идентификаторы накопителей, которые собираетесь использовать:

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Вывод:

NAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk

В этом примере имеется два накопителя без файловой системы, каждый из которых имеет объём 100 гигабайт. В текущем сеансе эти устройства получили идентификаторы /dev/sda и /dev/sdb в и станут компонентами будущего массива.

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

Для создания массива RAID 1 из этих компонентов, укажите их команде mdadm --create. Также укажите имя устройства, которое хотите создать, уровень RAID и количество устройств. Указанная ниже команда создаст массив /dev/md0 из двух накопителей:

$ sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb

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

Вывод:

mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device. If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: size set to 104792064K
Continue creating array? y

Перевод:

mdadm: Замечание: Метаданные этого массива находятся в его
    начале и он может быть не пригоден в качестве
    загрузочного устройства. Если вы планируете разместить
    на этом устройстве /boot, убедитесь, что загрузчик
    понимает метаданные формата md/v1.x или воспользуйтесь
    --metadata=0.90
mdadm: заданный размер 104792064K
Продолжить создание массива? д

Утилита mdadm начнёт процесс зераклирования накопителей. До завершения пройдёт некоторое время, но массив уже можно использовать. За прогрессом зеркалирования можно наблюдать с помощью файла /proc/mdstat:

$ cat /proc/mdstat

Вывод:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb[1] sda[0]
      104792064 blocks super 1.2 [2/2] [UU]
      [====>................] resync = 20.2% (21233216/104792064) finish=6.9min speed=199507K/sec

unused devices: <none>

Во второй строке видно, что из устройств /dev/sda и /dev/sdb был создан массив /dev/md0 в конфигурации RAID 1. Четвёртая строка отображает прогресс зеркалирования. К следующему шагу можно приступить, не дожидаясь окончания этого процесса.

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

Далее создадим на массиве файловую систему:

$ sudo mkfs.ext4 -F /dev/md0

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

$ sudo mkdir -p /mnt/md0

Смонтировать файловую систему можно с помощью следующей команды:

$ sudo mount /dev/md0 /mnt/md0

Затем проверим, сколько места доступно:

$ df -h -x devtmpfs -x tmpfs

Вывод:

Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 99G 60M 94G 1% /mnt/md0

Новая файловая система смонтирована и доступна для использования.

Сохранение раскладки массива

Чтобы массив пересобирался автоматически при загрузке, нужно поправить файл /etc/mdadm/mdadm.conf. Можно автоматически просканировать активные массивы и дополнить файл следующим образом:

$ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Затем можно обновить initramfs или начальную файловую систему в оперативной памяти так, чтобы массив был доступен на начальных этапах загрузки:

$ sudo update-initramfs -u

Добавим опции монтирования новой файловой системы в файл /etc/fstab для автоматического монтирования при загрузке:

$ echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Теперь массив RAID 1 будет автоматически собираться и монтироваться при каждой загрузке.

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

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

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

  • Требования: Минимум 3 накопителя.
  • Основное преимущество: Избыточность при большем полезном объёме.
  • Что необходимо иметь в виду: Поскольку имеется информация о чётности, для её хранения будет использоваться объём одного диска. RAID 5 может страдать от очень низкой производительности в деградированном состоянии.

Идентификация устройств-компонентов

Сначала найдите идентификаторы накопителей, которые собираетесь использовать:

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Вывод:

NAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk
sdb 100G disk
sdc 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk

В этом примере имеется три накопителя без файловой системы, каждый из которых имеет объём 100 гигабайт. В текущем сеансе эти устройства получили идентификаторы /dev/sda, /dev/sdb и /dev/sdc и станут компонентами будущего массива.

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

Для создания массива RAID 5 из этих компонентов, укажите их команде mdadm --create. Также укажите имя устройства, которое хотите создать, уровень RAID и количество устройств. Указанная ниже команда создаст массив /dev/md0 из трёх накопителей:

$ sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc

Утилита mdadm начнёт настройку массива. В целях скорейшей готовности массива к использованию, процесс сборки массива будет выполняться в фоновом режиме. До завершения пройдёт некоторое время, но массив уже можно использовать. За прогрессом зеркалирования можно наблюдать с помощью файла /proc/mdstat:

$ cat /proc/mdstat

Вывод:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid5 sdc[3] sdb[1] sda[0]
      209582080 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
      [>....................] recovery = 0.9% (957244/104791040) finish=18.0min speed=95724K/sec

unused devices: <none>

Во второй строке можно увидеть, что устройство /dev/md0 было создано в конфигурации RAID 5 с использованием устройств /dev/sda, /dev/sdb и /dev/sdc. Четвёртая строка отображает прогресс зеркалирования.

Предупреждение: Из-за способа, которым mdadm собирает массивы RAID 5, во время сборки массива неверно отображается количество резервных накопителей в массиве. Прежде чем обновить файл /etc/mdadm/mdadm.conf, нужно дождаться окончания сборки. Если обновить файл конфигурации в процессе сборки массива, информация о состоянии массива будет некорректной и система не сможет собрать его автоматически в процессе загрузки под правильным именем.

К следующему шагу можно приступить, не дожидаясь окончания этого процесса.

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

Далее создадим на массиве файловую систему:

$ sudo mkfs.ext4 -F /dev/md0

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

$ sudo mkdir -p /mnt/md0

Смонтировать файловую систему можно с помощью следующей команды:

$ sudo mount /dev/md0 /mnt/md0

Затем проверим, сколько места доступно:

$ df -h -x devtmpfs -x tmpfs

Вывод:

Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 197G 60M 187G 1% /mnt/md0

Новая файловая система смонтирована и доступна для использования.

Сохранение раскладки массива

Для гарантии пересборки массива в процессе загрузки, настройте файл /etc/mdadm/mdadm.conf.

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

За прогрессом зеркалирования можно наблюдать с помощью файла /proc/mdstat:

$ cat /proc/mdstat

Вывод:

Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid5 sdc[3] sdb[1] sda[0]
      209584128 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>

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

$ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Затем можно обновить initramfs или начальную файловую систему в оперативной памяти так, чтобы массив был доступен на начальных этапах загрузки:

$ sudo update-initramfs -u

Добавим опции монтирования новой файловой системы в файл /etc/fstab для автоматического монтирования при загрузке:

$ echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Теперь массив RAID 5 будет автоматически собираться и монтироваться при каждой загрузке.

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

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

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

  • Требования: Минимум 4 накопителя.
  • Основное преимущество: Двойная избыточность при большем полезном объёме.
  • Что необходимо иметь в виду: Поскольку имеется информация о чётности, для её хранения будет использоваться объём двух накопителей. RAID 6 может страдать от очень низкой производительности в деградированном состоянии.

Идентификация устройств-компонентов

Сначала найдите идентификаторы накопителей, которые собираетесь использовать:

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Вывод:

NAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk 
sdb 100G disk
sdc 100G disk
sdd 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk

В этом примере имеется четыре накопителя без файловой системы, каждый из которых имеет объём 100 гигабайт. В текущем сеансе эти устройства получили идентификаторы /dev/sda, /dev/sdb, /dev/sdc и /dev/sdd и станут компонентами будущего массива.

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

Для создания массива RAID 6 из этих компонентов, укажите их команде mdadm --create. Также укажите имя устройства, которое хотите создать, уровень RAID и количество устройств. Указанная ниже команда создаст массив /dev/md0 из указанных накопителей:

$ sudo mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

Утилита mdadm начнёт настройку массива. В целях скорейшей готовности массива к использованию, процесс сборки массива будет выполняться в фоновом режиме. До завершения пройдёт некоторое время, но массив уже можно использовать. За прогрессом зеркалирования можно наблюдать с помощью файла /proc/mdstat:

$ cat /proc/mdstat

Вывод:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid6 sdd[3] sdc[2] sdb[1] sda[0]
      209584128 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
      [>....................] resync = 0.6% (668572/104792064) finish=10.3min speed=167143K/sec

unused devices: <none>

В первой подсвеченной строке можно увидеть, что устройство /dev/md0 было создано в конфигурации RAID 6 с использованием устройств /dev/sda, /dev/sdb, /dev/sdc и /dev/sdd. Вторая подсвеченная строка отображает прогресс зеркалирования. К следующему шагу можно приступить, не дожидаясь окончания этого процесса.

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

Далее создадим на массиве файловую систему:

$ sudo mkfs.ext4 -F /dev/md0

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

$ sudo mkdir -p /mnt/md0

Смонтировать файловую систему можно с помощью следующей команды:

$ sudo mount /dev/md0 /mnt/md0

Затем проверим сколько места доступно:

$ df -h -x devtmpfs -x tmpfs

Вывод:

Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 197G 60M 187G 1% /mnt/md0

Новая файловая система смонтирована и доступна для использования.

Сохранение раскладки массива

Чтобы массив пересобирался автоматически при загрузке, нужно поправить файл /etc/mdadm/mdadm.conf. Можно автоматически просканировать активные массивы и дополнить файл следующим образом:

$ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Затем можно обновить initramfs или начальную файловую систему в оперативной памяти так, чтобы массив был доступен на начальных этапах загрузки:

$ sudo update-initramfs -u

Добавим опции монтирования новой файловой системы в файл /etc/fstab для автоматического монтирования при загрузке:

$ echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Теперь массив RAID 6 будет автоматически собираться и монтироваться при каждой загрузке.

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

Создание сложного массива RAID 10

Массив типа RAID 10 традиционно реализуется как массив RAID 0 из чередующегося набора массивов RAID 1. Этот вложенный тип массива обладает одновременно избыточностью и высокой производительностью за счёт огромного суммарного объёма накопителей. Но утилита mdadm реализует собственный тип RAID 10, обладающий теми же достоинстами и дополнительной гибкостью. Она не создаёт вложенные массивы, но достигает большинства тех же характеристик и гарантий. Здесь рассматривается RAID 10 в реализации mdadm.

  • Требования: Минимум 3 накопителя.
  • Основное преимущество: Производительность и избыточность.
  • Что необходимо иметь в виду: Суммарное снижение объёма массива определяется количеством выбранных копий данных. Количество копий, которые хранятся в массиве RAID 10, в реализации mdadm возможно настраивать.

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

  • near: Порядок по умолчанию. Копии каждого фрагмента записываются последовательно с чередованием. Это означает, что копии блоков данных записываются примерно в одном и том же месте нескольких накопителей.
  • far: Первая и последующие копии записываются в разные места накопителей в массиве. Например, первый фрагмент может быть записан возле начала накопителя, а второй фрагмент буде записан в середине другого накопителя. За счёт такой раскладки можно достичь некоторого прироста производительности чтения на обычных накопителях с вращающимися дисками ценой снижения производительности записи.
  • offset: Каждый блок копируется со смещением на один накопитель. Копии данных смещаются относительно друг друга, но по-прежнему расположены на накопителях поблизости друг от друга. Такая раскладка помогает уменьшить затраты на позиционирование при некоторых видах нагрузки.

Больше подробностей о раскладках можно найти на странице руководств в разделе о RAID10:

$ man 4 md

Эту страницу руководства можно найти в сети.

Идентификация устройств-компонентов

Сначала найдите идентификаторы накопителей, которые собираетесь использовать:

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Вывод:

NAME SIZE FSTYPE TYPE MOUNTPOINT
sda 100G disk 
sdb 100G disk 
sdc 100G disk
sdd 100G disk
vda 25G disk
├─vda1 24.9G ext4 part /
├─vda14 4M part 
└─vda15 106M vfat part /boot/efi
vdb 466K iso9660 disk

В этом примере имеется четыре накопителя без файловой системы, каждый из которых имеет объём 100 гигабайт. В текущем сеансе эти устройства получили идентификаторы /dev/sda, /dev/sdb, /dev/sdc и /dev/sdd и станут компонентами будущего массива.

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

Для создания массива RAID 10 из этих компонентов, укажите их команде mdadm --create. Также укажите имя устройства, которое хотите создать, уровень RAID и количество устройств. По умолчанию, если не указано иное, используется две копии данных в ближней раскладке. Указанная ниже команда создаст массив /dev/md0 из указанных накопителей:

$ sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

Если нужно использовать другую раскладку или поменять количество копий, можно воспользоваться опцией --layout=, которая принимает идентификатор раскладки и количества копий. Возможные идентификаторы раскладок: n (near) - ближнаяя, f (far) - дальняя и o (offset) - смещённая. Вслед за раскладкой указывается количеством копий.

Например, для создания массива, имеющего три копии в смещённой раскладке, можно воспользоваться приведённой ниже командой:

$ sudo mdadm --create --verbose /dev/md0 --level=10 --layout=o3 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

Утилита mdadm начнёт настройку массива. В целях скорейшей готовности массива к использованию, процесс сборки массива будет выполняться в фоновом режиме. До завершения пройдёт некоторое время, но массив уже можно использовать. За прогрессом зеркалирования можно наблюдать с помощью файла /proc/mdstat:

$ cat /proc/mdstat

Вывод:

Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0]
      209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
      [===>.................] resync = 18.1% (37959424/209584128) finish=13.8min speed=206120K/sec

unused devices: <none>

В первой подсвеченной строке можно увидеть, что устройство /dev/md0 было создано в конфигурации RAID 10 с использованием устройств /dev/sda, /dev/sdb, /dev/sdc и /dev/sdd. Вторая подсвеченная строка отображает раскладку, которая использовалась в этом примере (две копии в ближней конфигурации). Третья подсвеченная строка отображает прогресс зеркалирования. К следующему шагу можно приступить, не дожидаясь окончания этого процесса.

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

Далее создадим на массиве файловую систему:

$ sudo mkfs.ext4 -F /dev/md0

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

$ sudo mkdir -p /mnt/md0

Смонтировать файловую систему можно с помощью следующей команды:

$ sudo mount /dev/md0 /mnt/md0

Затем проверим, сколько места доступно:

$ df -h -x devtmpfs -x tmpfs

Вывод:

Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 1.4G 23G 6% /
/dev/vda15 105M 3.4M 102M 4% /boot/efi
/dev/md0 197G 60M 187G 1% /mnt/md0

Новая файловая система смонтирована и доступна для использования.

Сохранение раскладки массива

Чтобы массив пересобирался автоматически при загрузке, нужно поправить файл /etc/mdadm/mdadm.conf. Можно автоматически просканировать активные массивы и дополнить файл следующим образом:

$ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Затем можно обновить initramfs или начальную файловую систему в оперативной памяти так, чтобы массив был доступен на начальных этапах загрузки:

$ sudo update-initramfs -u

Добавим опции монтирования новой файловой системы в файл /etc/fstab для автоматического монтирования при загрузке:

$ echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Теперь массив RAID 10 будет автоматически собираться и монтироваться при каждой загрузке.

Заключение

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

После выбора необходимого типа массива и его создания нужно научиться производить повседневное обслуживание с помощью mdadm. Приступить к этому поможет руководство по управлению массивами RAID с помощью mdadm в Ubuntu - How to manage RAID arrays with mdadm on Ubuntu.