Если информация была полезной для вас, вы можете поблагодарить за труды Юmoney: 41001164449086

Как сделать из RAID1 -> RAID5 на linux mdadm

Предположим в нашем распоряжении уже есть работающий RAID1 состоящий из двух дисков. Всё замечательно, но однажды мы захотели расширить объём, добавив ещё один диск и соответственно перейти к RAID5.
В сети уже есть инструкция на данную тему:
Миграция с RAID1 на RAID5 в mdadm без потери данных - habrahabr.ru/post/100952
Но, откровенно говоря, мне не совсем понравился подход автора, который, по сути, предлагает создавать RAID5 поверх старого RAID1. Поэтому предлагаю свой способ.

Итак, у нас уже есть RAID1 - /dev/md0 состоящий из двух дисков /dev/sdb1 и /dev/sdc1, просмотрим информацию по нему:

[root@localhost /]# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Mon Oct 19 13:02:18 2015
     Raid Level : raid1
     Array Size : 8383488 (8.00 GiB 8.58 GB)
  Used Dev Size : 8383488 (8.00 GiB 8.58 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Mon Oct 19 13:23:48 2015
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : localhost:0  (local to host localhost)
           UUID : 803589ac:17ccb613:6afdc1d0:b4f7ac19
         Events : 19

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1

Как видно, у нас уровень RAID - 1.

 

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

[root@localhost /]# fdisk /dev/sdd

Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x2624c075.

Команда (m для справки): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Номер раздела (1-4, default 1): 1
First sector (2048-16777215, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-16777215, default 16777215):

Created a new partition 1 of type 'Linux' and of size 8 GiB.

Команда (m для справки): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'.

Команда (m для справки): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

 

Для этого я использовал fdisk, который в используемом мною дистрибутиве Mageia 5, претерпел довольно серьёзные изменения, однако вы можете использовать например parted, сути этого не меняет.

Добавляем новый диск в массив:

[root@localhost /]# mdadm --manage /dev/md0 --add /dev/sdd1
mdadm: added /dev/sdd1

 

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

[root@localhost /]# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Mon Oct 19 13:02:18 2015
     Raid Level : raid1
     Array Size : 8383488 (8.00 GiB 8.58 GB)
  Used Dev Size : 8383488 (8.00 GiB 8.58 GB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Mon Oct 19 14:21:02 2015
          State : clean
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

           Name : localhost:0  (local to host localhost)
           UUID : 803589ac:17ccb613:6afdc1d0:b4f7ac19
         Events : 20

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1

       2       8       49        -      spare   /dev/sdd1

 

Теперь собственно самое интересное, меняем уровень нашего RAID1 на RAID5:

[root@localhost /]# mdadm --grow /dev/md0 --level 5 --raid-devices 3
mdadm: level of /dev/md0 changed to raid5

 

Теперь вновь посмотрим на статус нашего массива:

[root@localhost /]# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Mon Oct 19 13:02:18 2015
     Raid Level : raid5
     Array Size : 8383488 (8.00 GiB 8.58 GB)
  Used Dev Size : 8383488 (8.00 GiB 8.58 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Mon Oct 19 14:30:16 2015
          State : clean, reshaping
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

 Reshape Status : 31% complete
  Delta Devices : 1, (2->3)

           Name : localhost:0  (local to host localhost)
           UUID : 803589ac:17ccb613:6afdc1d0:b4f7ac19
         Events : 43

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       2       8       49        2      active sync   /dev/sdd1

 

Как видно уровень нашего массива изменился на RAID5, идёт перестроение, и теперь в нём участвуют 3 диска (раздела) /dev/sdb1 /dev/sdc1 /dev/sdd1.

Если мы хотим увеличить скорость синхронизации то можно например это сделать дав команду:

[root@localhost /]# echo 200000 > /proc/sys/dev/raid/speed_limit_min

 

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

[root@localhost /]# umount /dev/md0
[root@localhost /]# e2fsck -f /dev/md0
e2fsck 1.42.12 (29-Aug-2014)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/md0: 11/524288 files (0.0% non-contiguous), 70287/2095872 blocks
[root@localhost /]# resize2fs /dev/md0
resize2fs 1.42.12 (29-Aug-2014)
Resizing the filesystem on /dev/md0 to 4191744 (4k) blocks.
The filesystem on /dev/md0 is now 4191744 (4k) blocks long.

 

После проделанных манипуляций массив надо вновь подмонтировать. Также по необходимости можно добавить информацию о новом диске в конфиг mdadm.conf.

При этом хотелось бы отметить что в процессе преобразования RAID1 в RAID5 не происходила его остановка, а отмонтирование происходило на непродолжительное время для изменения размера файловой системы, в моём случае это ext4.

 

 

 

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


Если информация была полезной для вас, вы можете поблагодарить за труды Юmoney: 41001164449086