Rozšíření filesystému po zvětšení (přidání nového) disku na linuxu (LVM)

POZOR!! Popsané operace jsou pouze ilustrační: nevhodné použití nebo či neodborný zásah může způsobit částečnou nebo úplnou ztrátu dat a v některým případech může dokonce ohrozit funkčnost virtuálního stroje. Před akcí si udělejte snapshot serveru (lze jen u PRO serverů)
Nedoporučujeme používat tento postup, pokud nemáte příslušné odborné znalosti. Naše společnost odmítá veškerou odpovědnost za případné problémy způsobené nesprávným použitím tohoto návodu.

 

Nejprve se připojte k serveru přes SSH.

Vzorový stav filesystému je tento
Souborový systém     Velikost Užito Volno Uži%  Připojeno do
/dev/mapper/vg-lv_root   7,5G  1,2G  6,0G  17%  /
tmpfs                    495M     0  495M   0%  /dev/shm
/dev/sda1                485M   68M  392M  15%  /boot
Ffilesystém rootu serveru (/) je vytvořen na  /dev/mapper/vg-lv_root (Logical volume, která je součástí skupiny vg a pojmenovaná lv_root). Po rozšíření primárního disku například na 20 GB se po nastavení velikosti v Cloud Control Panelu se filesystém automaticky nezvětší. Dojde pouze k navýšení diskového prostoru. Protože jsou použity LVM, lze za běhu rozšířit. Celá akce probíhá v těchto krocích:

1. Rozdělení disku – přidání oddílu

Přidáváte-li nový disk, je postup identický s tím rozdílem, že místo /dev/sda vyberete nový disk (označovaný /dev/sdb, /dev/sdc...)

K rozdělení použijeme program fdisk. Další možnost je cfdisk (doporučujeme - práce s ním je snažší a mnohem intuitivnější). Následující postup platí pro fdisk.
Aktuální tabulku rozdělení zjistíme příkazem p (print).

# fdisk /dev/sda
Příkaz (m pro nápovědu): p
Zařízení Zavádět   Začátek       Konec    Bloky    Id  Systém
/dev/sda1   *           1          64      512000   83  Linux
/dev/sda2              64        1306     9972696   8e  Linux LVM
Nový oddíl se vytvoří příkazem n (new), oddíl bude primární p. Velikosti zvolíme implicitní. (POZOR: plánujete-li další upgrady, doporučujeme vytvořit oddíl rozšířený - nebudete v budoucnu omezeni počtem oddílů - tzn 4 primární)
Příkaz (m pro nápovědu): n
Příkaz
   e   rozšířený diskový oddíl
   p   primární diskový oddíl (1-4)
p
Číslo diskového oddílu (1-4): 3
První cylindr (1306-2610, implicitně 1306):
Používám implicitní hodnotu 1306
Poslední cylindr, +cylindry nebo +velikost{K,M,G} (1306-2610, implicitně 2610):
Používám implicitní hodnotu 2610
Výpis nového rozdělení ukáže nový oddíl /dev/sda3
Příkaz (m pro nápovědu): p

Zařízení Zavádět   Začátek       Konec    Bloky    Id  Systém
/dev/sda1   *           1          64      512000   83  Linux
/dev/sda2              64        1306     9972696   8e  Linux LVM
/dev/sda3            1306        2610    10479105   83  Linux
U nově vytvořeného oddílu (číslo 3) nastavíme příznak, že se jedná o LVM. Provede se příkazem t a kód LVM je 8e
Příkaz (m pro nápovědu): t
Číslo diskového oddílu (1-4): 3
Šestnáctkově (L vypíše kódy):8e
Typ diskového oddílu 3 byl změněn na 8e (Linux LVM)
Nakonec příkazem w (write) zapíšeme tabulku rozdělení.
Příkaz (m pro nápovědu): w
Tabulka rozdělení disku byla změněna!
Volám ioctl() pro znovunačtení tabulky rozdělení disku.

VAROVÁNÍ: Znovunačtení tabulky rozdělení disku selhalo s chybou 16: Zařízení nebo zdroj jsou používány.
Jádro stále používá starou tabulku. Nová tabulka se použije až po příštím
restartu nebo po té, co spustíte partprobe(8) nebo kpartx(8).
Synchronizují se disky.
# partprobe
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Zařízení nebo zdroj jsou používány).  As a result, it may not reflect all of your changes until after reboot.
Tabulku rozdělení nelze zapsat, jestliže se používá. Selže-li příkaz partprobe, stačí server rebootovat.
Pokud system příkaz partprobe nemůže nalézt, stačí nainstalovat balík parted
# yum install parted
a pokus opakovat.


2. Vytvoření physical volume na oddílu /dev/sda3
# pvcreate /dev/sda3
  Writing physical volume data to disk "/dev/sda3"
  Physical volume "/dev/sda3" successfully created
Nyní máme k dispozici 2 oddíly. První (/dev/sda2) je již součástí skupiny vg a druhý (/dev/sda3) je nový.
# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg
  PV Size               9,51 GiB / not usable 3,00 MiB
  Allocatable           yes (but full)
  PE Size               4,00 MiB
  Total PE              2434
  Free PE               0
  Allocated PE          2434
  PV UUID               NiSuLv-fH2Z-eO4H-JoJ2-9yuG-fWvW-gmuJak

  "/dev/sda3" is a new physical volume of "9,99 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda3
  VG Name
  PV Size               9,99 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               DMfFH9-8zzw-d2AY-xg21-tC6o-7HGA-SyxljY

3. Přidání oddílu /dev/sda3 do skupiny vg
# vgextend vg /dev/sda3
  Volume group "vg" successfully extended
pvdisplay pak ukáže, že oba oddíly jsou již součástí skupiny.


4. Zvětšení logického oddílu

jehož filesystém je připojen jako /. Název oddílu zjistíme přes lvdisplay
# lvdisplay
  --- Logical volume ---
  LV Name                /dev/vg/lv_root
  VG Name                vg
  LV UUID                tzVjEt-GuMy-W8T2-G86i-YDOV-XoG7-8zCpOT
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                7,57 GiB
  Current LE             1938
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
lvextend -l +100%FREE /dev/vg/lv_root
  Extending logical volume lv_root to 17,56 GiB
  Logical volume lv_root successfully resized
lvdisplay
  --- Logical volume ---
  LV Name                /dev/vg/lv_root
  VG Name                vg
  LV UUID                tzVjEt-GuMy-W8T2-G86i-YDOV-XoG7-8zCpOT
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                17,56 GiB
  Current LE             4496
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

5. Rozšíření filesystému

Poslední krok je rozšíření filesystému na celý oddíl. To se provede příkazem resize2fs. Příkaz spuštěný bez parametru rozšíří filesystém na maximální možnou velikost
# resize2fs /dev/mapper/vg-lv_root
resize2fs 1.41.12 (17-May-2010)
Systém souborů v /dev/mapper/vg-lv_root je připojen do /,
požadována změna velikosti za běhu.
old desc_blocks = 1, new_desc_blocks = 2
Provádím změnu velikosti za běhu /dev/mapper/vg-lv_root na 4603904 (4k) bloků.
Systém souborů na /dev/mapper/vg-lv_root je nyní 4603904 bloků dlouhý.

6. Kontrola

před rozšířením:
# df -h
Souborový systém     Velikost Užito Volno Uži% Připojeno do
/dev/mapper/vg-lv_root    7,5G  1,2G  6,0G  17% /
tmpfs                    495M     0  495M   0% /dev/shm
/dev/sda1                485M   68M  392M  15% /boot
po rozšíření je volné místo na / o 10GB větší.
# df -h
Souborový systém    Velikost Užito Volno Uži% Připojeno do
/dev/mapper/vg-lv_root   18G  1,2G   16G   8% /
tmpfs                   495M     0  495M   0% /dev/shm
/dev/sda1               485M   68M  392M  15% /boot