Мэдисон Скотт-Клэри, Конг Янг, Джастин Эллингвуд. Как создавать массивы RAID с помощью mdadm в Ubuntu 22.04
Это перевод статьи Madison Scott-Clary, Kong Yang, Justin Ellingwood. How To Create RAID Arrays with mdadm on Ubuntu 22.04.
Содержание
Введение
С помощью утилиты 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.