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.