Domů > Linuxové zápisky pro správce > LVM: práce se snapshoty

LVM: práce se snapshoty

Tento návod slouží jako vodítko pro práci s již funkčním LVM. Samotná instalace LVM zde zmíněna není. Časem snad ale bude:-)

LVM (Logical Volume Management) je v Linuxu nástroj, jak spojovat logická zařízení do větších celků. Využívá se pro vytváření velkých souborových systémů, pro možnost plynulého zvyšování kapacity souborových systémů bez nutnosti kopírování dat, pro možnost vyměňování disků, vytváření snímků souborových systémů a podobně.

LVM pracuje s PV (Physical Volume)VG (Volume Group) a LV (Logical Volume). Základem LVM jsou bloková zařízení (PV), ze kterých se pak sestavují svazky (VG) a na nich se vytvářejí logické jednotky (LV), která vystupují jako bloková zařízení a lze je tedy snadno naformátovat a použít jako nosné médium pro souborový systém.

Zmenšení LV

Budeme zmenšovat LV (Logical Volume) /dev/LVM-sda2-sdb2/home, aby nám uvolnila místo na disku

Odpojíme /home

umount /home

pokud je „device busy“, zastavit sluzby (samba, dovecot, nfs-kernel-server, tftpd-hpa atd.)

Kontrola disku

e2fsck -f  /dev/mapper/LVM--sda2--sdb2-home   # nebo napr. "sda2"

Zmenšení filesystemu ext3

resize2fs -p /dev/mapper/LVM--sda2--sdb2-home 195G

Zmenšení LV (fs ext3 je na LV, musí být tudíž o trošku menší než LV)

lvreduce --size 200G /dev/LVM-sda2-sdb2/home

Roztažení fs na celou LV

resize2fs /dev/mapper/LVM--sda2--sdb2-home

Opětovné přimountování dle parametrů v /etc/fstab

mount -a

Zvětšení LV

Budeme zmenšovat LV (Logical Volume) /dev/LVM-sda2-sdb2/root

Může zůstat přimountovaná.

Pokud použijeme znaménko +, přidáváme velikost, pokud ne, velikost je výsledná

lvextend --size +20G /dev/LVM-sda2-sdb2/root

Tímto jsme zvětšili LV, nyní je potřeba na celou její délku roztáhnout fs (filesystem)

resize2fs /dev/mapper/LVM--sda2--sdb2-root

Kontrola stavu a volného místa ve VG

Tímto zkontrolujeme stav LV ve VG, vč. nevyužitého místa

vgdisplay

Vytvoření nové LV

Příkazem vgdisplay jsme zjistili, že máme ještě 11,2G volného místa na VG LVM-sda2-sdb2 a tak si na něj vytvoříme novou LV se jménem var-log

lvcreate -L 11,20G -n var-log LVM-sda2-sdb2

a nakonec naformátujeme na fs ext4

mkfs.ext4 /dev/LVM-sda2-sdb2/var-log

Odstranění stávající LV

lvremove -f /dev/LVM-sda2-sdb2/var-log

Vytvoření LV a snapshotu skriptem

Na disku musíme přidat nový oddíl, pro ukládání snapshotů. V tomto návodu se jedná o oddíly v LVM. Přidávat tedy budeme LV do VG /dev/mapper/LVM–sda2–sdb2-home.

V /etc/init.d mám skripty na vytvoření snapshotu „snapshot-home“ a „snapshot-root“. Když jej vytvořím, můzu potom vytvořit (zkopírovat) jeho konzistentní zálohu.

Snapshoty vytvářím pomocí tohoto skriptu, po zadání

/etc/init.d/snapshot-home start

se vytvoří LV se snapshotem home-ss o velikosti 14GB na VG /dev/LVM-sda2-sdb2 a přimountuje se do /mnt/home-ss. Tzn., že ve VG musí být dostatečné místo na LV se snapshotem.

po zadání

/etc/init.d/snapshot-home stop

se zruší LV home-ss se snapshotem a odmountuje se přípojný bod /mnt/home-ss

#!/bin/sh
zarizeni="/dev/LVM-sda2-sdb2/home";     # LVM logický oddíl
pripojny_bod="/mnt/home-ss";            # Adresář, kam vytvořený obraz připojíme
velikost_obrazu="14G";                  # tolik změn lze na disku udělat, než se snapshot zaplní na 100%
nazev_obrazu="home-ss";                 # Název LVM obrazu
nazev_vg="LVM-sda2-sdb2";               # LVM skupina svazků (VG)

case "$1" in
    start)
        echo "Vytvářím obraz disku";
        /sbin/lvcreate -s -L ${velikost_obrazu} -n ${nazev_obrazu} ${zarizeni} &&
        mkdir ${pripojny_bod} &&
        mount /dev/${nazev_vg}/${nazev_obrazu} ${pripojny_bod};

;;
    restart)
        $0 stop
        $0 start
;;
    stop)
        echo "Ruším obraz disku";
        umount ${pripojny_bod} &&
        /sbin/lvremove -f /dev/${nazev_vg}/${nazev_obrazu} &&
        rmdir ${pripojny_bod} ;
;;
    *)
        echo "Použijte jeden z těchto parametrů: $0 {start|stop|restart}"
        exit 3
;;
esac

Další užitečné příkazy

Sada dalších užitečných příkazů pro administraci LVM

Kontrola LVM

vgscan
vgs
pvs
lvs
lvdisplay
pvdisplay

Připojení LVM

vgscan --mknodes
vgchange -ay
mount /dev/vg/home /mnt/home

Citace z diskuzního fóra:

Pokud chci vytvořit snapshot, musím mít pro něho ve VG vytvořenu prázdnou LV?
ANO

Pokud ano, musí být stejně velká jako zálohovaná LV nebo pouze taková, kolik obsahuje zdrojová LV data?
NE, musi byt tak velka, kolik predpokladam, ze ubyde dat z puvodni LV, ze ktere jsem provedl snapshot

Abych mohl zálohu uložit např. na externí médium, musím LV se snapshotem namountovat napr. do LVM a pak ji vykopírovat?
Mohu namountovat kamkoliv, v tom pripade bude jiz zaloha po zkopirovani odpovidat opravdove velikosti „snapshotovanych“ dat

Co vubec ta zaloha obsahuje? To je nějaký „nečitelný soubor nebo přímo ta má data?
Pri namountovani „se tvari“ jako zalohovana data .. tj. vidim soubory i adresare

Mohu vytvořit snapshot celého disku? Respektive alespoň celé VG, tzn. oddílu s LVM?
NE

Zdroje informací

http://www.abclinuxu.cz
http://www.abclinuxu.cz/blog/root_at_heron/2008/5/zmenseni-ext3
http://www.pslib.cz/ke/LVM_v_Linuxu