web-dev-qa-db-fra.com

Est-il possible de réduire en ligne un volume EXT4 avec LVM?

Aujourd'hui, j'ai essayé cela sur ma machine avec OpenSUSE 12.3 (noyau 3.7):

# resize2fs /dev/mapper/system-srv 2G
resize2fs 1.42.6 (21-Sep-2012)
Filesystem at /dev/mapper/system-srv is mounted on /srv; on-line resizing required
resize2fs: On-line shrinking not supported

/dev/mapper/system-srv est un volume EXT4.

Est-ce vraiment non pris en charge ou il me manque quelque chose?

47
Alicia

Comme le dit le message, vous ne pouvez agrandir qu'un système de fichiers en ligne. Si vous souhaitez le réduire, vous devrez d'abord le démonter.

Selon le mainteneur du système de fichiers ext4 , Ted Ts'o:

Désolé, la réduction en ligne n'est pas prise en charge.

71
Michael Hampton

Oui, vous pouvez réduire/déplacer/agrandir une partition racine sans redémarrage (ni livecd, ni clé usb): consultez cette réponse =. C'est très bien écrit et facile à suivre, bien que assez long et un peu risqué.

resize2fs ne peut pas se réduire en ligne ext4 partitions . Cette limitation, lorsqu'elle est appliquée sur la partition racine, peut vous faire penser que vous ne pouvez pas éviter de redémarrer l'hôte pour autoriser la réduction de la partition root, ce que vous pourriez éviter. Le processus lié vous permettra de démonter la partition racine sans redémarrage. Dans cette optique, il ne s'agit donc pas à proprement parler de redimensionnement en ligne en ce qui concerne l'état monté de la partition, mais il reste un redimensionnement en ligne en ce qui concerne le réseau état en ligne ou accessibilité de l'hôte.

Bien sûr, si vous souhaitez uniquement agrandir votre partition ext4, vous devez vous en tenir au fonctionnement conventionnel resize2fs solutions.

La solution générale que j'ai liée fonctionnera sur tout type de solution dédiée ou VPS par exemple.

TLDR; cette solution implique de pivot_root à tmpfs pour que vous puissiez umount en toute sécurité votre partition racine en direct et la manipuler. Une fois cela fait, vous pivot_root de retour sur votre nouvelle partition racine.

Cela permet à peu près n'importe quelle manipulation sur le système de fichiers racine (le déplacer, changer le système de fichiers, changer son périphérique physique ...).

J'ai personnellement utilisé cela, et cela fonctionne très bien également sur le système Debian, mais le guide a été initialement écrit en 2007 pour redhat, la réponse que j'ai liée a été mise à jour pour CentOS7. Il est très probable que cela fonctionne sur votre OpenSUSE, bien que probablement avec une certaine adaptation.

18
vaab

Si le cas est un serveur distant sans console, vous pouvez réduire le système de fichiers en utilisant initramfs lors du redémarrage. Vous devez ajouter resize2fs à initramfs et l'exécuter avant de monter root.

Exemple Debian/Ubuntu:

/ etc/initramfs-tools/hooks/resizefs (exécutable):

#!/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 (exécutable)

#!/bin/sh

set -e

PREREQS=""

prereqs() { echo "$PREREQS"; }

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

/sbin/e2fsck -yf /dev/sda1
/sbin/resize2fs /dev/sda1 5G
/sbin/e2fsck -yf /dev/sda1

Maintenant, exécutez update-initramfs, redémarrez, vérifiez la taille, supprimez ces scripts et à nouveau update-intiramfs.

Pour dracut (Fedora, CentOS), utilisez la même logique (/usr/lib/dracut/modules.d).

Ceci est très utile pour le cryptage ou le déplacement de rootfs, sans espace libre disponible pour la nouvelle partition.

14
urusha