Создайте подобный сайт на WordPress.com
Начало работы

mdraid: компоненты и управление

mdraid — linux-утилита для создания и управления программными RAID-массивами.

Преимущества программного RAID-массива:

  • Бесплатно (не надо тратиться на покупку аппаратного RAID-контроллера)
  • Одинаковый интерфейс управления на всех популярных linux
  • Гибкая настройка (можно перенести RAID в другой сервер, нет привязки к железу, производителю дисков и т д.)

Недостатки программного RAID-массива:

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

mdraid может работать не только с дисками, но и с разделами, томами LVM и т.д. Информация о RAID-массиве записывается в суперблок диска.

Рассмотрим на примере ОС CentOS как управлять RAID-массивами

Как создать RAID-массив?

Если вы только устанавливаете ОС на сервер, то RAID-массив можно создать прямо из установщика. Давайте на примере сделаем RAID1:

Переходим в раздел INSTALLATION DESTINATION
Перед нами откроется список дисков, с помощью клавиши ctrl выделяем оба диска и в разделе partitioning выбираем пункт I will configure partitioning и нажимаем Done

Если бы у нас был создан аппаратный RAID на уровне BIOS, то мы бы увидели просто один диск, на который сразу могли бы устанавливать ОС.

Перед нами откроется окно ручной разметки дисков, в левом нижнем углу можно посмотреть количество выделенных дисков (в нашем случае их должно быть 2). Нажимаем на раздел Click here to create them automatically
Тут проходим по каждому созданному разделу (/, /boot, /swap) и в Device Type указываем тип RAID, RAID Level — RAID1 и нажимаем Done
Применяем список настроек — Accept Changes

После успешной установки ОС мы увидим следующее состояние дисков и разделов:

[root@c7-raid ~]# lsblk
NAME      MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda         8:0    0    8G  0 disk
├─sda1      8:1    0  6.2G  0 part
│ └─md125   9:125  0  6.2G  0 raid1 /
├─sda2      8:2    0  823M  0 part
│ └─md126   9:126  0  822M  0 raid1 [SWAP]
└─sda3      8:3    0    1G  0 part
  └─md127   9:127  0 1022M  0 raid1 /boot
sdb         8:16   0    8G  0 disk
├─sdb1      8:17   0  6.2G  0 part
│ └─md125   9:125  0  6.2G  0 raid1 /
├─sdb2      8:18   0  823M  0 part
│ └─md126   9:126  0  822M  0 raid1 [SWAP]
└─sdb3      8:19   0    1G  0 part
  └─md127   9:127  0 1022M  0 raid1 /boot
sr0        11:0    1 1024M  0 rom
[root@c7-raid ~]# cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sda1[0] sdb1[1]
      6491136 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md126 : active raid1 sdb2[1] sda2[0]
      841728 blocks super 1.2 [2/2] [UU]

md127 : active raid1 sda3[0] sdb3[1]
      1046528 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

unused devices: <none>
[root@c7-raid ~]#

#Исправный диск будет отображаться буквой U, неисправный прочерком (_). Сейчас мы #видим что под каждый раздел создалась отдельная RAID-группа.

Собирать все разделы в RAID необязательно, можно собрать лишь тот, который требуется, например /

Дальнейшее управление RAID-массивом будет происходить через утилиту mdadm:

Установка утилиты mdadm: yum install -y mdadm

В Debian\Ubuntu можно установить командой: sudo apt install -y mdadm

Просмотр всех созданных RAID-массивов: mdadm —examine —scan

[root@c7-raid ~]# mdadm --examine --scan
ARRAY /dev/md/root  metadata=1.2 UUID=f8eaae19:53973f7b:a79fe7da:e0493fea name=c7-raid:root
ARRAY /dev/md/swap  metadata=1.2 UUID=bd51902c:d3a004a1:dd7a3ec2:9b0fc8ae name=c7-raid:swap
ARRAY /dev/md/boot  metadata=1.2 UUID=30b96e90:1b5f1775:232bd954:b28f671f name=c7-raid:boot

#/dev/md/root - адрес символьной ссылки на массив
#metadata=1.2 - используемая версия суперблока
#UUID=f8eaae19:53973f7b:a79fe7da:e0493fea - UUID массива
#name=c7-raid:root - имя массива

Вывод подробной информации о RAID-массиве: mdadm -D /dev/md127

[root@c7-raid md]# mdadm -D /dev/md127
/dev/md127:
           Version : 1.2
     Creation Time : Sun Nov  8 16:10:55 2020
        Raid Level : raid1
        Array Size : 1046528 (1022.00 MiB 1071.64 MB)
     Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Sun Nov  8 16:52:55 2020
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : bitmap

              Name : c7-raid:boot  (local to host c7-raid)
              UUID : 30b96e90:1b5f1775:232bd954:b28f671f
            Events : 22

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

Что делать, если RAID-массив деградировал?

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

  1. Сначала проверяем состояние RAID-массива и виден ли новый диск:
[root@c7-raid ~]# lsblk
NAME      MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda         8:0    0    8G  0 disk
├─sda1      8:1    0  6.2G  0 part
│ └─md126   9:126  0  6.2G  0 raid1 /
├─sda2      8:2    0  823M  0 part
│ └─md125   9:125  0  822M  0 raid1 [SWAP]
└─sda3      8:3    0    1G  0 part
  └─md127   9:127  0 1022M  0 raid1 /boot
sdb         8:16   0    8G  0 disk
sr0        11:0    1  906M  0 rom
[root@c7-raid ~]# cat /proc/mdstat
Personalities : [raid1]
md125 : active (auto-read-only) raid1 sda2[0]
      841728 blocks super 1.2 [2/1] [U_]

md126 : active raid1 sda1[0]
      6491136 blocks super 1.2 [2/1] [U_]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md127 : active raid1 sda3[0]
      1046528 blocks super 1.2 [2/1] [U_]
      bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>

#Видим что появился диск sdb, но на нём нет RAID-масива

Если сбойный диск ещё не извлечен и он числится в RAID-массиве, то необходимо сделать следующие действия:

  • Пометить диск как сбойный (для каждого raid-массива): mdadm /dev/md125 —set-faulty /dev/sdb
  • Удалить диск из каждого RAID-массива: mdadm /dev/md125 —remove /dev/sdb

2. Копируем на новый диск все разделы с рабочего диска (очень важно не перепутать диски местами, сначала идёт диск с которого копируем): sfdisk -d /dev/sda | sfdisk —force /dev/sdb

3. Проверяем, что были созданы идентичные разделы: lsblk

[root@c7-raid ~]# lsblk
NAME      MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda         8:0    0    8G  0 disk
├─sda1      8:1    0  6.2G  0 part
│ └─md126   9:126  0  6.2G  0 raid1 /
├─sda2      8:2    0  823M  0 part
│ └─md125   9:125  0  822M  0 raid1 [SWAP]
└─sda3      8:3    0    1G  0 part
  └─md127   9:127  0 1022M  0 raid1 /boot
sdb         8:16   0    8G  0 disk
├─sdb1      8:17   0  6.2G  0 part
├─sdb2      8:18   0  823M  0 part
└─sdb3      8:19   0    1G  0 part
sr0        11:0    1  906M  0 rom

4. Добавляем диски в RAID-массив:

  • mdadm —manage /dev/md125 —add /dev/sdb2
  • mdadm —manage /dev/md126 —add /dev/sdb1
  • mdadm —manage /dev/md127 —add /dev/sdb3

5. После добавления диска сразу начнётся ребилд массива: cat /proc/mdstat

[root@c7-raid ~]# cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sdb2[2] sda2[0]
      841728 blocks super 1.2 [2/2] [UU]

md126 : active raid1 sdb1[2] sda1[0]
      6491136 blocks super 1.2 [2/1] [U_]
      [==========>..........]  recovery = 54.2% (3524608/6491136) finish=0.4min speed=104103K/sec
      bitmap: 1/1 pages [4KB], 65536KB chunk

md127 : active raid1 sdb3[2] sda3[0]
      1046528 blocks super 1.2 [2/1] [U_]
        resync=DELAYED
      bitmap: 0/1 pages [0KB], 65536KB chunk

unused devices: <none>

После успешного ребилда RAID-массивы вернутся в обычное состояние:

[root@c7-raid ~]# cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sdb2[2] sda2[0]
      841728 blocks super 1.2 [2/2] [UU]

md126 : active raid1 sdb1[2] sda1[0]
      6491136 blocks super 1.2 [2/2] [UU]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md127 : active raid1 sdb3[2] sda3[0]
      1046528 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

unused devices: <none>

Если вдруг загрузчик находится у вас только на одном диске, то необходимо установить загрузчик на этот диск:

# grub-install /dev/sda
# update-grub

Создание RAID-массива без использования системных дисков из ОС

Допустим, в данный сервер мы установили ещё 3 диска одинаковых размеров и хотим собрать из них RAID5 и смонтировать его в ОС:

  1. Находим буквы дисков с одинаковым размером: lsblk | grep 20
[root@c7-raid ~]# lsblk | grep 20
sdb         8:16   0   20G  0 disk
sdd         8:48   0   20G  0 disk
sde         8:64   0   20G  0 disk

2. Добавляем в диски суперблок: mdadm —zero-superblock /dev/sd{b,d,e}

3. Создаём RAID5 из 3 дисков: mdadm —create /dev/md0 —level 5 -n3 /dev/sd{b,d,e}

4. Проверяем, что RAID создан успешно:

[root@c7-raid ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid5 sde[3] sdd[1] sdb[0]
      41908224 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

5. Создаём том для LVM (Необязательно, делается для того, чтобы потом было проще увеличить размер): pvcreate /dev/md0

Удаление RAID-массива:

  1. Останавливаем RAID-массив: mdadm -S /dev/md0
  2. Очищаем суперблоки дисков: mdadm —zero-superblock /dev/sd{b,d,e}
  3. Удаляем метаданные и остальную информацию с дисков: wipefs —all —force /dev/sd{b,d,e}

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

%d такие блоггеры, как: