Программный RAID под Linux

Введение

Это руководство посвящено установке, настройке и администрированию mdadm программного RAID в системах Linux.
Предпосылками
  • Установленная ОС Linux
  • Выделенный сервер с несколькими дисками
  • Корневой доступ

Шаг 1 - Подготовка

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

Шаг 1.1 - Выбор уровня RAID

Выбор правильного уровня RAID не прост и зависит от нескольких факторов:
  • Сколько дисков у сервера?
  • Каковы твои цели?
    • Больше места для хранения / меньше доступности
    • Более высокая доступность / Меньше места для хранения
Вот список наиболее часто используемых уровней RAID:
RAID0 :
Если существует группа из двух или более разделов, разделы логически объединяются в один раздел. Здесь доступность уменьшается. Если один из дисков неисправен автоматически, все данные будут потеряны .
  • профессионал
    • Объединяет доступное пространство для хранения.
    • Увеличивает производительность диска.
  • против
    • В случае сбоя диска данные всех дисков будут потеряны.
RAID1 :
Если существует группа из двух или более разделов, данные зеркально отображаются в каждом разделе.
  • профессионал
    • Увеличивает надежность / доступность данных.
    • Увеличивает скорость чтения данных.
  • против
    • Доступное пространство для хранения уменьшено вдвое.
RAID5 :
Группа из трех или более разделов, в которой данные отражаются в двух из трех разделов. Так называемые «четности» хранятся на третьем разделе, с помощью которого можно восстанавливать данные на неисправных дисках в RAID.
Узнайте больше о RAID5
  • профессионал
    • Повышенная надежность / доступность данных.
    • Оптимальное использование хранилища
    • Увеличивает скорость чтения данных.
  • против
    • Меньшая производительность при доступе к записи
Список дополнительных уровней RAID, которые используются реже:
  • Линейный: объединить несколько разделов
  • Multipath: нет RAID, но сопоставление файла двум разным путям в одном разделе (зеркалирование).
  • Faulty: эмулирует неисправную систему RAID для тестовых случаев
  • Уровень 4: как и уровень 0, но с дополнительным устройством для битов четности (повышенная надежность).
  • Уровень 6: как и уровень 5, но с двумя независимыми битами четности на сегмент (повышенная надежность).

Шаг 1.2 - Список дисков в системе

Для краткого и понятного списка всех доступных блочных устройств lsblkможно использовать команду . Вот пример вывода:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 232.9G 0 disk 
├─sda1 8:1 0 10G 0 part /
├─sda2 8:2 0 208.1G 0 part /home/han/data
<font color=#38B0DE>-=─sda3=- Proudly Presents 
sr0 11:0 1 1024M 0 Rome
Для списка с более подробной информацией, fdisk -lмогут быть использованы. Вот пример вывода:
Disk /dev/sda: 80.0 GByte, 80026361856 Byte
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinder of 16065 × 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x92669266

   Device boot.     Start End Blocks Id System
/dev/sda1 * 1 1305 10482381 83 Linux
/dev/sda2 1306 3977 21462840 83 Linux
/dev/sda3 4508 9729 41945715 83 Linux
/dev/sda4 3978 4507 4257225 82 Linux Swap / Solaris
Примечание . Для программного RAID-массива необязательно добавлять весь диск в RAID-массив. Отдельных разделов достаточно.

Шаг 2 - Создание программного RAID

Шаг 2.1 - Подготовка дисков

Сначала диски должны быть отформатированы соответственно.
Создайте новую пустую таблицу разделов на диске:
  • Для больших 2 ТБ накопителей или ПК с UEFI:
    sudo parted /dev/sda mklabel gpt 
  • Для дисков меньше 2 ТБ и BIOS:
    sudo parted /dev/sda mklabel msdos
Создайте раздел на диске:
sudo parted -a optimal -- /dev/sda mkpart primary 2048s -8192s 
Если вы хотите использовать весь диск, просто введите «0% 100%» вместо «2048 с-8192 с».
Подсказка : 8192 сектора в конце диска намеренно оставлены неиспользованными для подготовки к сбоям. Это позволяет вам использовать диски с несколькими секторами в качестве замены из-за свободного места.
Отметьте вновь созданный раздел как раздел RAID:
sudo parted /dev/sda set 1 raid on

Шаг 2.2 - Создание программного RAID

Под Linux mdadmэто основной инструмент. Это интерфейс к функциям RAID ядра.
Для создания RAID 1 достаточно следующей команды:
sudo mdadm --create /dev/md0 --auto md --level=1 --raid-devices=2 /dev/sda1 /dev/sdb2
Для создания RAID 5 достаточно следующей команды:
sudo mdadm --create /dev/md0 --auto md --level=5 --raid-devices=4 /dev/sda1 /dev/sdb2 /dev/sdc3 /dev/sdd4 
Параметры в деталях:
  • --create /dev/md0- Создает новую конечную точку с именем md0. Если конечные точки с таким именем уже существуют, выберите другое свободное имя (md1, md2 и т. Д.).
  • --auto md - Создает «классическую» конечную точку без предварительного разбиения.
  • --level= - Тип уровня RAID.
  • --raid-devices - Количество отдельных устройств, из которых должен состоять RAID.
  • /dev/sde1 /dev/sde2 ...- Отдельные устройства для объединения. Порядок идентификаторов или, в идеале, идентификаторов соответствующих физических устройств, должен быть записан, если RAID необходимо собрать вручную в чрезвычайной ситуации.
Вновь созданное блочное устройство mdXможно использовать немедленно, а систему можно также выключить или перезапустить в течение этого времени. Текущий статус создания RAID можно узнать с помощью следующей команды:
watch cat /proc/mdstat
Примерное издание:
Personalities : [raid0] [raid1]
mdX : active raid1 sda1[1] sdb1[0]
      8384448 blocks super 1.2 [2/2] [UU]
      [==============>.......] check = 74.7% (6267520/8384448) finish=0.1min speed=202178K/sec
Отформатируйте вновь созданный RAID:
sudo mkfs.ext4 /dev/md0
Интеграция RAID:
sudo mount /dev/mdX /mnt/md0
Автоматическая интеграция RAID:
Здесь соответствующая строка должна быть введена в файл /etc/fstab:
/dev/mdX /mnt/md0 xt4 defaults 0 2
(Необязательно) Диски Hotspare : Диски / разделы Hotspare - это те, которые обычно не используются. Они используются, если один из активных дисков / разделов системы RAID имеет ошибку или неисправен. Если в программном рейде не определен диск горячего резервирования, восстановление поврежденного RAID-массива необходимо запустить вручную. Если имеется горячий резерв, восстановление будет начато автоматически. Горячий резервный диск можно добавить с помощью следующей команды.
mdadm --add /dev/md/X /dev/sdX1

Шаг 3 - Удаление программного RAID

Чтобы удалить программный RAID, необходимо выполнить следующие шаги:
  1. Остановите RAID:
    sudo umount /dev/md0
    sudo mdadm --stop /dev/md0
  2. Удалить записи автоматического монтирования (например /etc/fstab)
  3. Удалить записи RAID в mdadm.conf.
  4. Удалить суперблок используемых разделов:
    sudo mdadm --zero-superblock /dev/sda1 /dev/sdb1 
  5. Отключить флаг RAID:
    sudo parted /dev/sda set 1 raid off

Шаг 4 - Управление программным RAID

Шаг 4.1 - Получить статус RAID

Краткий список всех RAID-массивов в системе можно получить с помощью вывода файла /proc/mdstat.
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdb1[1] sda1[0]
      8380416 blocks super 1.2 [2/2] [UU]
      
md2 : active raid1 sdb3[1] sda3[0]
      536739840 blocks super 1.2 [2/2] [UU]
      bitmap: 3/4 pages [12KB], 65536KB chunk

md1 : active raid1 sdb2[1] sda2[0]
      1047552 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
Более точный вывод делается с помощью команды:
sudo mdadm --detail /dev/md/2
Вот пример вывода:
/dev/md/2:
           Version : 1.2
     Creation Time : Fri Feb 22 17:19:37 2019
        Raid Level : raid1
        Array Size : 536739840 (511.88 GiB 549.62 GB)
     Used Dev Size : 536739840 (511.88 GiB 549.62 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Sun May 26 13:49:02 2019
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : bitmap

              Name : rescue:2
              UUID : c76e5446:f3c41fbc:0b62ca86:803a7e88
            Events : 2170

    Number   Major   Minor   RaidDevice State
       0       8        3        0      active sync   /dev/sda3
       1       8       19        1      active sync   /dev/sdb3

Шаг 4.2 - Заменить неисправный диск

Для этого сначала необходимо удалить неисправный диск из RAID:
sudo mdadm --manage /dev/md/0 -r /dev/sda1
Если диск горячего резервирования недоступен, новый диск должен быть разбит на разделы. Важно, чтобы новый диск имел те же разделы, что и неисправный диск!
Для разбиения нового диска достаточно скопировать таблицу разделов с существующего диска.
Для разделенных на MBR дисков:
sfdisk --dump /dev/sda > sda_parttable_mbr.bak # Backs up partition table
sfdisk -d /dev/sda | sfdisk /dev/sdb # Copy partition table from sda to sdb
Для GPT-дисков:
sgdisk --backup=sda_parttable_gpt.bak /dev/sda # Create a backup of the partition table
sgdisk --load-backup=sda_parttable_gpt.bak /dev/sdb # Copy the created backup of the partition table to sdb
Если новый диск правильно разделен, его можно снова добавить в систему RAID:
sudo mdadm --manage /dev/md/0 -a /dev/sda1
Чтобы начать процесс восстановления, новому добавленному диску должен быть присвоен статус faulty:
sudo mdadm --manage --set-faulty /dev/md/0 /dev/sda1
Ход можно снова отслеживать с помощью команды watch cat /proc/mdstat.
Как только восстановление RAID завершено, раздел должен быть удален из RAID и добавлен снова, чтобы удалить состояние «неисправен». Это делается с помощью команд:
sudo mdadm --manage /dev/md/0 -r /dev/sda1 # To be removed
sudo mdadm --manage /dev/md/0 -a /dev/sda1 # To be added again
* Примечание . Если система находится на самом RAID-массиве, необходимо установить загрузчик на соответствующий диск. Это делается с помощью следующей команды:
update grub && grub-install /dev/sda

Шаг 4.3 - Расширить RAID

Только RAID с уровнями 1, 5 и 6 могут быть расширены.
Новый раздел должен быть сначала добавлен в качестве горячего резерва:
sudo mdadm /dev/md0 --add /dev/sda1 
Теперь RAID можно расширить с помощью нового диска:
sudo mdadm --grow --raid-devices=5 /dev/md0 --backup-file=/root/md0.bak 
Примечание : в указанном файле --backup-fileсохраняются критические области (обычно несколько МБ). Если во время расширения происходит сбой системы, расширение можно продолжить позже, используя следующую команду:
sudo mdadm /dev/md0 --continue --backup-file=/tmp/md0.bak
Файл резервной копии не должен быть расположен на RAID, чтобы быть расширенным! Использование backup-fileне обязательно, но настоятельно рекомендуется.
Файловая система должна быть расширена, чтобы можно было использовать только что созданное пространство хранения. Расширение происходит с помощью следующих команд:
sudo umount /dev/md0 /mnt    # Unmount the file system
sudo fsck.ext4 -f /dev/md0   # Force the check, even if it has recently been checked
sudo resize2fs /dev/md0      # Extend file system to maximum size
sudo mount /dev/md0 /mnt     # Mount the file system again 

Шаг 4.4 - RAID-мониторы

Для мониторинга RAID эта запись может быть сохранена как crontab ( sudo crontab -e):
0 0 * * * /usr/share/mdadm/checkarray --cron --all --quiet >/dev/null 2>&1 # Runs every day at 00:00 AM

Вывод

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

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

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

Комментариев 0