it-swarm.com.de

Wie kann die Größe der Volumengruppe in LVM reduziert werden?

[[email protected] ~] vgdisplay
  --- Volume group ---
  VG Name               vg_root
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               297,59 GiB
  PE Size               4,00 MiB
  Total PE              76182
  Alloc PE / Size       59392 / 232,00 GiB
  Free  PE / Size       16790 / 65,59 GiB
  VG UUID               XXXXXXXXXX

PV:

[[email protected] ~] pvdisplay

  --- Physical volume ---
  PV Name               /dev/mapper/udisks-luks-uuid-ASDFASDF
  VG Name               vg_root
  PV Size               297,59 GiB / not usable 2,00 MiB
  Allocatable           yes 
  PE Size               4,00 MiB
  Total PE              76182
  Free PE               16790
  Allocated PE          59392
  PV UUID               YYYYYYYYYYY

Ich habe also eine VG mit 65 GByte freiem Speicherplatz. Aber wenn ich diese Volumengruppe um ~ 50 GByte verkleinern möchte:

pvresize -tv --setphysicalvolumesize 247G /dev/mapper/udisks-luks-uuid-ASDFASDF
  Test mode: Metadata will NOT be updated and volumes will not be (de)activated.
    Using physical volume(s) on command line
    Test mode: Skipping archiving of volume group.
    /dev/mapper/udisks-luks-uuid-ASDFASDF: Pretending size is 517996544 not 624087040 sectors.
    Resizing volume "/dev/mapper/udisks-luks-uuid-ASDFASDF" to 624087040 sectors.
    Resizing physical volume /dev/mapper/udisks-luks-uuid-ASDFASDF from 0 to 63231 extents.
  /dev/mapper/udisks-luks-uuid-ASDFASDF: cannot resize to 63231 extents as later ones are allocated.
  0 physical volume(s) resized / 1 physical volume(s) not resized
    Test mode: Wiping internal cache
    Wiping internal VG cache

Die Fehlermeldung lautet also:

cannot resize to 63231 extents as later ones are allocated.

F : Wie kann ich die vg_root defragmentieren, um den nicht benötigten Teil davon zu entfernen?

ps: Ich habe bereits herausgefunden, dass ich nur die Größe der PV ändern muss, um die Größe der VG zu ändern, oder gibt es bessere Befehle, um die Größe der VG zu ändern (Beispiel: Was kann ich tun, wenn ich mehrere VGs auf einer PV ändern würde? ... )?

36
gasko peter

Sie können pvmove verwenden, um diese Bereiche an den Anfang des Geräts oder eines anderen Geräts zu verschieben:

Sudo pvmove --alloc anywhere /dev/device:60000-76182

Dann wählt pvmove aus, wohin die Extents verschoben werden sollen, oder Sie können angeben, wohin sie verschoben werden sollen.

Sehen pvs -v --segments /dev/device um zu sehen, welche Extents aktuell zugewiesen sind.

36

Dies sind die Schritte, die zum Ändern der Größe einer LVM- oder LVM2-Partition erforderlich sind:

Sudo lvresize --verbose --resizefs -L -150G /dev/ubuntu/root

Sudo pvresize --setphysicalvolumesize {any size here} /dev/sda5

Der letzte Befehl pvresize kann den Fehler ergeben

/dev/sda5: cannot resize to xxxxx extents as later ones are allocated.

Sie müssen den nicht zugewiesenen Speicherplatz am Ende des LVM neu anordnen. Das heißt nach root und swap_1 Partition. Mit diesem Befehl können Sie die aktuelle Anordnung des Raums anzeigen

pvs -v --segments /dev/sda5

pvs zeigt die Ausgabe wie folgt an

/dev/sda5 ubuntu lvm2 a-- 698.04g 150g 0 xxx+1 root 0 linear /dev/sda:0-xxx
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx+1 iii 0 free
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g yyyy jjj swap 0 linear /dev/sda5:yyyy-end

Verwenden Sie nun pvmove, um die externe Fragmentierung zu entfernen:

Sudo pvmove --alloc anywhere /dev/sda5:yyyy-end

Nun wollen wir sehen, ob das Verschieben des Swap-Volumes erfolgreich war.

pvs -v --segments /dev/sda5

sollte die neue Reihenfolge der Bände anzeigen:

/dev/sda5 ubuntu lvm2 a-- 698.04g 150g 0 xxx+1 root 0 linear /dev/sda:0-xxx
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx+1 iii swap 0 linear /dev/sda5:xxx+1-yyyy
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g yyyy+1 end 0 free

Verwenden Sie danach GParted und ändern Sie die Größe des LVM auf den maximal genutzten Bereich. Der Rest wird in nicht zugewiesenem Raum sein.

35
Ujjal Roy

Dieser ältere Beitrag behandelt diese Art des Schrumpfens, damit Sie den neuen Platz für etwas anderes nutzen können. Sie müssen die Größe jedoch zuvor auf die Daten ändern. Dies sollte diese und andere Fehler abdecken, die Sie ebenfalls erhalten. Wenn es älter ist, lesen Sie zuerst durch:

1
DigitalTidBits

Frühere Antworten halfen mir, dieses Problem zu lösen, aber ich musste es automatisieren und schrieb pvshrink

# ./pvshrink /dev/vda2 
Moving 50 blocks from 714 to 664
  /dev/vda2: Moved: 4.00%
  /dev/vda2: Moved: 100.00%
50 of 50 (100.00%) done
Defragmentation complete.
Metadata size: 1048576 b
PE size: 4.0 MiB
Total size 1048576 b + 714 x 4194304 b = 2995781632 b (2.8 GiB)
    Wiping internal VG cache
    Wiping cache of LVM-capable devices
    Archiving volume group "Fedora" metadata (seqno 15).
    /dev/vda2: Pretending size is 5851136 not 6287360 sectors.
    Resizing volume "/dev/vda2" to 5851136 sectors.
    Resizing physical volume /dev/vda2 from 0 to 714 extents.
    Updating physical volume "/dev/vda2"
    Creating volume group backup "/etc/lvm/backup/Fedora" (seqno 16).
  Physical volume "/dev/vda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

Dadurch wird pvmove so oft für Sie aufgerufen, wie zum Defragmentieren des PV erforderlich ist, und anschließend wird die Größe auf die minimal mögliche Größe geändert (die aufgrund von Metadaten geringfügig über der verwendeten Größe liegt).

0
pdw

ich benutze diese Methode, nicht sicher, ob es die beste ist, aber für mich funktioniert

verwenden Sie es mit Vorsicht und nicht SysAdmin

berechnen Sie die Differenz, die das Problem verursacht

324% 4 = 0 kein Problem

aber

324% 32 = 10,125

das ist das Problem, also passt es nicht

ich denke, es heißt "Get Real Number".

lvmdiskscan

betroffene Partitionen auflisten

dann

pvresize /dev/*** --setphysicalvolumesize ***M

ich muss zusätzliche 4M hinzufügen, um zu arbeiten, ich denke, es hängt mit der alten PE-Größe zusammen

endlich

vgchange -s 32M **
0