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




1 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




2 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.



3 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




3.1 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 




3.2 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!



4 Partition anlegen

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.



5 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




6 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




7 Externe Links

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




8 Kommentare


cg66@arcor.de

45 Monaten zuvor
Punktzahl 0++

Hallo und erstmal vielen Dank für die schöne Doku.

Leider habe ich das Problem, daß nach Eingabe von "echo 1 > /sys/devices/pci0000:00/0000:00:10.0/host0/target0:0:0/0:0:0:0/rescan" zwar der freie Bereich angezeigt wird, doch nicht als "free space" sondern als "unusable". Gibt es da irgendwelche Erfahrungen was da zu tun ist ??

Vielen Dank im voraus und schöne Grüße

BLinz

45 Monaten zuvor
Punktzahl 0++

Leider nein ... ich hatte mir am Rescan einen abgebrochen (bis ich etwas gefunden habe das auch funktioniert), eventuell sind Ihnen die Voraussetzungen anders ...

Eventuell einen Reboot machen?

cg66@arcor.de

45 Monaten zuvor
Punktzahl 0++

Jo, den Reboot hatte ich gehofft vermeiden zu können ... daher war ich sehr erfreut über die Beschreibung.

Vielen Dank für die schnelle Antwort ... ;)

steffen.doegnitz@wasserversorgung-etw.de

39 Monaten zuvor
Punktzahl 0++

Hallo und vielen Dank für die Doku,

statt grep mpt /sys/class/scsi_host/host?/proc_name ist grep mpt /sys/class/scsi_host/host*/proc_name besser.

Bei mir war es host32!

BLinz

39 Monaten zuvor
Punktzahl 0++
Danke, habe ich eingebaut!

Stefan

38 Monaten zuvor
Punktzahl 0++

Um dem Kernel Änderungen mitzuteilen mache ich das so. Anschießend mit dmesg prüfen ob es erfolgreich war.

  1. Im Betrieb Laufwerk (Größe) neu einlesen
  2. echo 1 > /sys/block/sdX/device/rescan

Das X passend ersetzen: z.B. sda ( oder wie auch immer das device heißt, falls nicht sd... )

Auch nützlich:

  1. Im Betrieb neues Laufwerk an vorhandenem controller erkennen
  2. echo "- - -" > /sys/class/scsi_host/hostX/scan

Das X passend ersetzen: host0, host2 für Controller 0 oder Controller 2 Ggf. die vorhanden Controller durchpropieren, wenn nicht klar ist, an welchem eine neues Laufwerk gehangen wurde. Schadet nicht.

Wäre noch schön, wenn man einen Controller hot swap einfügen kann.

Kenne aber noch keine Lösung.

Timo

36 Monaten zuvor
Punktzahl 0++

Richtig gute Anleitung. Hat mir eben sehr geholfen. Perfekte Doku, auch von den einzelnen Schritten. So wünscht man sich das....

Einzige Anmerkung, mit der es schneller geht als echo --> etc.

apt-get install scsitools --> sudo rescan-scsi-bus.sh --forcerescan

Erledigt, was oben langwierig mit echo gemacht wird. Ist ein sehr altes Tool, gibt es schon seit SLES9 ;-) Vielleicht in Vergessenheit geraten?

BG

Timo

BLinz

36 Monaten zuvor
Punktzahl 0++
Danke Timo, habe es oben mit eingebaut

stylopath@hotmail.de

13 Monaten zuvor
Punktzahl 0++

Super Anleitung, Vielen DANK. Klappt 1zu1 wie BEschrieben. Meine Umgebung? ESX5.1 mit Ubuntu 16 LTS -> Genauer Redmine 4.4.0-87.....

LG

Madzel

5 Monaten zuvor
Punktzahl 0++

Vielen Dank für die Anleitung - hat perfekt funktioniert!! ESX 6.5 und ein virtuelles RHEL 7.5

Gruß

M.

RaBe59

einem Monat zuvor
Punktzahl 0++

Bei meiner Konfiguration brauchte ich im Schritt 5 noch

pvcreate /dev/sda6
Kommentar hinzufügen
znilwiki freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, trage deinen Namen oder deine Email-Adresse ein oder melde dich an. Du kannst das Feld auch einfach leer lassen.