Redimensionner le volume logique lvm2 et le système de fichiers: tailles exactes?

10

Sur mon serveur intranet, j'ai une partition / dev / sda5 de 100,00 Gio, que j'utilise comme volume physique pour lvm2.

  • C'est le seul volume physique de mon groupe de volumes vg01.
  • vg01 contient actuellement un volume logique lv01, utilisant l'intégralité de 100,00 Gio - enfin, en fait 99,99 Gio en raison d'un certain arrondi (c'est là que le problème commence).
  • lv01 contient un système de fichiers ext3, utilisant tout l'espace.

Je veux réduire lv01 à environ 97 Gio, donc je peux créer lv02 avec env. 3 Gio (j'en ai besoin pour prendre des instantanés lvm).

Ce que j'ai fait jusqu'à présent:

e2fsck -f /dev/mapper/vg01-lv01
resize2fs /dev/mapper/vg01-lv01 97G

Cela a bien fonctionné. Mais maintenant je vais devoir courir

lvreduce --size ? /dev/mapper/vg01-lv01

Et je ne sais pas quelle valeur exacte je devrai spécifier. La lvreducepage de manuel avertit explicitement que la taille résultante ne doit pas être inférieure au système de fichiers. Je ne veux pas non plus l'agrandir. Mais maintenant, j'ai des chiffres différents:

  • J'ai spécifié 97Gdans resize2fs.
  • df -h dit, c'est 96 G.
  • df dit, c'est 100115936 blocs 1K.
  • lvdisplay (bien sûr) rapporte toujours 99,99 Gio pour le volume logique.

Que dois-je spécifier lvreduce?

Éditer:

La réponse actuellement acceptée fournit une bonne solution de contournement. Cependant, afin d'intégrer de telles choses dans des scripts solides, etc., je préférerais généralement utiliser des mesures précises à la place. Ou peut-être existe-t-il déjà un script ou un outil fiable (!) Qui exécute la procédure de redimensionnement en une seule étape?

Chris Lercher
la source
3
Vous pouvez utiliser resize2fspour réduire le système de fichiers à 90 Go environ, puis fouiller avec des arguments pour lvreduce(suivi de resize2fs) pour voir ce qui fonctionne le mieux.
larsks
@larsks: Excellente idée (car resize2fs peut s'adapter automatiquement à la taille des partitions, tandis que lvreduce ne peut pas s'adapter automatiquement à la taille fs). Si personne ne connaît la réponse définitive à ma question, je pense que ce sera la solution.
Chris Lercher
Pourquoi ne pas simplement passer la même taille à lvreduce? À moins que vous ne fassiez une faute de frappe, lvm devrait reconnaître qu'elle a la même taille et ne pas la redimensionner à nouveau. Et si vous faites une faute de frappe, au moins vous avez évité de détruire votre système de fichiers. lvreduce -r -L 97G / dev / mapper / vg01-lv01
Bill

Réponses:

5

D'après mon expérience, LVM et resize2fs ont les mêmes idées sur ce que signifie "97G", donc spécifier la même taille aux deux endroits devrait être correct. Cependant, je suis paranoïaque, et dans la mesure du possible, utilisez toujours la stratégie suggérée par larsks dans les commentaires de la question et redimensionnée pour être un Go plus petit que je le souhaitais, faites la lvresize à la taille que je voulais, puis réexécutez resize2fs (sans taille) pour le laisser se dilater pour remplir le LV entier.

womble
la source
Je pense qu'il est important d'être "paranoïaque" ici - car non seulement il y a une possibilité que les fichiers actuels soient endommagés: si le système de fichiers est plus grand que le LV, je suppose qu'il peut faire des ravages avec les volumes suivants à tout moment A l'avenir.
Chris Lercher
Non, LVM interdira toute tentative d'écriture au-delà de la fin du LV, donc aucun autre LV ne peut être endommagé. Si le système de fichiers est tronqué, cependant, il en résulte des résultats assez catastrophiques.
womble
C'est intéressant - je ne savais pas qu'il vérifie chaque écriture! Bon à savoir.
Chris Lercher
14

Je pense que c'est mieux d'utiliser l'option --resizefs pour lvreduce / lvresize:

   -r, --resizefs
          Resize underlying filesystem together with the logical volume using fsadm(8).

Certes, cela ne vous aide pas maintenant , mais cela pourrait le devenir à l'avenir.

mjk
la source
Voilà ce que je cherchais! Cela semble être une nouvelle option: il est dans la version 2.02.74 (2) -RHEL mais il manque dans ma version 2.02.66 des outils LVM.
Chris Lercher
1
Lorsque j'avais déjà redimensionné le fs à l'aide d'autres outils, cette option a supprimé l'avertissement habituel et affiché le message "Le système de fichiers est déjà long de 3932160 blocs. Rien à faire!" Comme vous le souhaitez.
D Coetzee
Même en 2020, aucun des nombreux didacticiels sur l'extension / la réduction des volumes lvm proposés par Google sur sa première page de résultats de recherche ne mentionne cette option. Merci beaucoup!
Ivan Shatsky