V
V
vlarkanov2018-07-31 09:45:16
linux
vlarkanov, 2018-07-31 09:45:16

How to "upgrade" RAID1 with system installed to RAID10 without data loss?

Hello!
There is a server with Debian 9. The system is installed on RAID1 /dev/md0p1 (consists of 2x Intel DC S3700 200Gb).


sda 8:0 0 186.3G 0 disk
└─sda1 8:1 0 186.3G 0 part
└─md0 9:0 0 186.2G 0 raid1
└─md0p1 259:0 0 186.2G 0 md /
sdb 8: 16 0 186.3G 0 disk
└─sdb1 8:17 0 186.3G 0 part
└─md0 9:0 0 186.2G 0 raid1
└─md0p1 259:0 0 186.2G 0 md /

It is planned to purchase 2 more of the same disks and turn the array into RAID10.
How can this be done with minimal downtime and no data loss?
UPD. Figured out how. I am attaching the full algorithm, as I just did on the test virtual machine:
# partition structure before the migration process: 4 identical disks, 2 of them in RAID1 (GRUB is installed on both)
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 291M 0 rom
vda 254:0 0 5G 0 disk
└─vda1 254:1 0 5G 0 part
└─md0 9:0 0 5G 0 raid1 /
vdb 254:16 0 5G 0 disk
└─vdb1 254:17 0 5G 0 part
└─md0 9:0 0 5G 0 raid1 /
vdc 254:32 0 5G 0 disk
vdd 254:48 0 5G 0 disk
==============================
1) CREATING A SECOND RAIID
====== sfdisk
-d
/dev/vda --force | sfdisk /dev/vdc --force
sfdisk -d /dev/vda --force | sfdisk /dev/vdd --force #First
pull out 1 disk from raid1, because we need at least 3 disks to create a raid10
mdadm /dev/md0 --fail /dev/vdb1 --remove /dev/vdb1 #Build a
degraded RAID10 as /dev/md3 and mount it. Be sure to add an entry about the new array so that after a reboot it remains
mdadm --create /dev/md3 --level=10 --raid-devices=4 /dev/vdb1 /dev/vdc1 /dev/vdd1 missing
mdadm --examine --scan > /etc/mdadm/mdadm.conf
update-initramfs -u #Create
a file system on a new array
mkfs.ext4 /dev/md3
================ ===============
2) CHOOSE ANOTHER FS ROOT
============================ == #In the
/boot/grub/grub.cfg file, replace the UUID md0 everywhere with the UUID md3
cdee676d-736c-4028-b419-8d30a6f550c2 with 205e4eb4-84b2-46ef-a220-0aaeb917d4f3 #After
that,
update-initramfs -u
#B /etc/fstab and /etc/mtab file, replace UUID /dev/md0 with UUID /dev/md3
============================ ====
3) TRANSFER DATA
================================
#Move data from /dev/md0 to / dev/md3
mkdir /mnt/md3
mount -t ext4 /dev/md3 /mnt/md3
rsync -avHxl --progress --inplace --exclude 'lost+found' / /mnt/md3/
umount /mnt/md3 #Reboot
. / should now be md3.
==================================
4) DELETE OLD RADIO, COLLECT NEW
========= =========================
#Disassemble old raid, clear disk, add it to RAID10
mdadm -S /dev/md0
mdadm --zero-superblock / dev/vda1
mdadm /dev/md3 --add /dev/vda1
#Rescan raid, update array entry
mdadm --examine --scan > /etc/mdadm/mdadm.conf
=========== =======================
5) INSTALL GRUB ON ALL DISKS
==================== ==============
#specify all 4 disks
dpkg-reconfigure grub-pc
After reboot, enjoy RAID10.

Answer the question

In order to leave comments, you need to log in

4 answer(s)
D
Dmitry Shitskov, 2018-07-31
@Zarom

It is highly recommended to:
1. Make a backup copy
2. Rebuild the RAID
3. Put the data back in place
You will not agree with this ... In vain. But point 1 is required.

C
CityCat4, 2018-07-31
@CityCat4

В этом и состоит "прикол" недо-RAID - их нельзя дополнять, править, модифицировать. Они - как разделы во FreeBSD (не знаю, правда как сейчас, но до 9.2-STABLE было так) - "как прибили, так и держится". Только бэкап - при этом я категорически согласен с Дмитрий Шицков - бэкап обязателен! - и пересборка массива заново - при этом это будет новый массив, ничего не знающий о старом.
Настоящие RAID-контроллеры - адаптеки и иже с ними позволяют делать такие финты ушами - но у них на то и свой процессор на борту, который всю эту хитрую механику изолирует от посторонних глаз.

W
Wexter, 2018-07-31
@Wexter

Никак. Сливайте данные и пересобирайте массив

X
Xak Ru, 2018-07-31
@XakRU

Выести один из двух дисков, получите деградирующий raid 1, на основе выведенного диска тоже создать деградирующий raid1.
При установке дополнительных дисков добавить по одному в каждый raid. Raid1 можно создавать и с одним диском, но при создании необходимо указывать два устройства, но вместо второго написать «missing».
Не забываем про бекапы.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question