Řešení 1:
Jak bylo uvedeno ve zprávě, můžete pouze růst souborový systém ext4 online. Pokud jej chcete zmenšit, budete jej muset nejprve odpojit.
Podle správce souborového systému ext4, Teda Ts'o:
Litujeme, online zmenšování není podporováno.
Řešení 2:
Pokud jde o vzdálený server bez konzole, můžete při restartu zmenšit souborový systém pomocí initramfs. Musíte přidat resize2fs do initramfs a spustit jej před připojením root.
Příklad Debian/Ubuntu:
/etc/initramfs-tools/hooks/resizefs (spustitelný soubor):
#!/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 (spustitelný soubor)
#!/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
Nyní spusťte update-initramfs -u -k kernel-name
aktualizovat initramfs pro jádro kernel-name
který je nastaven jako výchozí ve vašem bootloaderu (grub). V případě selhání zavádění - můžete zavést s jiným neupraveným zdravým jádrem/initramfs. Nebo můžete použít all
aktualizovat všechna jádra, ale pak už nemáte cestu zpět.
Zkontrolujte, zda v systému nemáte žádné nástroje, které automaticky rozšiřují souborový systém (např. cloud-init - komentář resizefs
v /etc/cloud/cloud.cfg
).
Restartujte. Zkontrolujte velikost souborového systému. Odeberte skripty initramfs a spusťte update-intiramfs -u -k kernel-name
znovu.
Nyní můžete zmenšit základní zařízení pomocí parted resizepart
/ mdadm --grow --size=
/ lvresize -L
. Velikost zařízení by měla být větší než velikost souborového systému ze skriptů. Nejjednodušší způsob, jak nedělat chyby:pokud je plánovaná velikost zařízení - 6G. nastavte velikost fs ve skriptu na 5G. po změně velikosti fs – změňte velikost zařízení na 6G, poté zvětšete fs na maximum online pomocí resize2fs /dev/sda1
. Nyní váš fs dokonale zapadne do vašeho zařízení.
Pro dracut (Fedora, CentOS) použijte stejnou logiku (/usr/lib/dracut/modules.d).
To je velmi užitečné pro šifrování nebo přesouvání rootfs, bez volného místa pro nový oddíl.
Řešení 3:
Ano, můžete zmenšit/přesunout/rozrůst kořenový oddíl bez restartování (ani livecd, ani usbkey):podívejte se na tuto odpověď. Je to velmi dobře napsané a snadno sledovatelné, i když poměrně dlouhé a trochu riskantní.
resize2fs
nelze zmenšit online ext4
oddíly . Toto omezení, pokud je aplikováno na kořenový oddíl, vás může vést k domněnce, že se nemůžete vyhnout restartování hostitele, aby bylo možné zmenšit root
oddílu, což může být něco, čemu se chcete vyhnout. Propojený proces vám umožní odpojit kořenový oddíl bez jakéhokoli restartu. Takže v tomto světle to není striktně vzato online změna velikosti s ohledem na připojený stav oddílu, nicméně zůstává online změna velikosti s ohledem na stav sítě online nebo dosažitelnost hostitele.
Samozřejmě, pokud chcete pouze rozšířit svůj oddíl ext4, měli byste se držet konvenčně fungujícího resize2fs
řešení.
Obecné řešení, které jsem propojil, bude fungovat například na jakémkoli typu vyhrazeného řešení nebo řešení VPS.
TLDR; toto řešení předpokládá pivot_root
na tmpfs
takže můžete umount
bezpečně váš kořenový oddíl žít a hrát si s ním. Po dokončení budete pivot_root
zpět na váš nový kořenový oddíl.
To umožňuje téměř jakoukoli manipulaci s kořenovým souborovým systémem (přesunout jej, změnit souborový systém, změnit jeho fyzické zařízení...).
Osobně jsem to použil a funguje to velmi dobře také na systému debian, ale příručka byla původně napsána v roce 2007 pro redhat, odpověď, kterou jsem uvedl, byla aktualizována pro CentOS7. Je vysoce pravděpodobné, že bude fungovat na vašem OpenSUSE, i když pravděpodobně s určitou úpravou.