Auf meinem Intranetserver habe ich eine 100,00 GiB-Partition / dev / sda5, die ich als physisches Volume für lvm2 verwende.
- Es ist das einzige physische Volume in meiner Volume-Gruppe vg01.
- vg01 enthält derzeit ein logisches Volume lv01, das die vollen 100,00 GiB verwendet - also 99,99 GiB aufgrund einiger Rundungen (hier beginnt das Problem).
- lv01 enthält ein ext3-Dateisystem, das den gesamten Speicherplatz nutzt.
Ich möchte lv01 auf ungefähr 97 GiB reduzieren, damit ich lv02 mit ungefähr 97 GiB erstellen kann. 3 GiB (Ich brauche es, um lvm-Schnappschüsse zu machen).
Was ich bisher gemacht habe:
e2fsck -f /dev/mapper/vg01-lv01
resize2fs /dev/mapper/vg01-lv01 97G
Das hat gut funktioniert. Aber jetzt muss ich rennen
lvreduce --size ? /dev/mapper/vg01-lv01
Und ich bin mir nicht sicher, welchen genauen Wert ich angeben muss. Die lvreduce
Manpage warnt ausdrücklich davor, dass die resultierende Größe nicht kleiner als das Dateisystem sein darf. Ich möchte es auch nicht größer machen, als es sein muss. Aber jetzt habe ich verschiedene Nummern:
- Ich habe
97G
in resize2fs angegeben. df -h
sagt, es ist 96 G.df
sagt, es ist 100115936 1K-Blöcke.- lvdisplay meldet (natürlich) immer noch 99,99 GiB für das logische Volume.
Wofür muss ich angeben lvreduce
?
Bearbeiten:
Die aktuell akzeptierte Antwort bietet eine gute Problemumgehung. Um solche Dinge jedoch in solide Skripte usw. zu integrieren, würde ich im Allgemeinen lieber präzise Messungen verwenden. Oder gibt es bereits ein zuverlässiges (!) Skript oder Tool, das den gesamten Größenänderungsvorgang in einem Schritt ausführt?
resize2fs
das Dateisystem auf etwa 90 GB reduzieren und dann mit Argumenten herumlvreduce
(gefolgt vonresize2fs
) herumspielen, um zu sehen, was am besten funktioniert.