GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ist es möglich, ein EXT4-Volume mit LVM online zu verkleinern?

Lösung 1:

Wie die Botschaft schon sagte, du kannst nur wachsen ein ext4-Dateisystem online. Wenn Sie es verkleinern möchten, müssen Sie es zuerst aushängen.

Laut dem Betreuer des ext4-Dateisystems, Ted Ts'o:

Tut mir leid, das Online-Schrumpfen wird nicht unterstützt.

Lösung 2:

Wenn es sich um einen Remote-Server ohne Konsole handelt, können Sie das Dateisystem beim Neustart mit initramfs verkleinern. Sie müssen resize2fs zu initramfs hinzufügen und es ausführen, bevor Sie root einhängen.

Debian/Ubuntu-Beispiel:

/etc/initramfs-tools/hooks/resizefs (ausführbar):

#!/bin/sh

set -e

PREREQS=""

prereqs() { echo "$PREREQS"; }

case $1 in
    prereqs)
        prereqs
        exit 0
    ;;
esac

. /usr/share/initramfs-tools/hook-functions

copy_exec /sbin/e2fsck
copy_exec /sbin/resize2fs
    
exit 0

/etc/initramfs-tools/scripts/local-premount/resizefs (ausführbar)

#!/bin/sh

set -e

PREREQS=""

prereqs() { echo "$PREREQS"; }

case "$1" in
    prereqs)
        prereqs
        exit 0
    ;;
esac

# simple device example
/sbin/e2fsck -yf /dev/sda1
/sbin/resize2fs /dev/sda1 5G # see size info below
/sbin/e2fsck -yf /dev/sda1

# complex device example
# activate md-raid containing FS/PV
#/sbin/mdadm -A /dev/md0
# activate VG containing FS
#/sbin/lvm vgchange -ay vg0
# resize
#/sbin/e2fsck -yf /dev/vg0/root # or /dev/md0
#/sbin/resize2fs /dev/vg0/root 5G
#/sbin/e2fsck -yf /dev/vg0/root

Führen Sie nun update-initramfs -u -k kernel-name aus um initramfs für den Kernel kernel-name zu aktualisieren die in Ihrem Bootloader (grub) standardmäßig eingestellt ist. Im Falle eines Startfehlers können Sie mit einem anderen unveränderten gesunden Kernel/initramfs booten. Oder Sie können all verwenden um alle Kernel zu aktualisieren, aber dann gibt es keinen Weg zurück.

Stellen Sie sicher, dass Sie keine Tools in Ihrem System haben, die das Dateisystem automatisch vergrößern (z. B. cloud-init - Kommentar resizefs in /etc/cloud/cloud.cfg ).

Neustart. Überprüfen Sie die Dateisystemgröße. Entfernen Sie initramfs-Skripte und führen Sie update-intiramfs -u -k kernel-name aus nochmal.

Jetzt können Sie das zugrunde liegende Gerät mit parted resizepart verkleinern / mdadm --grow --size= / lvresize -L . Die Größe des Geräts sollte größer sein als die Größe des Dateisystems aus den Skripten. Der einfachste Weg, keine Fehler zu machen:wenn geplante Gerätegröße - 6G. Stellen Sie die fs-Größe im Skript auf 5G ein. nachdem die Größe von fs geändert wurde - Größe des Geräts auf 6 GB ändern, dann fs online mit resize2fs /dev/sda1 auf Maximum vergrößern . Jetzt passt Ihr fs perfekt in Ihr Gerät.

Verwenden Sie für dracut (Fedora, CentOS) dieselbe Logik (/usr/lib/dracut/modules.d).

Dies ist sehr nützlich zum Verschlüsseln oder Verschieben von rootfs, wenn kein freier Speicherplatz für die neue Partition verfügbar ist.

Lösung 3:

Ja, Sie können eine Root-Partition ohne Neustart verkleinern/verschieben/vergrößern (noch livecd, noch usbkey):Konsultieren Sie diese Antwort. Es ist sehr gut geschrieben und leicht zu befolgen, obwohl es ziemlich lang und ein wenig riskant ist.

resize2fs kann ext4 online nicht verkleinern Partitionen . Wenn diese Einschränkung auf die Root-Partition angewendet wird, können Sie glauben, dass Sie den Neustart des Hosts nicht vermeiden können, um das Verkleinern von root zu ermöglichen Partition, die Sie möglicherweise vermeiden möchten. Der verknüpfte Prozess ermöglicht es Ihnen, die Root-Partition ohne Neustarts auszuhängen. Insofern ist es streng genommen nicht online Größenänderung in Bezug auf den gemounteten Zustand der Partition, bleibt jedoch eine Online-Größenänderung in Bezug auf den Netzwerk-Online-Status oder die Erreichbarkeit des Hosts.

Wenn Sie natürlich nur Ihre ext4-Partition vergrößern möchten, sollten Sie sich an die herkömmlich funktionierende resize2fs halten Lösungen.

Die allgemeine Lösung, die ich verlinkt habe, funktioniert zum Beispiel mit jeder Art von dedizierter oder VPS-Lösung.

TLDR; diese Lösung impliziert pivot_root bis tmpfs Sie können also umount sicher Ihre Root-Partition leben und damit herumspielen. Sobald Sie fertig sind, werden Sie pivot_root zurück auf Ihre neue Root-Partition.

Dies erlaubt so ziemlich jede Manipulation am Root-Dateisystem (es verschieben, das Dateisystem ändern, sein physisches Gerät ändern ...).

Ich habe dies persönlich verwendet und es funktioniert auch auf Debian-Systemen sehr gut, aber der Leitfaden wurde ursprünglich 2007 für Redhat geschrieben, die Antwort, die ich verlinkt habe, wurde für CentOS7 aktualisiert. Es ist sehr wahrscheinlich, dass es auf Ihrem OpenSUSE funktioniert, wenn auch wahrscheinlich mit einigen Anpassungen.


Linux
  1. RHEL / CentOS :So verkleinern Sie das LVM-Volumen

  2. CentOS / RHEL :So migrieren Sie Speicher (LVM) mit dem Befehl pvmove

  3. CentOS / RHEL :So fügen Sie ein physisches Volume (PV) zu einer Volume-Gruppe (VG) in LVM hinzu

  4. So verschieben Sie Swap von der Festplattenpartition auf das LVM-Volume in Linux

  5. LVM-Befehle schlagen fehl mit „Failed to load config file /etc/lvm/lvm.conf“

Speicher mit LVM hinzufügen

Installieren Sie Linux mit LVM

Ein Leitfaden zu LVM-Snapshots mit ext4 unter CentOS 7

So erstellen Sie eine Volumengruppe in Linux mit LVM

So ändern Sie die Größe eines logischen Volumes mit 5 einfachen LVM-Befehlen

Mounten Sie eine ext4-Partition unter Mac OS X