Linux boot disk met lvm online vergroten

  LVM / filesystemen / RAID / DISK

als je een disk vergroot hebt of via de hypervisor (ESX/KVM, enz) of bv een SAN disk en deze heeft partities zoals bv de boot disk van een linux systeem met LVM dan kan je de partities ook online vergroten. dit werkt ook met filesystemen die direct op een partitie liggen. Let op je kan alleen vergroten niet online verplaatsen. in die voorbeeld gaan we uit van een linux machine waar de boot disk van 8G vergroot is naar 12G. dit is een KVM client maar zoals gezegd werkt dit ook voor ESX clients. de huidige pv is 6.5G

$ sudo pvs 
  PV         VG          Fmt  Attr PSize PFree
  /dev/vda2  cl          lvm2 a--  6.50g    0 

deze ligt op de 2de partitie van /dev/vda. we gaan nu met fdisk de 2de partitie verwijderen en direct weer aan maken van het zelfde type en op de zelfde positie beginnen. de partitie info staat op de eerste sector van de disk en is feitelijk niets anders als een index die alleen gelezen word door de kernel bij het starten of als je er een opdracht voor geeft. zolang je dat niet doet is er niets aan de hand en zal alles gewoon door draaien.

als eerste fdisk starten met de juiste disk. daarna p om de huidige partitie te bekijken.

$ sudo fdisk  /dev/vda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p

Disk /dev/vda: 12.9 GB, 12884901888 bytes, 25165824 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000168aa

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048     2099199     1048576   83  Linux
/dev/vda2         2099200    15728639     6814720   8e  Linux LVM

zoals je kan zien is de size 12.9GB wat belangrijk is de start sector van partitie 2 (2099200) het is belangrijk dat je de partitie die je weer creëert op de zelfde plek begint en zoals in dit geval een primaire is. heb je hier een extended partitie staan moet je dus beide weg gooien en beide weer aan maken. delete de 2de partitie door d te kiezen gevolgd door 2.
dan maak je een nieuwe door n te kiezen. met de juiste waardes in mijn voorbeeld dus een primair na het aanmaken kies nog even de juiste type t voor lvm 8e

Command (m for help): d 
Partition number (1,2, default 2): 2
Partition 2 is deleted

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 
First sector (2099200-25165823, default 2099200): 
Using default value 2099200
Last sector, +sectors or +size{K,M,G} (2099200-25165823, default 25165823): 
Using default value 25165823
Partition 2 of type Linux and of size 11 GiB is set

Command (m for help): t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

nog even een laatste check of alles goed staan, en als alles goed is wegschrijven naar disk met de w van wirte

Command (m for help): p

Disk /dev/vda: 12.9 GB, 12884901888 bytes, 25165824 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000168aa

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048     2099199     1048576   83  Linux
/dev/vda2         2099200    25165823    11533312   8e  Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

de juiste indeling staat nu op de disk. nu alleen nog de kernel op de hoogte brengen. dat kan met partprobe. soms zoals in dit geval wil partprobe niet werken en krijg je een foutmelding.

$ sudo partprobe

als dit gebeurt is nog lvm op de hoogte brengen dat er iets gewijzigd is.

 
$ sudo pvresize /dev/vda2
  Physical volume "/dev/vda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized
$ sudo pvs 
  PV         VG          Fmt  Attr PSize  PFree
  /dev/vda2  cl          lvm2 a--  11.00g 4.50g
  /dev/vdb   vg_dataintr lvm2 a--   8.00g    0 
  /dev/vdc   vg_dataintr lvm2 a--   8.00g    0 
  /dev/vdd   vg_dataintr lvm2 a--   8.00g    0 

disk vergroot.