Aktionen

Ubuntu Linux - Festplatte mit LVM im laufenden Betrieb ohne Neustart vergrößern

Aus znilwiki

Unter Windows ein Klacks, unter Ubuntu nicht einfach:
Eine Festplatte im laufendem Betrieb vergrößern ohne reboot!

Changelog:

  • 30.03.2015: Erste Version
  • 15.12.2015: Rechtschreibfehler etc. entfernt
  • 17.12.2015: Vorschlag von Steffen aufgenommen
  • 27.03.2016: Voschlag von Timo mit scsitools aufgenommen
  • 13.06.2018: Hinweise eingebaut falls es eine 2. Festplatte und/oder mehrere Partitionen sind
  • 17.03.2020: Hinweis auf vergrößern ohne LVM hinzugefügt


Important.png
Hinweis: Am Ende kommt ein Hinweis wie man es ohne LVM auch hinbekommt



Ausgangslage

  • Ubuntu Server 14.04.1
  • Eine Festplatte mit 20GB unter VMware ESXi
  • Eingerichtet mit LVM bei der Installation


Da mein Server hier "ubuntu" heisst, ist die LVM-Bezeichnung

ubuntu--vg-root


root@ubuntu:~# df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-root   19G  1,3G   17G   8% /
none                         4,0K     0  4,0K   0% /sys/fs/cgroup
udev                         486M  4,0K  486M   1% /dev
tmpfs                        100M  680K   99M   1% /run
none                         5,0M     0  5,0M   0% /run/lock
none                         497M     0  497M   0% /run/shm
none                         100M     0  100M   0% /run/user
/dev/sda1                    236M   38M  187M  17% /boot
root@ubuntu:~# pvs
 PV         VG        Fmt  Attr PSize  PFree
 /dev/sda5  ubuntu-vg lvm2 a--  19,76g 20,00m




Festplatte unter VMware vergrößern

Im vSphere Client bzw. über die Weboberfläche vergrößere ich jetzt die Festplatte von 20GB auf 40GB:
VMware Ubuntu Expand Disk-001.png - VMware Ubuntu Expand Disk-002.png

Jetzt noch OK geklickt und das war es schon.

Man könnte jetzt noch einen Snapshot machen (nach dem Vergrößern). Falls Ihr etwas falsch macht könnt Ihr dann zumindest in die Ausgangslage zurück.



Rescan 1 unter Linux

Ruft einmal

cfdisk

auf:
VMware Ubuntu Expand Disk-003.png
Wir sehen in diesem Fall das da am Schluss jämmerliche 1,05MByte frei sind - ggf. ist da auch gar nichts. Die letzte Partition ist sda5

Handelt es sich um eine 2. Festplatte so müsst Ihr ggf.

cfdisk /dev/sdb




Neue Methode

Deshalb stoßen wir eine Scan an damit Ubuntu die neue Größe sieht.
Am einfachsten geht das mit den scsitools:

sudo apt-get install scsitools
sudo rescan-scsi-bus --forcerescan 

eventuell heisst auf eurem (älteren oder SLES System) auch noch

sudo rescan-scsi-bus.sh --forcerescan 




Alte Methode

Wenn Ihr die scsitools nicht installieren könnt geht es auch ohne,
dazu fragen wir zunächst ab welche Adapter wir denn haben:

grep mpt /sys/class/scsi_host/host?/proc_name

Findet Ihr nichts so versucht den Vorschlag von Steffen:

grep mpt /sys/class/scsi_host/host*/proc_name

Die Ausgabe sollte wie folgt sein:

/sys/class/scsi_host/host2/proc_name:mptspi

Damit ist host2 der richtige - auf diesen initialisieren wir nun den Rescan:

echo "- - -" > /sys/class/scsi_host/host2/scan

und kontrollieren hinterher cfdisk denn hinterher den freien Speicher sieht.
Falls es nicht geklappt hat - wartet einen kurzen Moment und probiert es noch mal.
Klappt das hartnäckig nicht so gebt folgenden Befehl ein (für host2 ):

find /sys -name rescan | grep host2

Ausgabe sollte wie folgt sein:

/sys/devices/pci0000:00/0000:00:10.0/host2/target2:0:0/2:0:0:0/rescan

so, jetzt schicken wir eine 1 an diesen - kopiert den Pfad dazu am besten:

echo 1 > /sys/devices/pci0000:00/0000:00:10.0/host2/target2:0:0/2:0:0:0/rescan

spätestens jetzt sollte cfdisk den neuen freien Speicher sehen:
VMware Ubuntu Expand Disk-004.png
Da sind unsere 20 zusätzlichen Gigabyte ja!



Partition anlegen

Important.png
Hinweis:Falls er hier anfängt zu warnen das der Disk-Header überschrieben werden muss - Abbrechen mit STRG + C und dann macht es gemäß der Lösung hier: https://unix.stackexchange.com/questions/98339/how-do-i-extend-a-partition-with-a-lvm-and-the-contained-physical-volume-and-log


Startet

cfdisk

bzw.

cfdisk /dev/sdb

bei der 2. Festplatte (c wäre die dritte usw.).
Und wählt oben die Zeile mit dem freien Speicher aus und geht unten dann auf [ New ] und danach auf [ Logical ]:
VMware Ubuntu Expand Disk-005.png - VMware Ubuntu Expand Disk-006.png
Die vorgeschlagene Größe übernehmt ihr einfach.
Er hat nun die Partition angelegt als sda6 . wir müssen aber den Typ noch ändern über [ Type ]:
VMware Ubuntu Expand Disk-007.png - VMware Ubuntu Expand Disk-008.png
Der Typ muss 8E sein (LVM)
Bei Flags darf nicht "Boot" stehen!!

Und nun gehen wir einmal auf [ Write ] sonst war die ganze Arbeit umsonst:
und bestätigen das ganze indem wir

yes

eintippen. (oder Ja bei der deutschen Version)

Dann den cfdisk über [ Quit ] verlassen.



Partition dem LVM hinzufügen

Zunächst machen wir noch einmal einen neuen Rescan damit sda6 gefunden wird:

partprobe

Geben wir nun

pvs

ein so sehen wir nur den bisherigen Bereich:

  PV         VG        Fmt  Attr PSize  PFree
  /dev/sda5  ubuntu-vg lvm2 a--  19,76g 20,00m

Das Schlüsselwort hier ist der VG der hier ubuntu-vg lautet - die Bezeichnung brauchen wir um unsere neue Partition dem LVM hinzu zu fügen:

vgextend ubuntu-vg /dev/sda6

Ausgabe:

  No physical volume label read from /dev/sda6
  Physical volume "/dev/sda6" successfully created
  Volume group "ubuntu-vg" successfully extended


Der Befehl pvs sollte nun so etwas ausgeben:

  PV         VG        Fmt  Attr PSize  PFree
  /dev/sda5  ubuntu-vg lvm2 a--  19,76g 20,00m
  /dev/sda6  ubuntu-vg lvm2 a--  20,00g 20,00g




Vorhandes LVM Volume erweitern

Falls Ihr eine Platte mit mehreren Volumes habt könnt Ihr euch vorher mit

lvs

euch diese anzeigen lassen und den richtigen Namen wählen.
Wir erweitern nun das vorhandene Volume um den neuen freien Speicherplatz:

lvextend -l+100%FREE /dev/ubuntu-vg/root

Ausgabe:

 Extending logical volume root to 38,76 GiB
 Logical volume root successfully resized


Nun steht der freie Speicher dem vorhandenen Volume zur Verfügung, wird aber noch nicht genutzt:

df -h

Ausgabe:

Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-root   19G  1,3G   17G   8% /
none                         4,0K     0  4,0K   0% /sys/fs/cgroup
udev                         486M  4,0K  486M   1% /dev
tmpfs                        100M  684K   99M   1% /run
none                         5,0M     0  5,0M   0% /run/lock
none                         497M     0  497M   0% /run/shm
none                         100M     0  100M   0% /run/user
/dev/sda1                    236M   38M  187M  17% /boot

Der Pfad den wir brauchen ist

/dev/mapper/ubuntu--vg-root

und zur Zeit noch 19GB.

Jetzt müssen wir das Dateisystem noch erweitern, dazu nutzen wir den Pfad aus der obigen Ausgabe:
Für ext4 Dateisystem nutzen wir resize2fs. Bei anderen Dateisystem würde es eine Magic Block Fehlermeldung geben.
Bei zum Beispiel XFS müsstet Ihr xfs_growfs nutzen mit dem Pfad.

resize2fs /dev/mapper/ubuntu--vg-root

Ausgabe:

resize2fs 1.42.9 (4-Feb-2014)
Das Dateisystem auf /dev/mapper/ubuntu--vg-root ist auf / eingehängt; Online-Grössenveränderung nötig
old_desc_blocks = 2, new_desc_blocks = 3
Das Dateisystem auf /dev/mapper/ubuntu--vg-root ist nun 10160128 Blöcke groß.



Nachkontrolle:

root@ubuntu:~# df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-root   39G  1,3G   35G   4% /
none                         4,0K     0  4,0K   0% /sys/fs/cgroup
udev                         486M  4,0K  486M   1% /dev
tmpfs                        100M  684K   99M   1% /run
none                         5,0M     0  5,0M   0% /run/lock
none                         497M     0  497M   0% /run/shm
none                         100M     0  100M   0% /run/user
/dev/sda1                    236M   38M  187M  17% /boot




Ohne LVM

Wenn die Festplatte ohne LVM eingerichtet wurde, also direkt formatiert, geht das vergrößern auch (1x beim Kunden getestet):

  • Vergrößert die Festplatte unter VMware
  • Führt die Punkte aus 3. (ReScan aus) damit das System die neue Größe bemerkt.

führt folgende Befehle aus - die Nummer an die Nummer der Festplatte anpassen:

growpart /dev/sda 3
resize2fs /dev/sda3

würde die Festplatte /dev/sda3 vergrößern.
Beim ersten Befehl ist ein Leerzeichen zwischen den sda und der 3 - das muss so!
Wenn er growpart nicht findet so installiert es nach. Unter Ubuntu / Debian ist es verfügbar, CentOS oder Redhat weis ich nicht)


Externe Links

Eventuell Hilfreiche Links wie man es auch noch machen kann (mit fdisk statt cfdisk) etc.
Konnte ich neulich unter SLES12 gebrauchen.




Kommentare

Loading comments...