Partitionen vergrößern (GParted)

Aus Linupedia
Wechseln zu: Navigation, Suche

Manchmal muss man die Partitionierung eines konfigurierten Systems ändern, beispielsweise weil sich einzelne Partitionen als zu klein herausgestellt haben. Dieser Artikel beschreibt beispielhaft ein Verfahren, bei welchem der Umbau ohne Neuinstallation und vor allem ohne Datenverlust durchgeführt werden kann.

Hierzu wird die Live-Version von GParted verwendet. Das Beispiel wurde in einer virtualisierten Umgebung unter VirtualBox durchgeführt.

Achtung:

Warnung: Es ist absolut notwendig, von allen relevanten Daten zuvor eine valide Sicherheitskopie anzufertigen. Die hier behandelten Schritte bergen ein hohes Risiko für die Konsistenz des gesamten Datenbestandes!


Ausgangsbasis

Das folgende Partitionierungsschema zeigt die aktuelle Konfiguration:

localhost:~ # lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0    8G  0 disk 
├─sda1            8:1    0  101M  0 part /boot
├─sda2            8:2    0  6.6G  0 part 
│ ├─system-root 253:0    0  6.1G  0 lvm  /
│ └─system-swap 253:1    0  512M  0 lvm  [SWAP]
└─sda3            8:3    0  1.3G  0 part /images-pp
sdb              8:16  0    8G  0 disk
└─sdb1            8:17  0    8G  0 part /root/sdb1

Hinweis: Hier handelt es sich um eine Konfiguration für einen ganz bestimmten Zweck, diese soll keinesfalls als beispielhaft für eine sinnvolle Partitionierung im produktiven Einsatz gelten!

Ziel

Was soll gemacht werden?

  • sda1 soll auf 4GB erweitert werden.
  • sda2 soll auf 15GB erweitert werden.
  • sda3 wird gelöscht.
  • sdb dient nur temporär der Aufnahme der Images und ist nicht Gegenstand einer Partitionsbearbeitung.

Sicherung

Zuvor wurden von 'sda1' und 'sda2' per dd Images in 'sdb1' erstellt. Dies geschah in einer separaten Sitzung, gebootet in einem Recovery-System - also nicht am laufenden System!

Test, ob die Images valide sind:

localhost:~ # mkdir /root/sdb1
localhost:~ # mount -o ro /dev/sdb1 /root/sdb1
localhost:~ # mkdir /root/sda1; mount -o loop /root/sdb1/sda1-boot.img /root/sda1

localhost:~ # mkdir /root/sda2; mount -o loop /root/sdb1/sda2-root-lvm.img /root/sda2
mount: unknown filesystem type 'LVM2_member'

Das sollte in diesem Kontext ausreichen...

Vergrößerung

Schritt 1: sda vergrößern

Das wird mit VirtualBox-Werkzeugen auf dem Host erreicht, während die VM down ist.

j2:~ # ls -ltar /home/user/VirtualBox\ VMs/OpenSUSE\ 13.1\ NoCrypt/OpenSUSE\ 13.1\ NoCrypt.vdi 
-rw------- 1 user 1000 7703924736 Dec 22 15:45 /home/user/VirtualBox VMs/OpenSUSE 13.1 NoCrypt/OpenSUSE 13.1 NoCrypt.vdi
j2:~ # VBoxManage modifyhd "/home/user/VirtualBox VMs/OpenSUSE 13.1 NoCrypt/OpenSUSE 13.1 NoCrypt.vdi" --resize 19456
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
j2:~ # ls -ltar /home/user/VirtualBox\ VMs/OpenSUSE\ 13.1\ NoCrypt/OpenSUSE\ 13.1\ NoCrypt.vdi 
-rw------- 1 user 1000 7704973312 Dec 24 09:58 /home/user/VirtualBox VMs/OpenSUSE 13.1 NoCrypt/OpenSUSE 13.1 NoCrypt.vdi

Die geringe Größenänderung hier scheint plausibel durch die Sparse-Konfiguration erklärbar zu sein. VirtualBox meldet jedenfalls die neue Größe von 19 GB.

In der realen Welt entspricht dieser Schritt dem Einbau einer größeren Festplatte und dem Übertragen des Diskimages per dd von der alten auf die neue Platte.

Danach startet die VM problemlos, nutzt aber den zusätzlichen Speicher nicht:

localhost:~ # fdisk -l /dev/sda

Disk /dev/sda: 8589 MB, 8589934592 bytes, 16777216 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: 0x000d8d71

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      208895      103424   83  Linux
/dev/sda2          208896    14057471     6924288   8e  Linux LVM
/dev/sda3        14057472    16756735     1349632   83  Linux
Fehler beim Erstellen des Vorschaubildes: Datei fehlt
GParted - Vergrößerung der Festplatte wird innerhalb der VM nicht erkannt
Das System hat von dem neuen Speicherplatz noch nichts mitbekommen. Das Verhalten zeigt sich ebenfalls, wenn die VM von einer Live-Version von GParted gebootet wird:
Fehler beim Erstellen des Vorschaubildes: Datei fehlt
GParted - Die neue Größe wurde erkannt. Noch keine Änderungen durchgeführt.
Hier wird ein Bug von VirtualBox vermutet. Es ist ein kleiner Trick notwendig, um die Änderung in der VM zu reflektieren. Dabei wird eine neue virtuelle Maschine erzeugt, welche das vergrößerte Image als Festplatte enthält und das ISO-Image der Live-Version von GParted als CD zum Booten zugeteilt bekommt. Darin wird die neue Größe dann erkannt.

Schritt 2: Änderung der Partitionierung

Zur Änderung der Partitionierung wird das System mit einer Live-Version von GParted gebootet. Innerhalb von GParted wird dort ein Bereich von 11 GB als 'unallocated' vermerkt.

Die Schritte im einzelnen:

Löschen von 'sda3'

Erfolgt über das Kontextmenü, danach sind 12.3 GB frei.

'sda2' verschieben und vergrößern

Das erfolgt ebenfalls über das Kontextmenü 'Resize/Move' mit diesen Parametern:

  • Free space preceding (MiB): 4098
  • New size (MiB): 15360
  • Free space following (MiB): 0

'sda1' vergrößern

Parameter:

  • Free space preceding (MiB): 0
  • New size (MiB): 4095
  • Free space following (MiB): 0

Durchführung der Schritte

Fehler beim Erstellen des Vorschaubildes: Datei fehlt
GParted - Noch ausstehende Konfigurationsänderungen
Fehler beim Erstellen des Vorschaubildes: Datei fehlt
GParted - Durchführung der Änderungen

Abschließend auf 'Apply' klicken, um alle Schritte durchzuführen. Es werden noch mal alle Schritte aufgeführt, die durchgeführt werden sollen und eine explizite Bestätigung eingeholt, weil die folgenden Aktivitäten Datenbestände löschen können bzw. werden.

Die folgende Durchführung kann einige Zeit in Anspruch nehmen.

Abschließend sollte die virtuelle Maschine sauber beendet werden.

Vergrößerung der Dateisysteme

Nach dem Start der VM wird überprüft, ob die Partitionierung nun den Erwartungen entspricht.

Hinweis: Der erste Start der virtuellen Maschine kann unverhältnismäßig lange dauern, weil nach der Partitionsänderung Dateisystem-Checks durchgeführt werden.

localhost:~ # fdisk -l /dev/sda

Disk /dev/sda: 20.4 GB, 20401094656 bytes, 39845888 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: 0x000d8d71

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     8386559     4192256   83  Linux
/dev/sda2         8388608    39843839    15727616   8e  Linux LVM

localhost:~ # lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   19G  0 disk 
├─sda1            8:1    0    4G  0 part /boot
└─sda2            8:2    0   15G  0 part 
  ├─system-root 253:0    0  6.1G  0 lvm  /
  └─system-swap 253:1    0  512M  0 lvm  [SWAP]

localhost:~ # pvs
  PV         VG     Fmt  Attr PSize  PFree
  /dev/sda2  system lvm2 a--  15.00g 8.40g

localhost:~ # lvs
  LV   VG     Attr      LSize   Pool Origin Data%  Move Log Copy%  Convert
  root system -wi-ao---   6.10g                                           
  swap system -wi-ao--- 512.00m                                           

localhost:~ # df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/system-root  5.9G  4.5G  1.2G  81% /
devtmpfs                 486M   32K  486M   1% /dev
tmpfs                    499M   80K  499M   1% /dev/shm
tmpfs                    499M  2.7M  496M   1% /run
tmpfs                    499M     0  499M   0% /sys/fs/cgroup
tmpfs                    499M  2.7M  496M   1% /var/lock
tmpfs                    499M  2.7M  496M   1% /var/run
/dev/sda1                3.9G   50M  3.7G   2% /boot

Man erkennt, dass /boot auf sda1 und das PV auf sda2 vergrössert wurde.

Aber das LV für /root ist noch unverändert und muss separat vergrößert werden. Auch dies sollte auf keinen Fall im laufenden System durchgeführt werden, sondern stattdessen nochmal mit dem GParted-ISO gebootet werden:

user@debian:~$ sudo lvchange -a y system/root

user@debian:~$ sudo lvresize --resizefs --size +8.3G system/root
  Rounding size to boundary between physical extents: 8.30 GiB
fsck from util-linux 2.20.1
/dev/mapper/system-root: clean, 147123/399840 files, 1184202/1598464 blocks
  Extending logical volume root to 14.40 GiB
  Logical volume root successfully resized
resize2fs 1.42.8 (20-Jun-2013)
Resizing the filesystem on /dev/mapper/system-root to 3774464 (4k) blocks.
The filesystem on /dev/mapper/system-root is now 3774464 blocks long.

Anschließend steht der Speicherplatz vollständig zur Verfügung:

localhost:~ # lvs
  LV   VG     Attr      LSize   Pool Origin Data%  Move Log Copy%  Convert
  root system -wi-ao---  14.40g                                           
  swap system -wi-ao--- 512.00m    
                                       
localhost:~ # df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/system-root   15G  4.5G  8.9G  34% /
devtmpfs                 486M   32K  486M   1% /dev
tmpfs                    499M   80K  499M   1% /dev/shm
tmpfs                    499M  2.6M  496M   1% /run
tmpfs                    499M     0  499M   0% /sys/fs/cgroup
tmpfs                    499M  2.6M  496M   1% /var/lock
tmpfs                    499M  2.6M  496M   1% /var/run
/dev/sda1                3.9G  240M  3.5G   7% /boot

Links