Ich habe ein physisches Volume auf einer Partition, die sich über die gesamte Festplatte erstreckt, sagen wir /dev/sda1 mit 100% von /dev/sda. Jetzt muss ich es verkleinern, um /dev/sda2 zu erstellen. Ein logisches Volume verwendet tatsächlich ~50 % des PV, also ist theoretisch viel Platz verfügbar, aber es wird alles innerhalb des einzelnen PV zugewiesen. Gibt es eine sichere Möglichkeit, das physische Volume (und die zugrunde liegende Festplattenpartition) zu verkleinern, um zusätzlichen Platz für die zweite Partition zu schaffen? Leider schließt meine Konfiguration die Möglichkeit aus, das physische Volume vorübergehend auf ein anderes Gerät zu verschieben.
Natürlich weiß ich, dass ich es auf Dateiebene tun kann (wie das Sichern des Inhalts, das Neupartitionieren des Laufwerks und das Neuerstellen der LVM-Konfiguration), aber ich würde es vorziehen, die Arbeit zu erledigen, ohne LV von Grund auf neu konfigurieren zu müssen.
Vielen Dank im Voraus.
Akzeptierte Antwort:
Wenn Sie nur ein weiteres separates Dateisystem benötigen, müssen Sie keine neue Partition erstellen:Sie können ein weiteres logisches LVM-Volume innerhalb der bestehenden Volume-Gruppe erstellen, indem Sie den nicht zugeordneten Speicherplatz im PV verwenden. Aber wenn Sie speziell eine neue Partition benötigen , dann müssen Sie tun, was Sie ursprünglich geplant hatten.
GParted ist ein GUI-Tool, das den gesamten Vorgang zur Größenänderung von PV + Partitionen für Sie erledigen kann. Sie finden es höchstwahrscheinlich in der Paketsammlung Ihrer Distribution.
Aber wenn Sie es aus irgendeinem Grund nicht verwenden können oder wollen, lesen Sie weiter …
Das Reduzieren eines physischen LVM-Volumes mit nicht zugeordnetem Speicherplatz ist ziemlich einfach. Um beispielsweise die Größe von /dev/sda1 auf 40 GiB zu reduzieren:
# pvresize --setphysicalvolumesize 40G /dev/sda1
Dieser Befehl ist sicher, da er sich weigert, irgendetwas zu tun, wenn der Teil des PV, den er wegschneiden würde, zugewiesene Extents enthält.
Aber das ist nur der erste Schritt. Der zweite Schritt besteht darin, die Größe der Partition selbst zu reduzieren.
Sicherheitshalber wird empfohlen, das PV zunächst etwas stärker zu verkleinern, als Sie die Partition tatsächlich verkleinern möchten, damit Sie nach dem Verkleinern der Partition das PV explizit erweitern können, um die volle Größe der Partition abzudecken. Wenn der Erweiterungsvorgang fehlschlägt, wissen Sie sofort, dass bei der Größenänderung der Partition etwas schief gelaufen ist, und hinterlassen keine versteckten Fehler, die Sie oder jemand anderen in Zukunft in die Falle locken könnten.
Sie können eine Partition mit einem einfachen Linux fdisk
verkleinern Befehl, aber Sie müssen ein paar Dinge beachten:
- Bei Verwendung von
fdisk
Um die Größe einer Partition zu ändern, stellen Sie sicher, dass alle Partitionsgrößen und Startpositionen in Sektoren angezeigt werden Erste. In der Geschichte von Linuxfdisk
, ist sein Verhalten hier unterschiedlich:Moderne Versionen tun dies standardmäßig, ältere Versionen benötigen möglicherweise ein-u
oder-u=sectors
Option dazu. - Wenn Sie die Größe einer vorhandenen Partition ändern, können Sie den Startpunkt der Partition nicht verschieben. (Wenn Sie den Startpunkt verschieben, handelt es sich nicht mehr um eine einfache Größenänderung, sondern um eine komplexere Operation zum Verschieben von Partitionen.)
Bei Verwendung von fdisk
, werden alle Änderungen nur dann auf die Festplatte geschrieben, wenn Sie w
verwenden Befehl. Ich würde also vorschlagen, wie folgt vorzugehen:
- Verwenden Sie
sfdisk -d /dev/sda > /safe/location/partition_table_backup.dump
um die bestehende Partitionstabelle zu sichern. - starte
fdisk /dev/sda
im interaktiven Modus - benutze den
p
Befehl, um die aktuelle Partitionstabelle anzuzeigen und zu überprüfen, ob die Werte „Start“ und „Ende“ als Sektoren angezeigt werden. Notieren Sie sich den „Start“-Wert. - benutze den
d
Befehl zum Löschen des aktuellen Partitionseintrags fürsda1
. - benutze den
n
Befehl zum Neuerstellen des primären Partitionseintrags 1 fürsda1
in der gewünschten Größe, wobei darauf geachtet wird, die Position des ersten Sektors genau so anzugeben, wie sie war (d. h. dieselbe Nummer, die im „start“-Wert desp
angezeigt wurde Befehl). - benutze den
t
Befehl, um den Typ der Partition 1 auf „Linux LVM“ zu setzen. - überprüfen Sie Ihre Arbeit noch einmal
- benutze den
w
Befehl, um die aktualisierte Partitionstabelle zu schreiben undfdisk
zu beenden .
Achten Sie auf die von fdisk
angezeigte Meldung Am Ende. Wenn es heißt „Der Kernel verwendet immer noch die alte Tabelle“, blockiert etwas die Online-Aktualisierung der Partitionstabelle. Sie können partprobe /dev/sda
ausprobieren um den Kernel anzuweisen, die Partitionstabelle neu zu lesen (unter Verwendung einer neueren Schnittstelle als einige ältere Versionen von fdisk
verwenden, also könnte es helfen und sicherlich nicht schaden) und dann cat /proc/partitions
anschauen um zu sehen, ob die Partition jetzt vom Kernel in der erwarteten Größe erkannt wird.
Wenn die Größenänderung der Partition erfolgreich war, können Sie jetzt pvresize /dev/sda1
ausführen . Wenn Sie meinem Rat gefolgt sind und das PV anfänglich etwas kleiner als die gewünschte neue Größe der Partition geändert haben, sollte es das PV jetzt erfolgreich ein wenig erweitern, um die geänderte Partition automatisch vollständig abzudecken. Wenn dieser Befehl einen Fehler meldet, haben Sie wahrscheinlich einen Fehler bei der Angabe der neuen Größe gemacht und sollten sfdisk /dev/sda < /safe/location/partition_table_backup.dump
verwenden um die Partitionstabelle auf den ursprünglichen Zustand zurückzusetzen, und versuchen Sie es erneut.
(Auf sehr alten Systemen müssen Sie möglicherweise die VG deaktivieren, bevor Sie partprobe
ausführen oder sogar neu starten, damit das System die aktualisierte Partitionstabelle erneut lesen kann.)
Sobald die Größenänderung abgeschlossen ist, können Sie jetzt fdisk
verwenden erneut, um die zweite benötigte Partition zu erstellen. Ja, Sie könnten dies auch gemeinsam tun, während Sie die Größe der Partition ändern, aber nur eine Sache nach der anderen zu tun ist sicherer und stellt sicher, dass Sie Ihre Änderungen bei Bedarf einfach rückgängig machen können.