GNU/Linux >> Znalost Linux >  >> Linux

Je možné on-line zmenšit svazek EXT4 pomocí LVM?

Ř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.


Linux
  1. Vytváření logických svazků v Linuxu pomocí LVM

  2. Lum – Jak rozšířit oddíl o Lvm a obsažený fyzický svazek a logický svazek?

  3. Jak zmenšit fyzický objem?

  1. Rozšiřte a zmenšete svazky pomocí správy disků

  2. RHEL / CentOS :Jak zmenšit objem LVM

  3. CentOS / RHEL :Jak migrovat úložiště (LVM) pomocí příkazu pvmove

  1. CentOS / RHEL :Jak vytvořit nový odkládací oddíl založený na LVM

  2. CentOS / RHEL :Jak přidat fyzický objem (PV) do skupiny svazků (VG) v LVM

  3. Příkaz lvremove selže s chybou „LVM – nelze odstranit otevřený logický svazek“