LVM – 2 (přidat, odebrat, zvětšit, zmenšit)

Minule jsme si ukázali, jak v LVM vytvořit jednoduchý oddíl, a použili jsme jen jeden pevný disk. Dnes se naučíme přidávat další disky a zvětšíme existující oddíl i se souborovým systémem. A také naopak, pevný disk z LVM odebereme, poté co zmenšíme systém souborů a logický oddíl.

Přidání dalšího pevného disku

Z minulého dílu máme v LVM jeden disk o velikosti 8 GB a oddíl video o velikosti 2 GB. Teď přidáme další disk o velikosti 6 GB a oddíl video zvětšíme na 10 GB (tedy na velikost větší, než je velikost největšího PV. Jak již bylo uvedeno minule, LVM řeší distribuci místa transparentně a není třeba se zabývat velikostí jednotlivých PV ve vztahu k logickým oddílům. (Předchozí informace není zcela správná pro zrcadlený oddíl, ale to si vysvětlíme později.) Směrodatné (pro velikost nového oddílu či zvětšení stávájícího) je volné místo ve skupině oddílů, které zjistíme pomocí vgdisplay "jméno skupiny".

Začneme tedy vytvořením fyzického oddílu na novém disku:

[root@centos ~]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created

A přidáme tento oddíl do skupiny data. K tomu slouží příkaz vgextend s parametry jména skupiny a diskovým zařízením.

[root@centos ~]# vgextend data /dev/sdb
  Volume group "data" successfully extended

Nyní už má skupina oddílů data velikost 8+6 = 14 GB, tedy volné místo 12 GB. Výpis z vgdisplay data to potvrzuje:

[root@centos ~]# vgdisplay data
  --- Volume group ---
  VG Name               data
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               13.99 GB
  PE Size               4.00 MB
  Total PE              3582
  Alloc PE / Size       512 / 2.00 GB
  Free  PE / Size       3070 / 11.99 GB

  VG UUID               5N1yvF-YMBO-301k-zBIg-ssY1-sLCC-kV8GwA

Zvětšení oddílu

Zvětšení logického oddílu má na starosti příkaz lvextend, parametrem je buď nová velikost velikost (--size 10G), nebo přírůstek (--size +8G) a samozřejmě také cesta k logickému oddílu, který chceme zvětšit. Konkrétně pro oddíl video z našeho příkladu:

[root@centos ~]# lvextend --size 10G /dev/data/video
  Extending logical volume video to 10.00 GB
  Logical volume video successfully resized

Zvětšení ext3

Následuje zvětšení systému souborů. Pro změnu velikosti ext3 slouží nástroj resize2fs a zvětšení lze provést i s připojeným souborových systémem – celé zvětšení oddílu (tedy přidání fyzického oddílu, zvětšení skupiny, zvětšení oddílu i systému souborů) lze provést za běhu systému bez jakéhokoliv dopadu na běžící služby, což je velmi výhodné.

[root@centos ~]# resize2fs /dev/data/video
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/data/video is mounted on /mnt; on-line resizing required
Performing an on-line resize of /dev/data/video to 2621440 (4k) blocks.
The filesystem on /dev/data/video is now 2621440 blocks long.

Zvětšení XFS

Souborový systém XFS umožňuje pouze zvětšení, a to pomocí prográmku xfs_growfs. Souborový systém musí být připojený pro zápis.

[root@centos ~]# xfs_growfs /dev/data/video
meta-data=/dev/data/video        isize=256    agcount=8, agsize=65536 blks
         =                       sectsz=512   attr=0
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks, unwritten=1
naming   =version 2              bsize=4096
log      =internal               bsize=4096   blocks=2560, version=1
         =                       sectsz=512   sunit=0 blks, lazy-count=0
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 524288 to 2621440

Zvětšení JFS

JFS nemá na zvětšení zvláštní nástroj, zvětšuje se pomocí parametrů připojení, což lze též udělat za běhu systému. Pro přehlednost si ukážeme celý postup zvětšení oddílu s JFS i s uvedením velikosti systému souborů:

[root@centos ~]# df -h /mnt
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/data-video
                      2.0G  388K  2.0G   1% /mnt

[root@centos ~]# lvextend --size 10G /dev/data/video
  Extending logical volume video to 10.00 GB
  Logical volume video successfully resized

[root@centos ~]# mount /mnt -o remount,resize

[root@centos ~]# df -h /mnt
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/data-video
                       10G  1.4M   10G   1% /mnt

Zvětšení ReiserFS

ReiserFS má pro zvětšení program resize_reiserfs. Spuštěný bez parametrů zvětší velikost FS na velikost oddílu.

[root@centos ~]# resize_reiserfs /dev/data/video
resize_reiserfs 3.6.19 (2003 www.namesys.com)

resize_reiserfs: On-line resizing finished successfully.

Zmenšení systému souborů

Při zvětšování jsme nejprve zvětšili logický oddíl a poté souborový systém s tím, že nástroj pro zvětšení FS si velikost oddílu zjistil sám. Zmenšení je o něco komplikovanější. Nejprve je nutné zmenšit systém souborů (pokud to umožňuje – např. XFS zmenšení vůbec nepodporuje) a poté zmenšit oddíl. Zde je už nutné novou velikost uvádět.

Při zmenšení je třeba dávat pozor, aby logický oddíl nebyl menší, než je velikost souborového systému! Osobně postupuji tak, že souborový systém zmenším na velikost o něco menší než požaduji, poté zmenším oddíl na požadovanou velikost a následně nechám FS zvětšit na velikost oddílu (kterou už si ten příslušný nástroj zjistí sám). Doporučuji mít data ze souborového systému zálohovaná (toto by mělo být pravidlem při jakékoliv manipulaci se souborovým systémem).

V příkladech si ukážeme, jak zmenšit jednotlivé souborové systémy souborů na velikost 5 GB, poté zmenšíme logický oddíl video a nakonec ze skupiny odstraníme fyzický oddíl a tím vlastně i jeden disk.

Zmenšení ext3

Ke zmenšení velikosti souborového systému ext3 opět slouží resize2fs s prvním parametrem uvádejícím cestu k oddílu a dále novou velikostí. Souborový systém nesmí být připojený a před samotným zmenšením je nutné souborový systém zkontrolovat (fsck.ext3 -f /dev/data/video).

[root@centos ~]# resize2fs /dev/data/video 5G
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/data/video to 1310720 (4k) blocks.
The filesystem on /dev/data/video is now 1310720 blocks long.

Poznámka z praxe: Často je rychlejší vytvořit nový oddíl (pokud je dostatek místa) o požadované velikosti, data přesunout a starý oddíl zrušit. Kontrola 1TB oddílu (ext3) a následné zmenšení na 600 GB by trvalo déle, než by trval přesun 550 GB dat.

Zmenšení ReiserFS

Opět (jako ke zvětšení) k němu slouží nástroj resize_reiserfs, který je na CentOS 5.2 (v době psaní článku nejnovější) v repozitáři CentOSPlus ve verzi 3.6.19, a při pokusu o zmenšení souborového systému zobrazí varování, že zmenšení je zatím ve fázi testování.

Poznámka nikoliv pod čarou: Red Hat, ze kterého CentOS vychází, oficiálně podporuje pouze souborový systém ext3, neoficiálně lze použít i další právě z repozitáře CentOSPlus s použitím tamního jádra. Právě na tomto systému testuji postupy do této série článků.

ReiserFS tedy zmenšíme pomocí reiserfs_resize s parametrem -s5G, který určuje novou velikost. Výpis i s výše zmíněným varováním:

[root@centos ~]# resize_reiserfs -s5G /dev/data/video
resize_reiserfs 3.6.19 (2003 www.namesys.com)

You are running BETA version of reiserfs shrinker.
This version is only for testing or VERY CAREFUL use.
Backup of you data is recommended.

Do you want to continue? [y/N]:y
Processing the tree: 0%....20%....40%....60%....80%....100%

nodes processed (moved):
int        0 (0),
leaves     1 (0),
unfm       0 (0),
total      1 (0).

check for used blocks in truncated region

ReiserFS report:
blocksize             4096
block count           1310720 (2621440)
free blocks           1302469 (2613149)
bitmap block count    40 (80)

Syncing..done

resize_reiserfs: Resizing finished successfully.

XFS a JFS zmenšení nepodporují. Ostatně, zmenšení souborového systému je velice vyjímečná operace a vhodným rozvržením velikostí oddílů se jí lze vyhnout. Jak jsme si ukázali, zvětšení oddílu v LVM je velmi snadné a rychlé. Lze jej tedy provádět průběžně podle potřeby místa

Zmenšení logického oddílu

Po zmenšení systému souborů už je možné zmenšit samotný oddíl. Zde je opravdu nutné dávat pozor na novou velikost oddílu, ta nesmí být menší, než je velikost souborového systému.

Ke zmenšení logického oddílu slouží lvreduce s parametrem -- size, který udává novou velikost. A samozřejmně také zmenšovaný oddíl:

[root@centos ~]# lvreduce --size 5G /dev/data/video
  WARNING: Reducing active logical volume to 5.00 GB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce video? [y/n]: y
  Reducing logical volume video to 5.00 GB
  Logical volume video successfully resized

Odebrání fyzického oddílu (pevného disku)

Při odebrání fyzického oddílu (v tomto příkladu celého pevného disku), je nutné, aby byl daný PV prázdný. Pro přesun dat z fyzického oddílu jinam slouží příkaz pvmove. Lze určit, na které konkrétní fyz. oddíly se mají data přesunout, nebo to nechat na LVM. Budeme odebírat disk /dev/sda. Přesun je možno přerušit (např. při výpadku napájení apod.), další spuštění pvmove bude plynule pokračovat v přesunu:

[root@centos ~]# pvmove /dev/sda
  Detected pvmove in progress for /dev/sda
  /dev/sda: Moved: 100.0%

Dalším krokem při odebírání fyz. oddílu je zmenšení skupiny oddílů příkazem vgreduce s parametry jméno skupiny a cesta k fyzickému uddílu:

[root@centos ~]# vgreduce data /dev/sda
  Removed "/dev/sda" from volume group "data"

Zbývá už jen odstranit fyz. oddíl:

[root@centos ~]# pvremove /dev/sda
  Labels on physical volume "/dev/sda" successfully wiped

Tímto je odebrání fyzického oddílu hotové. Opět, jako většina operací v LVM, lze odebrat fyzický oddíl za běhu systému. Pokud konstrukce počítače umožnuje připojovat a odpojovat disky za běhu (hot-swap), lze takto jednoduše zvětšit diskový prostor odstraněním malého disku z LVM, jeho fyzickým vyjmutím, vložením většího disku, přidáním do skupiny oddílů a vytvořením nových (nebo zvětšením původních) logických oddílů.

Napsáno pro abclinuxu.cz

Příspěvek byl publikován v rubrice CentOS, Linux, LVM, Systémy souborů. Můžete si uložit jeho odkaz mezi své oblíbené záložky.