ObecnéNávody

Raid LV Mvetsi Disky

Postup při výměněn disků za větší u raid+lvm.

Situace: Máme RAID1 a na něm LVM, kde dochází místo. Disk je rozdělen na dva diskové oddíly:

  • Na začátku oddíl pro boot označený jako md0,
  • a zbytek disku pro LVM označený jako md1.

Koupíme nové disky a nabízejí se dvě varianty jak využít prostor, který je navíc:

  • udělat z něj nový diskový oddíl a na něm nový RAID1 md2, na něm nový fyzický oddíl pro LVM a ten přidat do stávající LVM skupiny.
  • vytvořit větší prostor pro md1 už při výměně disků. md0 tedy nechat stejně velký a md1 v maximální velikosti.

Druhá varianta se jeví jako logičtější, ale budeme mít velmi dlouhé časy pro resynchronizaci pole. Navíc při této variantě pracujeme s živými daty, což je další riziko. Nicméně po spojení fyzických prostorů u první varianty stejně do stávajících dat šťouchneme, takže případný výpadek md2 bude mít stejně za následek nefunkčnost souborových systémů, jejichž data aspoň částečně v tomto fyzickém prostoru byla uložena.

Nakonec se přikláním k variantě druhé se zvětšeným md1. Časy na resynchronizaci by nemusely být fatální, kdyby pole drželo a nerozpadávalo se.

Varianta 1 - prostor navíc jako nový diskový oddíl

Výměna prvního disku

Jeden z disků nastavit jako fail a remove v mdadm.

Zastavit server a disk vyměnit.

Na novém disku udělat stejné diskové oddíly jako na původním s tím, že na konci zbyde volné místo.

(případně už teď vytvořit i diskové oddíly na volném místě)

Nové oddíly přidat do raidu --add.

Zapsat zavaděč do MBR nového disku.

Výměna druhého disku

Dtto první disk.

Využití nového prostoru na konci disku

Vytvoření diskových oddílů

Nebyly-li vytvořeny hned při výměně, tak teď znovu:

  • fail/remove všechny oddíly na jednom disku,
  • dále fdisk zrušit diskové oddíly a vytvořit nové diskové oddíly pro raid.
  • --re-add původní diskové oddíly. Nové oddíly zatím nic.

Přidání nového prostoru

 mdadm --create /dev/md2 -n 2 -l 1 /dev/sda3 /dev/sdb3
 # přidat info o nově vytvořeném raidu do /etc/mdadm/mdadm.conf
 mdadm --examine --scan

 pvcreate /dev/md2
 vgextend g1 /dev/md2

 lvextend -L +1G /dev/mapper/g1-home
 resize2fs /dev/mapper/g1-home

Tedy: Nejprve vytvoříme raid z nových diskových oddílů (mdadm --create), pak nový raid označíme pro použití v LVM (pvcreate), dále jej přidáme do stávající skupiny LVM (vgextend).

Tím je "podklad" hotový.

Násedně si zvětšíme LVM oddíly, jak potřebujeme (lvextend, resize2fs).

A hotovo.

Varianta 2 - prostor navíc jako rozšíření stávajícího oddílu

1. Odpojit stávající diskové oddíly na jednom disku:

 # mdadm /dev/md0 --fail /dev/sda1
 # mdadm /dev/md0 --remove /dev/sda1
 # mdadm /dev/md1 --fail /dev/sda2
 # mdadm /dev/md1 --remove /dev/sda2

2. Disk vyměnit na nový, větší

3. vytvořit diskové oddíly (c)fdiskem (sda1 bude pro boot, tedy stejný, sda2 využije celou kapacitu disku). Nastavit jako typ Linux Raid Autodetect (xFD).

4. resynchronizovat (v obou krocích počkat na resynchronizaci)

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

5. Opakovat body 1-4 s diskem sdb

Po synchronizaci budeme mít větší diskové oddíly, ale raid bude stále ukazovat původní velikost (mdadm --detail).

Raid natáhneme příkazem:

 mdadm --grow /dev/md1 --size max

Nyní je raid přes celé disky, ale LVM má svůj fyzický prostor původní - malý. Provedeme příkaz:

 pvresize /dev/md1

Nyní je už vše v pořádku, protože LVM skupina se automaticky natáhne přes nový, větší fyzický prostor na maximální velikost - už nemusíme nic podnikat. Nyní je tedy vše připraveno.

Poznámka: Stalo se mi, že jsem při výměně nastavil oddíly pro md1 v původní velikosti. Když jsem pak oddíl na disku v fdisku zvětšil (zrušit a vytvořit nový, větší), tak systém stále hlásil původní velikost pro RAID (mdadm --detail) a nechtěl se zvětšit. Vlastně mdadm ... --add ... zafungovalo jako --re-add. Tady pomůže vymazání superbloku - takže po změně velikosti diskových oddílů na plnou velikost ještě zadat

 mdadm --zero-superblock /dev/sdX2

a teprve potom

 mdadm /dev/md1 --add /dev/sdX2

Nyní již --add funguje jak má a nechová se jako --re-add.