GNU/Linux >> Linux Esercitazione >  >> Linux

È possibile ridurre in linea un volume EXT4 con LVM?

Soluzione 1:

Come diceva il messaggio, puoi solo crescere un filesystem ext4 online. Se vuoi rimpicciolirlo, dovrai prima smontarlo.

Secondo il manutentore del filesystem ext4, Ted Ts'o:

Spiacenti, la riduzione in linea non è supportata.

Soluzione 2:

Se il caso è un server remoto senza console, puoi ridurre il filesystem usando initramfs durante il riavvio. Devi aggiungere resize2fs a initramfs ed eseguirlo prima di montare root.

Esempio Debian/Ubuntu:

/etc/initramfs-tools/hooks/resizefs (eseguibile):

#!/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 (eseguibile)

#!/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

Ora esegui update-initramfs -u -k kernel-name per aggiornare initramfs per il kernel kernel-name che è impostato come predefinito nel tuo bootloader (grub). In caso di errore di avvio, è possibile eseguire l'avvio con un altro kernel/initramfs integro non modificato. Oppure puoi usare all per aggiornare tutti i kernel, ma poi non hai modo di tornare indietro.

Verifica di non avere strumenti nel tuo sistema che aumentino automaticamente il filesystem (ad es. cloud-init - commento resizefs in /etc/cloud/cloud.cfg ).

Riavviare. Controlla la dimensione del file system. Rimuovi gli script initramfs ed esegui update-intiramfs -u -k kernel-name di nuovo.

Ora puoi ridurre il dispositivo sottostante con parted resizepart / mdadm --grow --size= / lvresize -L . La dimensione del dispositivo dovrebbe essere maggiore della dimensione del filesystem dagli script. Il modo più semplice per non commettere errori:se si pianifica la dimensione del dispositivo - 6G. imposta la dimensione fs nello script su 5G. dopo che fs è stato ridimensionato:ridimensiona il dispositivo a 6G, quindi aumenta fs al massimo online con resize2fs /dev/sda1 . Ora il tuo fs si adatta perfettamente al tuo dispositivo.

Per dracut (Fedora, CentOS) usa la stessa logica (/usr/lib/dracut/modules.d).

Questo è molto utile per crittografare o spostare rootfs, senza spazio libero disponibile per la nuova partizione.

Soluzione 3:

Sì, puoi ridurre/spostare/ingrandire una partizione root senza alcun riavvio (né livecd, né usbkey):consulta questa risposta. È scritto molto bene e facile da seguire, anche se piuttosto lungo e un po' rischioso.

resize2fs non può ridurre online ext4 partizioni . Questa limitazione, se applicata alla partizione root, potrebbe farti pensare che non puoi evitare di riavviare l'host per consentire la riduzione del root partizione, che potrebbe essere qualcosa che vuoi evitare. Il processo collegato ti consentirà di smontare la partizione di root senza alcun riavvio. Quindi, in questa luce, non è propriamente online ridimensionamento rispetto allo stato montato della partizione, tuttavia rimane un ridimensionamento online rispetto allo stato online della rete o alla raggiungibilità dell'host.

Ovviamente, se vuoi solo aumentare la tua partizione ext4, dovresti attenerti al resize2fs funzionante convenzionale soluzioni.

La soluzione generale che ho collegato funzionerà su qualsiasi tipo di soluzione dedicata o VPS, ad esempio.

TLDR; questa soluzione implica pivot_root a tmpfs quindi puoi umount in modo sicuro la tua partizione di root viva e giocherella con essa. Una volta fatto, pivot_root sulla tua nuova partizione root.

Ciò consente praticamente qualsiasi manipolazione sul file system root (spostalo, cambia file system, cambia il suo dispositivo fisico...).

L'ho usato personalmente e funziona molto bene anche sul sistema debian, ma la guida è stata inizialmente scritta nel 2007 per redhat, la risposta che ho collegato è stata aggiornata per CentOS7. È molto probabile che funzioni sul tuo OpenSUSE, anche se probabilmente con qualche adattamento.


Linux
  1. Creazione di volumi logici in Linux con LVM

  2. Lum - Come estendere una partizione con un Lvm e il volume fisico contenuto e il volume logico?

  3. Come ridurre un volume fisico?

  4. Come creare una partizione Lvm/volume fisico> 2 TB?

  5. Espandi e riduci i volumi con Gestione disco

Aggiungi spazio di archiviazione con LVM

Installa Linux con LVM

Una guida sugli snapshot LVM con ext4 su CentOS 7

Come creare un gruppo di volumi in Linux con LVM

Come ridimensionare un volume logico con 5 semplici comandi LVM

Monta una partizione ext4 su Mac OS X