Partition online mit parted vergrößern

Ubuntu installiert das Physical Volume bei der Erstinstallation in eine separate (zweite) Partition, da die erste Partition ohne LVM für /boot eingerichtet wird:

root@ubuntu1604lts:~/# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1 1024M  0 rom
vda           253:0    0   15G  0 disk
├─vda1        253:1    0  487M  0 part /boot
└─vda2        253:2    0  7,5G  0 part
  ├─vg00-root 252:0    0  1,9G  0 lvm  /
  ├─vg00-swap 252:1    0  1,9G  0 lvm  [SWAP]
  ├─vg00-tmp  252:3    0  488M  0 lvm  /tmp
  ├─vg00-var  252:4    0  1,9G  0 lvm  /var
  └─vg00-home 252:5    0  1,5G  0 lvm  /home
vdb           253:16   0   20G  0 disk
└─vg01-opt    252:2    0   10G  0 lvm  /opt

Hat man bei der Ersteinrichtung zu knapp gedacht, kann es passieren, dass die root-Partition vollläuft:

root@ubuntu1604lts:~/# df -h
Dateisystem           Größe Benutzt Verf. Verw% Eingehängt auf
udev                   981M       0  981M    0% /dev
tmpfs                  201M    3,2M  197M    2% /run
/dev/mapper/vg00-root  1,8G    1,8G     0  100% /
tmpfs                 1001M       0 1001M    0% /dev/shm
tmpfs                  5,0M       0  5,0M    0% /run/lock
tmpfs                 1001M       0 1001M    0% /sys/fs/cgroup
/dev/vda1              464M    106M  331M   25% /boot
/dev/mapper/vg00-tmp   465M    2,3M  434M    1% /tmp
/dev/mapper/vg00-home  1,5G    2,3M  1,4G    1% /home
/dev/mapper/vg01-opt   9,8G     23M  9,2G    1% /opt
/dev/mapper/vg00-var   1,8G    630M  1,1G   37% /var
tmpfs                  201M       0  201M    0% /run/user/0


Wenn man jetzt für die VM die Festplatte vergrößert, ändert das leider nichts am Dateisystem, da die Partition und damit das LVM Physical Volume gleich groß geblieben ist:

root@ubuntu1604lts:~/# pvdisplay /dev/vda2
  --- Physical volume ---
  PV Name               /dev/vda2
  VG Name               vg00
  PV Size               7,52 GiB / not usable 3,00 MiB
  Allocatable           yes (but full)
  PE Size               4,00 MiB
  Total PE              1925
  Free PE               0
  Allocated PE          1925
  PV UUID               ubAhLP-Od1g-7U3V-qj7O-dAws-CLuc-ePRnQ9

Jetzt also der große Moment, die benutzte Partition online zu vergrößern, ohne dass die vorhandenen Daten Schaden nehmen. Dazu eignet sich hervorragend parted (auch ohne GUI = gparted). Dazu kann man den dialoggesteuerten Modus starten und sich erst mal ein paar Informationen anzeigen lassen:

root@ubuntu1604lts:~/# parted
GNU Parted 3.2
/dev/mapper/vg00-var wird verwendet
Willkommen zu GNU Parted! Rufen Sie »help« auf, um eine Liste der verfügbaren Befehle zu erhalten.

(parted) select /dev/vda
/dev/vda wird verwendet
(parted) unit MiB
(parted) print free
Modell: Virtio Blockorientiertes Gerät (virtblk)
Festplatte  /dev/vda:  15360MiB
Sektorgröße (logisch/physisch): 512B/512B
Partitionstabelle: msdos
Disk-Flags:

Nummer  Anfang   Ende      Größe    Typ      Dateisystem   Flags
        0,03MiB  1,00MiB   0,97MiB           Freier Platz
 1      1,00MiB  488MiB    487MiB   primary  ext4          boot
 2      488MiB   8191MiB   7703MiB  primary                LVM
        8191MiB  15360MiB  7169MiB           Freier Platz


Wenn standardmäßig ein anderes, als die gewünschte Partition verwendet wird, muss man mit select erst in die entsprechende wechseln. Mit unit kann man mit unterschiedlichen Speichergrößen arbeiten. Wer jetzt versucht die Partition mit resizepart zu vergrößern, wird meistens scheitern, weil die Umrechnungen der Anzeige zu ungenau sind, um sie in den Änderungsangaben zu verwenden:

(parted) resizepart
Partitionsnummer? 2
Ende?  [8191MiB]? 15360MiB
Fehler: Der Ort 15360MiB ist außerhalb des Geräts /dev/vda.

Also erst einmal die Einheiten auf absolute Werte wie Sektoren einstellen und noch einmal versuchen. Da man sich diese auch so anzeigen lassen kann, kann man sich den Wert prima kopieren:

(parted) unit s
(parted) print free
Modell: Virtio Blockorientiertes Gerät (virtblk)
Festplatte  /dev/vda:  31457280s
Sektorgröße (logisch/physisch): 512B/512B
Partitionstabelle: msdos
Disk-Flags:

Nummer  Anfang     Ende       Größe      Typ      Dateisystem   Flags
        63s        2047s      1985s               Freier Platz
 1      2048s      999423s    997376s    primary  ext4          boot
 2      999424s    16775167s  15775744s  primary                LVM
        16775168s  31457279s  14682112s           Freier Platz

(parted) resizepart
Partitionsnummer? 2
Ende?  [16775167s]? 31457279s

Zeigt man sich dann das Ergebnis mit den vorherigen Einheiten an, erkennt man auch die Vergrößerung und kann das Programm verlassen:

(parted) unit MiB
(parted) print free
Modell: Virtio Blockorientiertes Gerät (virtblk)
Festplatte  /dev/vda:  15360MiB
Sektorgröße (logisch/physisch): 512B/512B
Partitionstabelle: msdos
Disk-Flags:

Nummer  Anfang   Ende      Größe     Typ      Dateisystem   Flags
        0,03MiB  1,00MiB   0,97MiB            Freier Platz
 1      1,00MiB  488MiB    487MiB    primary  ext4          boot
 2      488MiB   15360MiB  14872MiB  primary                LVM

(parted) quit
Informationen: Möglicherweise müssen Sie /etc/fstab anpassen.

Jetzt nur noch das LVM Physical und Logical Volume und das Dateisystem der gewünschten Partition vergrößern und fertig:

root@ubuntu1604lts:~/# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1 1024M  0 rom
vda           253:0    0   15G  0 disk
├─vda1        253:1    0  487M  0 part /boot
└─vda2        253:2    0 14,5G  0 part
  ├─vg00-root 252:0    0  1,9G  0 lvm  /
  ├─vg00-swap 252:1    0  1,9G  0 lvm  [SWAP]
  ├─vg00-tmp  252:3    0  488M  0 lvm  /tmp
  ├─vg00-var  252:4    0  1,9G  0 lvm  /var
  └─vg00-home 252:5    0  1,5G  0 lvm  /home
vdb           253:16   0   20G  0 disk
└─vg01-opt    252:2    0   10G  0 lvm  /opt

root@ubuntu1604lts:~/# pvdisplay /dev/vda2
  --- Physical volume ---
  PV Name               /dev/vda2
  VG Name               vg00
  PV Size               7,52 GiB / not usable 2,00 MiB
  Allocatable           yes (but full)
  PE Size               4,00 MiB
  Total PE              1925
  Free PE               0
  Allocated PE          1925
  PV UUID               ubAhLP-Od1g-7U3V-qj7O-dAws-CLuc-ePRnQ9

root@ubuntu1604lts:~/# pvresize /dev/vda2
  Physical volume "/dev/vda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

root@ubuntu1604lts:~/# pvdisplay /dev/vda2
  --- Physical volume ---
  PV Name               /dev/vda2
  VG Name               vg00
  PV Size               14,52 GiB / not usable 3,00 MiB
  Allocatable           yes
  PE Size               4,00 MiB
  Total PE              3717
  Free PE               1792
  Allocated PE          1925
  PV UUID               ubAhLP-Od1g-7U3V-qj7O-dAws-CLuc-ePRnQ9

root@ubuntu1604lts:~/# lvresize -L +5G /dev/vg00/root
  Size of logical volume vg00/root changed from 1,86 GiB (476 extents) to 6,86 GiB (1756 extents).
  Logical volume root successfully resized.
root@ubuntu1604lts:~/# resize2fs /dev/vg00/root
resize2fs 1.42.13 (17-May-2015)
Dateisystem bei /dev/vg00/root ist auf / eingehängt; Online-Größenänderung ist
erforderlich
old_desc_blocks = 1, new_desc_blocks = 1
Das Dateisystem auf /dev/vg00/root is nun 1798144 (4k) Blöcke lang.

root@ubuntu1604lts:~/# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1 1024M  0 rom
vda           253:0    0   15G  0 disk
├─vda1        253:1    0  487M  0 part /boot
└─vda2        253:2    0 14,5G  0 part
  ├─vg00-root 252:0    0  6,9G  0 lvm  /
  ├─vg00-swap 252:1    0  1,9G  0 lvm  [SWAP]
  ├─vg00-tmp  252:3    0  488M  0 lvm  /tmp
  ├─vg00-var  252:4    0  1,9G  0 lvm  /var
  └─vg00-home 252:5    0  1,5G  0 lvm  /home
vdb           253:16   0   20G  0 disk
└─vg01-opt    252:2    0   10G  0 lvm  /opt

root@ubuntu1604lts:~/# df -h
Dateisystem           Größe Benutzt Verf. Verw% Eingehängt auf
udev                   981M       0  981M    0% /dev
tmpfs                  201M    3,2M  197M    2% /run
/dev/mapper/vg00-root  6,8G    1,8G  4,7G   28% /
tmpfs                 1001M       0 1001M    0% /dev/shm
tmpfs                  5,0M       0  5,0M    0% /run/lock
tmpfs                 1001M       0 1001M    0% /sys/fs/cgroup
/dev/vda1              464M    106M  331M   25% /boot
/dev/mapper/vg00-tmp   465M    2,3M  434M    1% /tmp
/dev/mapper/vg00-home  1,5G    2,3M  1,4G    1% /home
/dev/mapper/vg01-opt   9,8G     23M  9,2G    1% /opt
/dev/mapper/vg00-var   1,8G    630M  1,1G   37% /var
tmpfs                  201M       0  201M    0% /run/user/0

Ergebnis: root-Partition vergrößert, ohne das System offline zu nehmen und ohne Daten zu verlieren.