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.