So erweitern Sie eine Linux PV-Partition online nach dem Wachstum der virtuellen Festplatte


14

Mit VMware kann die Größe einer virtuellen Festplatte online erweitert werden - wenn die VM ausgeführt wird. Die nächsten erwarteten Schritte für Linux-Systeme sind:

  1. erweitere die partition: lösche und erstelle eine größere mit fdisk
  2. verlängern Sie die PV-Größe mit pvresize
  3. Verwenden Sie freie Speicherbereiche für lvresizeOperationen
  4. und dann resize2fsfür Dateisystem

Aber ich bleibe beim ersten Schritt: fdiskund sfdiskzeige immer noch die alte Größe für die Festplatte an.

Meine Festplatte ist eine virtuelle SCSI-Festplatte, die dank des virtuellen LSI Logic-Controllers verbunden ist.

Wie aktualisiere ich die Informationen zur Größe der virtuellen Festplatte und zur Partitionstabelle, die im Linux-Kernel verfügbar sind, ohne einen Neustart durchzuführen ?

Soweit ich weiß, sind alle Schritte für ein laufendes Windows möglich, ohne Neustart und sogar ohne Benutzeraktionen dank VMWare-Tools. Unter Linux erwarte ich, dass alle Schritte auch online ausgeführt werden, und ich weiß bereits, dass die Schritte 2, 3 und 4 online ausgeführt werden. Die erste Änderung der in der Partitionstabelle angegebenen Partitionsgröße scheint jedoch einen Neustart erforderlich zu machen.

Update: Mein System ist ein Debian Lenny mit Kernel 2.6.26 und die von mir erweiterte Disk ist die Hauptdisk mit einer großen PV, die das "Root" -LV für "/" enthält.

Antworten:


9

Sie können dies ohne Neustart tun. pvresize ändert die Größe des physischen Volumes erst, wenn die Partition mit dem hinzugefügten Speicherplatz aktualisiert wurde. Sie müssen die Partition fdisk und mit der neuen Größe der Festplatte neu erstellen, nachdem Sie die Laufwerke erneut gescannt haben, damit der zusätzliche Speicherplatz überhaupt angezeigt wird.

Weitere Informationen: http://theducks.org/2009/11/expanding-lvm-partitions-in-vmware-on-the-fly/


Ich bin damit einverstanden, aber was auch immer ich getan habe, um das SCSI-Laufwerk erneut zu scannen, ich habe nie die neue Festplattengröße in fdisk angezeigt bekommen, so dass ich bis zu einem ersten Neustart feststeckte. Und "partprobe" ist für mich ein neuer Befehl. Auf jeden Fall muss ich dieses Verfahren testen ... Danke.
Yves Martin

Zur Information partprobeist ein Befehl aus dem partedProjekt.
Yves Martin

Wenn Sie die neue Festplattengröße in nicht sehen, liegt fdiskdas Problem nicht bei LVM. Ich müsste fragen, wie Sie gescannt haben, da dies normalerweise die neue Festplattengröße für mich aufnimmt. Ich partitioniere auch keine Festplatten, auf denen ich LVM verwenden werde, wenn ich diesbezüglich Abhilfe schaffen kann. Wenn Sie pvcreatedie gesamte Festplatte haben, müssen Sie nur noch die Partitionstabelle aktualisieren, um die Größe zu ändern.
Bratchley

13

Die andere Antwort hat Ihre Frage nicht beantwortet. Ich habe den richtigen Befehl zum erneuten Scannen einer bereits verbundenen Festplatte gefunden.

Wir müssen Ihre bereits verbundene Festplatte erneut scannen. Ermitteln Sie zunächst, welche Festplatte Sie erneut scannen möchten.

ls /sys/class/scsi_disk/

In meinem Beispiel wird ein Symlink mit dem Namen 0:0:0:0angezeigt, sodass wir diese SCSI-Festplatte erneut scannen.

echo '1' > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan

Ich habe gerade auch meine VMware-Festplatte erweitert und musste andere Antworten durchsuchen, um den richtigen Befehl zu finden. Hoffentlich rettet dies zukünftige Suchende vor vergeblichen Versuchen.


Perfekt funktioniert!
Emil Styrke

4

Soweit das Root-Dateisystem /auf der Festplatte bereitgestellt ist, deren Größe geändert wurde, werden Partitionstabelle und Festplattengröße bei einem SCSI-Rescan mit Linux 2.6.26 nicht aktualisiert.

Ich hoffe wirklich, dass es mit neueren Kernel-Versionen bald besser wird.

Also musste ich:

  • Starten Sie das erste Mal neu, um die neue Festplattengröße in zu sehen fdisk
  • Löschen Sie die alte PV-Primärpartition in fdisk
  • Erstellen Sie einen Partitionseintrag mit derselben Nummer und starten Sie den Sektor bis zum Ende der Festplatte
  • Starten Sie das System ein zweites Mal neu ODER führen Sie es nur partprobeaus dem partedPaket aus , wenn /es dort nicht eingebunden ist
  • Jetzt kann ich rennen pvresize , um neuen freien Speicherplatz zu erhalten lvextendund resize2fseinem Dateisystem mehr Speicherplatz zuzuweisen

Es wurde mir empfohlen, diese blöde alte Partitionstabelle einfach zu verwerfen und pvcreatedirekt auf dem Gerät auszuführen, da Grub2 ein Kernel-Image direkt von einem Dateisystem auf eine LVM-Partition laden kann. Bei Installationsprogrammen für Distributionen ist ein solches Setup jedoch nicht offensichtlich.

Update: Ich habe gerade mit Debian GNU / Linux Jessie 8.2 mit Kernel 3.16 und überprüftparted 3.2 , das partprobenun nach Partitionstabellen-Edition cfdiskohne Neustart erfolgreich ist. pvresizearbeitet sofort danach.

Wenn Sie eine als logische PC-Partition gespeicherte PV erweitern möchten, z. B. /dev/sda5auf einer erweiterten primären Partition /dev/sda2, verwenden Sie nicht, fdisksondern bevorzugen parted:

parted /dev/sda2 -1
parted /dev/sda5 -1
pvresize /dev/sda5

Befehle am Ende funktionieren nicht # parted / dev / sda2 -1 -> parted: ungültige Option - '1'
Oskar Berggren

3

Sie müssen die Datenträger erneut scannen, bevor Sie die größere Partition erstellen können.

In Centos können Sie dies tun, indem Sie

ls /sys/class/scsi_host

dann für jeden Host

echo "- - -" > /sys/class/scsi_host/host#/scan

(Ersetzen Sie # durch die Nummer)

In einem weiteren Schritt wird ext oder das von Ihnen verwendete Dateisystem erweitert, sobald Sie die Größe der Partition geändert haben.

Irgendwann müssen Sie diese Partition jedoch noch aushängen. Wir tendieren dazu, eine zweite VMware-Festplatte hinzuzufügen und lvm zu verwenden, um auf die neue Festplatte zu erweitern (und die alte zu reduzieren, wenn es sich um einen Ersatz handelt), da dies ermöglicht, dass der gesamte Prozess live abläuft.


Mein System ist Debian und ich starte rescan-scsi-bus.sh von scsitools aus. Ich denke, es ist äquivalent zu dem Befehl, den Sie in / sys / class / scsi_host vorschlagen, aber "fdisk" zeigt immer noch die alte Größe auf meiner Festplatte an ...
Yves Martin

Erkennt es eine neue VMware-Festplatte, wenn Sie erneut scannen?
James Ryan

Nein. Diese Festplatte existiert bereits und ist nicht neu. Die Festplattengröße wurde im vSphere-Client erhöht.
Yves Martin

Mir ist das klar, aber Sie sollten versuchen, ein neues hinzuzufügen, um zu sehen, ob Ihr Scan es aufnimmt, um das Problem
einzugrenzen

Ich stimme Ihnen zu und ich weiß bereits aus der Praxis, dass das Hinzufügen einer neuen SCSI-Festplatte zu einem Linux-Computer für alle aufgelisteten Schritte online durchgeführt werden kann. Da die VM möglicherweise 10 Jahre läuft ... Ich fürchte, die Gesamtzahl der Festplatten in naher Zukunft ...
Yves Martin

2

Als aktualisierte Antwort konnte ich unter Ubuntu 16.04.1 Folgendes tun, um die Größe eines Volumes von 1024 GB auf 1,4 TB zu ändern:

echo '1' > /sys/class/scsi_disk/32\:0\:1\:0/device/rescan
pvresize /dev/sdb
lvextend -l +100%FREE /dev/nvr01-opt/opt
resize2fs /dev/nvr01-opt/opt

Nicht fdiskerforderlich, und der Platz war sofort verfügbar.


3
Du Glückspilz. Der Grund dafür ist, dass Sie keine Partitionstabelle haben, sondern direkt PV einschalten. Dies /dev/sdbist wahrscheinlich nur die sekundäre Festplatte für Ihre Anwendungsdaten, aber nicht Ihre erste Festplatte mit System (um zu erwähnen, dass ich meine Systeme auf die gleiche Weise konfiguriere!). Meine Frage betraf die Erweiterung der letzten PV / Partition einer solchen "Systemfestplatte" (aus einer Vorlage geklont), soweit Linux-Distributionen die Installation auf direkter PV nicht unterstützen, während Linux-Kernel und GRUB auf der Systemfestplatte booten und ausgeführt werden können sollten ohne Partitionstabelle überhaupt.
Yves Martin

Gutes Argument. Für diejenigen, die dies über Google finden: Denken Sie daran.
Peelman

1

Sie haben uns nicht genügend Details zur Verfügung gestellt, um Ihnen die genauen benötigten Befehle mitzuteilen, aber im Wesentlichen müssen Sie den lvextendBefehl verwenden, um das logische Volume zu erweitern, dann den e2fsckBefehl und dann den resize2fsBefehl, um Ihr Dateisystem tatsächlich zu erweitern. Für jeden dieser Befehle sind zusätzliche Parameter erforderlich, insbesondere Geräte- und Dateisysteminformationen, die wir nicht bereitstellen können. Sie müssen diese jedoch kennen. Verwenden Sie für jeden Befehl die Option --help, um zu erfahren, wie Sie sie speziell verwenden Sie werden wahrscheinlich die am Ende mit pvdisplay, lvdisplayund mountBefehle , um Hilfe füllen Sie diese Parameter.


Ich kenne alle Befehle für andere Schritte. Meine Frage ist: Wie kann man die als PV verwendete primäre Partition ohne Neustart vergrößern?
Yves Martin

Entschuldigung, meinst du nur pvresize?
Chopper3

Ich stimme zu, dass meine Frage nicht explizit genug war (auch mit dem kühnen Teil). pvresize wird als Schritt 2 erwähnt. Ich stecke bei Schritt 1 fest: Erhöhe die "PCAT" -Partitionsgröße.
Yves Martin

Haben Sie die .vmdk-Größe über den VSClient bereits erhöht?
Chopper3

3
Zum Bestätigen /sbin/rescan-scsi-busändern Sie die vorhandene Festplattengröße nicht. Aber echo "1" > '/sys/class/scsi_disk/0:0:1:0/device/rescan'tut
Yves Martin

0

Niemand hat einen kompletten Befehlssatz gepostet, also los geht's:

# the following steps are for adding a new HDD
apt install scsitools
rescan-scsi-bus
pvcreate /dev/sdX
vgextend /dev/vgname /dev/sdx
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root

#if resizing existing HDD
fdisk /dev/sdX
create new partition
pvcreate /dev/sdXn
vgextend /dev/vgname /dev/sdXn
lvextend -l +100%FREE /dev/vgname/root 
resize2fs /dev/vgname/root

Es tut mir leid, aber ich finde, dass das Hinzufügen von Festplatten, Partitionen und PV bei jedem Festplattenwachstum "hässlich" und nicht skalierbar ist. Meine Frage betraf die Erweiterung einer vorhandenen primären Partition auf der Festplatte ohne Hinzufügen von Festplatte oder Partition oder PV.
Yves Martin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.