Wie werden logische Volumes an zusammenhängenden physischen Ausmaßen ausgerichtet?

7

Ich habe ursprünglich 2 logische Volumes in einer Volume-Gruppe erstellt. Die 2 logischen Volumes belegen die gesamte Volume-Gruppe und befinden sich in zusammenhängenden physischen Ausmaßen.

Nachdem ich das erste logische Volume (LV_root) verkleinert habe, wird es kleiner und leere physische Bereiche werden zwischen den beiden logischen Volumes angezeigt. Hier ist die Ausgabe des Befehls "pvdisplay":

$ sudo pvdisplay --maps

  --- Physical volume ---
  PV Name               /dev/sda5
  VG Name               VG_i5_2500
  PV Size               99.65 GiB / not usable 2.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              25510
  Free PE               3025
  Allocated PE          22485
  PV UUID               3nRvBS-qq10-8XZZ-n3x9-gfHx-hrxN-AouB3q

  --- Physical Segments ---
  Physical extent 0 to 18431:
    Logical volume  /dev/VG_i5_2500/LV_root
    Logical extents 0 to 18431
  Physical extent 18432 to 21456:
    FREE
  Physical extent 21457 to 25509:
    Logical volume  /dev/VG_i5_2500/LV_swap
    Logical extents 0 to 4052

Ich möchte wissen, dass es eine Möglichkeit gibt, LV_swap in Richtung LV_root zu verschieben, sodass keine leeren physischen Bereiche zwischen ihnen vorhanden sind (dh im Allgemeinen, wie logische Volumes innerhalb derselben Volume-Gruppe verschoben werden, um mehr Räume für zusammenhängende freie physische Bereiche zu schaffen .)?

Sind außerdem zusammenhängende freie physische Ausmaße erforderlich, wenn neue logische Volumes in einer Volume-Gruppe erstellt werden?

user1129812
quelle

Antworten:

1

lvmoveIn Standard-LVM gibt es keinen Befehl (obwohl HP möglicherweise einen in einer benutzerdefinierten Version hat).

Der Weg, dies zu tun, wäre, den Inhalt des Volumes an eine andere Stelle zu verschieben, ihn dann zu löschen und neu zu erstellen und dann zurück zu kopieren.

Da Ihre Lautstärke ausgetauscht wird, ist das Verschieben des Inhalts nicht erforderlich. Sie können swapoffdas Volume löschen, dann ein neues Swap-Volume erstellen und swapon.

Man könnte jedoch sagen, dass ein Ziel von LVM sich damit nicht befassen muss. Aneinandergrenzende physische Bereiche sind nicht erforderlich, um ein Volume zu erstellen. Sie werden lediglich in die Lücken eingefügt. Die Hauptzeit, in der Sie eine Leistungseinbuße erhalten würden, wäre, wenn Sie eine Datei hätten, die nicht zusammenhängende Bereiche überschreitet und daher beim Lesen eine zusätzliche Suche erfordern würde.

Paul
quelle
1
Es scheint nicht den Befehl "lvmove" zu geben, sondern nur den Befehl "pvmove". "pvmove" scheint ein bestimmtes logisches Volume zu verschieben, benötigt jedoch ein anderes physisches Volume für die Verschiebung und die Lösung wird relativ kompliziert. Ich frage mich, ob es ein "gparted" -ähnliches LVM-Tool gibt, mit dem sich Logical Volume auf einfache Weise verschieben lässt.
user1129812
@ user1129812 Ja, das ist, was ich sage, lvmoveexistiert nicht in Standard-LVM. pvmovewürde helfen, wenn du ein anderes pv hättest, dann könntest du es danach zurück verschieben, und es würde so verschoben werden, dass es die Lücke schließt. Es gibt kein Tool wie gparted, um dies zu tun, so dass Sie mit der Option in der Antwort (oder Varianten davon)
Paul
Ja. Ich habe Ihre Formulierungen in gewisser Weise falsch interpretiert. Wenn es kein gparted-ähnliches LVM-Tool gibt, ist die Verwendung von "pvmove" möglicherweise die derzeit beste Lösung. Danke für Ihren Vorschlag.
user1129812
12

Laut pvmoveManpage besteht die Möglichkeit, Extents auf demselben Gerät zu verschieben:

If the source and destination are on the same disk, the anywhere allocation policy would be needed, like this:

pvmove --alloc anywhere /dev/sdb1:1000-1999 /dev/sdb1:0-999

Möglicherweise sind überlappende Regionen verboten, aber dann können Sie Ihre Lautstärke in zwei Schritten verschieben:

pvmove --alloc anywhere /dev/sda5:21457-24481 /dev/sda:18432-21456
pvmove --alloc anywhere /dev/sda5:24482-25509 /dev/sda:21457-22484
Sonntag
quelle