GNU/Linux >> Tutoriels Linux >  >> Linux

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

Solution 1 :

Comme le dit le message, vous ne pouvez que grandir un système de fichiers ext4 en ligne. Si vous voulez 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.

Solution 2 :

Si le cas est un serveur distant sans console, vous pouvez réduire le système de fichiers à l'aide d'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

# 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

Exécutez maintenant update-initramfs -u -k kernel-name mettre à jour initramfs pour le noyau kernel-name qui est défini par défaut dans votre chargeur de démarrage (grub). En cas d'échec de démarrage, vous pouvez démarrer avec un autre noyau/initramfs sain non modifié. Ou vous pouvez utiliser all pour mettre à jour tous les noyaux, mais vous n'aurez alors aucun moyen de revenir en arrière.

Vérifiez que vous n'avez aucun outil dans votre système qui développe automatiquement le système de fichiers (par exemple, cloud-init - commentaire resizefs en /etc/cloud/cloud.cfg ).

Redémarrez. Vérifiez la taille du système de fichiers. Supprimez les scripts initramfs et exécutez update-intiramfs -u -k kernel-name à nouveau.

Vous pouvez maintenant réduire le périphérique sous-jacent avec parted resizepart / mdadm --grow --size= / lvresize -L . La taille du périphérique doit être supérieure à la taille du système de fichiers des scripts. Le moyen le plus simple de ne faire aucune erreur:si la taille de l'appareil est prévue - 6G. définissez la taille fs dans le script sur 5G. après le redimensionnement de fs - redimensionnez l'appareil à 6G, puis augmentez fs au maximum en ligne avec resize2fs /dev/sda1 . Maintenant, votre fs s'intègre parfaitement dans votre appareil.

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

Ceci est très utile pour chiffrer ou déplacer des rootfs, sans espace libre disponible pour la nouvelle partition.

Solution 3 :

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

resize2fs ne peut pas rétrécir en ligne ext4 partitions . Cette limitation, lorsqu'elle est appliquée sur la partition racine, peut vous amener à penser que vous ne pouvez pas éviter de redémarrer l'hôte pour permettre de réduire le root partition, ce qui pourrait être quelque chose que vous voulez éviter. Le processus lié vous permettra de démonter la partition racine sans aucun redémarrage. Donc, dans cette optique, ce n'est pas à proprement parler en ligne redimensionnement en fonction de l'état monté de la partition, mais il reste un redimensionnement en ligne en fonction de l'état en ligne du réseau ou de l'accessibilité de l'hôte.

Bien sûr, si vous souhaitez uniquement développer 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 donc vous pouvez umount en toute sécurité votre partition racine en direct et jouer avec elle. Une fois cela fait, vous allez 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...).

Je l'ai personnellement utilisé, et cela fonctionne également très bien 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 fort probable que cela fonctionnera sur votre OpenSUSE, mais probablement avec quelques adaptations.


Linux
  1. Comment créer une partition Lvm/volume physique> 2 To ?

  2. Augmentez et réduisez les volumes avec la gestion des disques

  3. RHEL / CentOS :Comment réduire le volume LVM

  4. CentOS / RHEL :Comment créer une nouvelle partition swap basée sur LVM

  5. La commande lvremove échoue avec l'erreur "LVM - Impossible de supprimer le volume logique ouvert"

Ajouter du stockage avec LVM

Installer Linux avec LVM

Un guide sur les instantanés LVM avec ext4 sur CentOS 7

Comment créer un groupe de volumes sous Linux avec LVM

Comment redimensionner un volume logique avec 5 commandes LVM simples

Les commandes LVM échouent avec "Échec du chargement du fichier de configuration /etc/lvm/lvm.conf"