Nastavení RAID1 na běžícím systému

Mám systémový disk, který obsahuje instalaci systému. Koupil jsem druhý disk, který chci použít na zrcadlení systémového disku (RAID1).

Warning

U všech příkazů platí: dvakrát měř, jednou řež!

Note

Zkoušeno na systému Debian Stretch, systemd free :)

Cíl

Systémový disk v softwarovém RAID1.

Postup

Na druhém oddíle je samostatně swap. Boot oddíl nemám nastaven.

Jak postupovat:

  1. Základní příprava nového disku přidaného do systému; rozdělit na oddíly stejně jako disk první - musí mít i stejné parametry (velikost); nastavení typu oddílů na fd (linux raid autodetect); vymazat případné RAID superbloky z nového disku (v případě, že byl již někdy použit v jiném poli)
  2. Vytvořit RAIDové pole; přidat nový disk do RAID1 pole (zatím ještě degradovaného)
  3. Naformátovat disk, aktualizovat nastavení mdadm
  4. Přidat do GRUBu položku v menu aby systém bootoval z tohoto nového pole
  5. Zkopírovat data ze systémového disku na nový disk; nainstalovat aktualizovavý GRUB do bootovacích oddílů
  6. Upravit /etc/fstab aby připojil root a swap z raidového pole
  7. Restartovat systém; ověřit, zda systém opravdu nabootoval z tohoto pole
  8. Upravit starý disk (typ oddílu na raid autodetect); přidat oddíly starého disku do RAIDového pole
  9. Smazat dočasnou položku v GRUB menu, aktualizovat GRUB
  10. Počkat na synchronizaci pole
  11. Restartovat

1. Základní příprava disku

Zjistím jak se moje disky jmenují

# fdisk -l

Upravím disk, typ na linux raid autodetect (typ: fd)

Zkopíruji tabulku rozdělení disku na cílový disk:

# sfdisk -d /dev/sda | sfdisk /dev/sde

Ověřím, zda je ok:

# fdisk -l /dev/sde

Vymažu superbloky z nového disku:

# mdadm --zero-superblock /dev/sde1
# mdadm --zero-superblock /dev/sde2

2. Vytvoření RAIDového pole

Vytvoření pole 2 disků (level 1 = RAID1) s chybějícím diskem (missing):

# mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sde1
# mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sde2

Zjištění stavu:

cat /proc/mdstat

3. Naformátování oddílů

# mkfs.ext4 /dev/md0
# mkswap /dev/md1

Aktualizace nastavení mdadm:

# cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.bak
# mdadm --examine --scan >> /etc/mdadm/mdadm.conf

Ověření stavu:

# cat /etc/mdadm/mdadm.conf

4. Přidat položku do GRUB menu

Zjistím si, jaké jádro je dostupné na systému:

uname -r

Vytvořím a aktualizuji konfigurační soubor pro novou položku:

# cp /etc/grub.d/40_custom /etc/grub.d/09_swraid1_setup
# editor /etc/grub.d/09_swraid1_setup

Soubor by měl vypadat nějak takto:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry 'Raid Temp Boot' --class gnu-linux --class gnu --class os {
    insmod mdraid1x
    insmod ext2
    set root='(md/0)'
    linux   /boot/vmlinuz-4.9.0-6-amd64 root=/dev/md0 ro quiet
    initrd  /boot/initrd.img-4.9.0-6-amd64
}

Aktualizovat GRUB:

# update-grub
# update-initramfs -u

5. Zkopírování dat

Připojíme si pole do dočasného umístění:

# mkdir /mnt/md0
# mount /dev/md0 /mnt/md0

Ověření:

# mount

Zkopírovat všechna data:

# cp -dpRx / /mnt/md0

Instalace GRUBu:

# grub-install /dev/sda
# grub-install /dev/sde

6. Upravit přípojné body v /etc/fstab

Zjistím si jaké UUID pole má:

# blkid /dev/md0 /dev/md1

Upravím nastavení, /dev/md0 a swap na /dev/md1:

# editor /etc/fstab

Note

Lze použít i /dev/md0 a /dev/md1 místo UUID

7. Restartovat

# reboot

Po restartu ověřit:

# cat /proc/mdstat
# mount

8. Upravit starý disk

Změnit typy oddílů na linux raid autodetect (fd)

# fdisk /dev/sda
# mdadm --add /dev/md0 /dev/sda1
# mdadm --add /dev/md1 /dev/sda2

Ověřit:

# cat /proc/mdstat

Upravíme konfiguraci mdadm (tady jsem měl výsledek stejný jako předtím v bodu 3)

# cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.bak
# mdadm --examine --scan >> /etc/mdadm/mdadm.conf

Warning

Je potřeba upravit případné duplicity!

9. Smazat dočasnou položku v GRUB menu

# rm /etc/grub.d/09_swraid1_setup

Aktualizace GRUBu:

# update-grub
# update-initramfs -u
# grub-install /dev/sda
# grub-install /dev/sde

10. Synchronizace pole

# cat /proc/mdstat
# mdadm --detail /dev/md0
# mdadm --detail /dev/md1

11. Restart

# reboot