Cambiar el tamaño del volumen lógico lvm2 y el sistema de archivos: ¿Tamaños exactos?

10

En mi servidor de intranet, tengo una partición de 100.00 GiB / dev / sda5, que uso como volumen físico para lvm2.

  • Es el único volumen físico en mi grupo de volúmenes vg01.
  • vg01 actualmente contiene un volumen lógico lv01, utilizando los 100.00 GiB completos, bueno, en realidad 99.99 GiB debido a algún redondeo (ahí es donde comienza el problema).
  • lv01 contiene un sistema de archivos ext3, que usa todo el espacio.

Quiero reducir lv01 a aproximadamente 97 GiB, para poder crear lv02 con aprox. 3 GiB (lo necesito para tomar instantáneas de lvm).

Lo que hice hasta ahora:

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

Esto ha funcionado bien. Pero ahora tendré que correr

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

Y no estoy seguro, qué valor exacto tendré que especificar. La lvreducepágina de manual advierte explícitamente que el tamaño resultante no debe ser menor que el sistema de archivos. Tampoco quiero hacerlo más grande de lo que tiene que ser. Pero ahora tengo números diferentes:

  • Especifiqué 97Gen resize2fs.
  • df -h dice, son 96 G.
  • df dice, es 100115936 1K-blocks.
  • lvdisplay (por supuesto) aún informa 99.99 GiB para el volumen lógico.

¿Para qué tendré que especificar lvreduce?

Editar:

La respuesta actualmente aceptada proporciona una buena solución. Sin embargo, para integrar tales cosas en scripts sólidos, etc., generalmente preferiría usar medidas precisas en su lugar. ¿O tal vez ya hay un script o herramienta confiable (!) Que realiza todo el procedimiento de cambio de tamaño en un solo paso?

Chris Lercher
fuente
3
Podría usar resize2fspara reducir el sistema de archivos a 90GiB más o menos, y luego revisar los argumentos lvreduce(seguidos de resize2fs) para ver qué funciona mejor.
Larsks
@larsks: Gran idea (porque resize2fs puede ajustarse automáticamente al tamaño de las particiones, mientras que lvreduce no puede ajustarse automáticamente al tamaño fs). Si nadie sabe la respuesta definitiva a mi pregunta, creo que esta será la solución.
Chris Lercher
¿Por qué no simplemente pasa el mismo tamaño a lvreduce? A menos que haga un error tipográfico, lvm debería reconocer que es del mismo tamaño y no cambiar su tamaño nuevamente. Y si hace un error tipográfico, al menos evitó destruir su sistema de archivos. lvreduce -r -L 97G / dev / mapper / vg01-lv01
Bill

Respuestas:

5

En mi experiencia, LVM y resize2fs tienen las mismas ideas sobre lo que significa "97G", por lo que especificar el mismo tamaño en ambos lugares debería estar bien. Sin embargo, soy paranoico, y siempre que sea posible, siempre use la estrategia sugerida por los larsks en los comentarios de las preguntas y cambie el tamaño para que sea un GB más pequeño de lo que quería, hice el tamaño del tamaño que quería y luego vuelva a ejecutar resize2fs (sin un tamaño) para permitir que se expanda nuevamente para llenar todo el LV.

womble
fuente
Creo que es importante ser "paranoico" aquí, porque no solo existe la posibilidad de que los archivos actuales se dañen: si el sistema de archivos es más grande que el LV, supongo que puede causar estragos en los siguientes volúmenes en cualquier momento en el futuro.
Chris Lercher
No, LVM prohibirá cualquier intento de escritura más allá del final del LV, por lo que no se pueden dañar otros LV. Sin embargo, si el sistema de archivos se trunca, resulta en resultados bastante catastróficos.
womble
Eso es interesante: ¡no sabía que verifica cada escritura! Bueno saber.
Chris Lercher
14

Creo que esto se hace mejor usando la opción --resizefs para lvreduce / lvresize:

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

Es cierto que eso no te ayuda ahora , pero puede que lo hagas en el futuro.

mjk
fuente
Eso es lo que estaba buscando! Sin embargo, parece ser una nueva opción: está en la versión 2.02.74 (2) -RHEL pero falta en mi versión 2.02.66 de herramientas LVM.
Chris Lercher
1
Cuando ya había cambiado el tamaño de fs con otras herramientas, esta opción suprimió la advertencia habitual e imprimió el mensaje "El sistema de archivos ya tiene 3932160 bloques de largo. ¡Nada que hacer!" Justo como lo desee.
D Coetzee
Incluso en 2020, ninguno de los varios tutoriales sobre la extensión / reducción de los volúmenes lvm propuestos por Google en su primera página de resultados de búsqueda menciona esta opción. ¡Muchas gracias!
Ivan Shatsky