In diesem Beitrag wird erläutert, wie der verfügbare Speicherplatz in einem LVM-Volume erweitert werden kann, indem die physische Festplattenpartition mit fdisk erweitert wird. Dieses Beispiel zeigt, wie die Größe des physischen Volumes /dev/sdc1 von 200 MB auf 400 MB geändert wird.
Warnung vor potenziellem Datenverlust :Dieser Schritt löscht die vorhandene Partitionsstruktur und erstellt an ihrer Stelle eine neue Partition. Es ist wichtig, dass die neue Partition genau am selben Ursprung wie die gelöschte Partition erstellt wird, da sonst schwere Datenbeschädigungen und -verluste auftreten.Überprüfen Sie die aktuelle Konfiguration
1. Überprüfen Sie die aktuelle Größe des physischen Volumes auf der Festplatte.
# pvdisplay /dev/sdc1 "/dev/sdc1" is a new physical volume of "200.00 MiB" --- NEW Physical volume --- PV Name /dev/sdc1 VG Name PV Size 200.00 MiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID EkD95A-wb04-5GHn-OH7N-suVt-vak2-AKSsyv
2. Informieren Sie sich über das aktuelle LVM-Setup. Das logische Volume, das wir erweitern möchten, ist „testlv“.
# lvscan ACTIVE '/dev/testvg/testlv' [100.00 MiB] inherit
Deaktivieren Sie das vorhandene logische Volume
1. Bevor wir mit der eigentlichen PV- und LV-Erweiterung fortfahren, müssen wir zuerst das logische Volume deaktivieren. Verwenden Sie den folgenden Befehl, um den LV zu deaktivieren.
# lvchange -a n /dev/testvg/testlv
2. Überprüfen Sie, ob das Volume deaktiviert wurde.
# lvscan inactive '/dev/testvg/testlv' [100.00 MiB] inherit
Jetzt wissen wir, dass der LVM nicht verwendet wird, sodass wir den Erweiterungsprozess darauf starten können.
Erweitern Sie die Partition „/dev/sda1“ mit dem Dienstprogramm fdisk
1. Um die Partitionsinformationen des physischen Geräts zu erweitern, löschen wir zuerst die alte Partition und erstellen dann eine neue. Beachten Sie, dass wir zuerst die aktuellen Partitionsinformationen ausdrucken, damit wir genau wissen, wo die Partition beginnt. Wir müssen die neue, größere Partition beginnend am selben Block wie die alte Partition überlagern.
# fdisk /dev/sdc Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): p Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 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: 0x085579f4 Device Boot Start End Blocks Id System /dev/sdc1 2048 411647 204800 83 Linux Command (m for help): d Selected partition 1 Partition 1 is deleted Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-41943039, default 2048): ### we will press ENTER here to select default first sector 2048 Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +400M Partition 1 of type Linux and of size 400 MiB is set Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Dieser Schritt kann vor dem Ausschreiben der geänderten Partitionstabelle jederzeit mit dem „w " Befehl. Bis dahin wird nur eine In-Memory-Kopie der Partitionstabelle geändert.
Informationen zum Ändern von Partitionstabellen :Die Partitionsinformationen für alle LUNs auf einem physischen Gerät werden in einer Partitionstabelle gespeichert. Der Befehl fdisk manipuliert nur diese Partitionstabelle. Der Rest der Platte bleibt immer unverändert. Das bedeutet, dass die Informationen der Partitionstabelle geändert werden können, aber der Inhalt der Partitionen wird nie berührt, sondern immer intakt gelassen.Laden Sie die neue Partitionstabelle in den Kernel
Der aktuell laufende Kernel kennt die neuen Partitionsinformationen nicht, da fdisk die Partitionstabelle ändert, indem es direkt auf das Gerät schreibt. Normalerweise liest der Kernel Partitionsinformationen nur beim Systemstart oder wenn ein Hot-Plug-Ereignis (wie das Einstecken eines USB-Geräts) auftritt.
Wir können jedoch einen unnötigen Neustart vermeiden, indem wir den Kernel veranlassen, seine Partitionsinformationen erneut zu lesen und dann seine LVM-Informationen zu aktualisieren.
# partprobe
Nachdem der Kernel nun die aktualisierte Partitionstabelle kennt, informieren Sie das LVM-Subsystem über diese Änderung am physischen Gerät. Standardmäßig verwendet die Größenänderung die gesamte Partitionsgröße, wie sie aus der Partitionstabelle abgerufen wird:
# pvresize /dev/sdc1 Physical volume "/dev/sdc1" changed 1 physical volume(s) resized / 0 physical volume(s) not resized
# pvdisplay /dev/sdc1 --- Physical volume --- PV Name /dev/sdc1 VG Name testvg PV Size 399.00 MiB / not usable 3.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 99 Free PE 74 Allocated PE 25 PV UUID EkD95A-wb04-5GHn-OH7N-suVt-vak2-AKSsyv
Aktivieren Sie das vorhandene logische Volume
Der letzte Schritt besteht darin, den modifizierten LVM wieder online zu bringen. Wie immer prüfen wir zuerst unsere Arbeit:
# lvscan ACTIVE '/dev/testvg/testlv' [100.00 MiB] inherit
Wie aus der obigen Ausgabe ersichtlich, ist das logische Volume inaktiv. Also lass es uns zuerst aktivieren.
# lvchange -a y /dev/testvg/testlv
# /usr/sbin/lvscan ACTIVE '/dev/vgtest/lvtest' [100.00 MB] inherit
Größe des logischen Volumens ändern (optional)
1. Sie können jetzt auch das logische Volume erweitern, da Sie jetzt mehr Platz auf dem zugrunde liegenden physischen Volume haben. Verwenden Sie den folgenden Befehl, um die Größe des LV zu ändern.
# lvresize -L +200M /dev/testvg/testlv Size of logical volume testvg/testlv changed from 100.00 MiB (25 extents) to 300.00 MiB (75 extents). Logical volume testvg/testlv successfully resized.
2. Überprüfen Sie die neue Größe des logischen Volumes.
# lvscan ACTIVE '/dev/testvg/testlv' [300.00 MiB] inherit