¿LVM necesita una tabla de partición?

18

Parece que puedo hacer un pvcreate con éxito encima de un dispositivo de bloque sin procesar, sin tener que dar el paso de crear una tabla de particiones. Luego puedo crear un grupo de volúmenes, un volumen lógico y finalmente un sistema de archivos, montarlo y probarlo a través de dd.

Parece funcionar, pero necesito un control de cordura. ¿Es una mala idea?

¿Cómo creo una tabla de partición GPT o MBR en la parte superior de un dispositivo de bloque sin formato?

¿Cómo uso parted para mostrar qué tipo de tabla de partición está en uso? He intentado hacer:

Parted, seleccione / dev / sdb, imprimo y obtengo:

Error: / dev / sdb: etiqueta de disco no reconocida

Sin embargo, el disco está actualmente en uso y puedo leerlo y escribirle. ¿Es esa la salida esperada al hacer LVM encima de un dispositivo de bloque sin formato sin una tabla de particiones? ¿Alguna idea?

¡Gracias!

pantalones de gato
fuente

Respuestas:

29

Incluso si a LVM en sí no le importa tener una partición real, una razón para crearla de todos modos es informar a los programas de partición que hay "algo allí". Un escenario de pesadilla es un nuevo administrador de sistemas que diagnostica un problema de arranque en un servidor, activa un programa de partición, ve discos no particionados y concluye que la unidad está dañada.

No veo ningún inconveniente en crear una partición LVM. ¿Vos si?

Philip
fuente
1
+1 para el escenario. Muy probable en la vida real.
Hennes
1
+1 por ser perspicaz.
Alexander Janssen
¡Gracias por la respuesta! Ciertamente no veo ningún inconveniente en tener una tabla de particiones. Solo quería confirmar con un chequeo de cordura. Entonces, el orden correcto de las capas es: dispositivo de bloque, tabla de particiones, grupo de volúmenes, volumen lógico, sistema de archivos, ¿es correcto?
pantalones de gato
8
La desventaja: si expande el dispositivo de bloqueo y no utilizó una tabla de partición, puede expandir inmediatamente el volumen físico con pvresize. Si usó una tabla de particiones, primero debe eliminar la partición y volver a crearla con el tamaño más grande.
sciurus
1
Ejercer precaución es bueno, pero devolver la pregunta no es una gran respuesta. No hay necesidad de esta partición, y hay inconvenientes en tener una partición.
bryn
16

Si bien puede crear un pv con un dispositivo de bloque sin formato, normalmente trato de evitarlo, ya que puede causar confusión sobre para qué se utiliza el dispositivo de bloque. También puede romper algunas de las rutinas de detección automática que LVM puede usar si faltan sus archivos de configuración.

Aquí hay un ejemplo del uso de parted para crear un GPT con 1 partición que es la unidad completa y configurar el indicador de partición para que sea lvm. El mkpart requiere que especifique un sistema de archivos pero no crea el sistema de archivos. Parece ser un error de larga data en parte. Además, el desplazamiento inicial de 1M es garantizar que obtenga la alineación adecuada.

parted /dev/sdb
mklabel GPT
mkpart primary ext2 1M 100%
set 1 lvm on
3dinfluence
fuente
3
"El mkpart requiere que especifique un sistema de archivos, pero no crea el sistema de archivos". Gracias por mencionar esto, ¡es ENORME establecer la cordura! :)
pantalones de gato
1
Ya no es cierto. mkpart primary 1M 100%funciona y deja el campo del sistema de archivos en blanco.
rígido
1
@ 3dinfluence lvm ahora se alinea automáticamente, después de muchos años no veo el caso de uso real para usar una partición para el disco de datos dedicado para lvm
c4f4t0r
5

Si crea un PV directamente en un dispositivo de almacenamiento virtual dentro de un invitado KVM, notará que los volúmenes lógicos del invitado son visibles en el hipervisor. Esto puede hacer que las cosas sean bastante confusas si usa el mismo volumen lógico y nombres de grupos de volúmenes en varios invitados. También puede recibir algunas advertencias en el hipervisor diciendo que no puede encontrar un dispositivo.

Por ejemplo, he recreado este problema en mi hipervisor de prueba:

[root@testhost ~]# vgs
  Couldn't find device with uuid dCaylp-1kvL-syiF-A2bW-NTPP-Ehlb-gtfxZz.
  VG          #PV #LV #SN Attr   VSize   VFree  
  vg_main       2   2   0 wz-pn-  19.25g 768.00m
  vg_main       2   2   0 wz-pn-  19.25g 768.00m
  vg_testhost   1   8   0 wz--n- 237.98g 120.15g

Aquí puede ver 2 grupos de volúmenes con el mismo nombre, ambos de invitados que realmente no deberían aparecer en el hipervisor.

Por esta razón, le aconsejaría que use parted o fdisk para crear una partición KVM allí primero (como se muestra en la respuesta anterior de 3dinfluence), antes de crear un PV y agregarlo a un grupo de volúmenes. De esa forma, los volúmenes lógicos invitados permanecen ocultos del hipervisor.

Paul Maunders
fuente
1
Esto se puede evitar si usa filter/etc/lvm/lvm.conf para filtrar todos los dispositivos de bloque utilizados directamente por sus máquinas virtuales.
Mircea Vutcovici
De todos modos, los discos siempre están presentes en el host; las particiones simplemente no están asignadas. kpartx -aharía eso por ti. El hipervisor tiene acceso a todos los discos invitados, pero los grupos de volúmenes no deben activarse.
bryn
4

Una desventaja es que no es posible agregar espacio en caliente a un PV dentro de una tabla de particiones. Esto no es un problema si usa el dispositivo de bloque completo para el PV.

usuario217432
fuente
A partir de 2018, puede agregar espacio en un PV dentro de una tabla de partición. Hice este script que puede generar los comandos necesarios para hacer eso: github.com/mircea-vutcovici/scripts/blob/master/vol_resize.sh
Mircea Vutcovici
3

Incluso si en el pasado estaba usando la etiqueta de disco MS-DOS o la etiqueta de disco GPT para PV, ahora prefiero usar directamente LVM en el dispositivo de bloque principal. No hay ninguna razón para usar 2 etiquetas de disco, a menos que tenga un caso de uso muy específico (como disco con sector de arranque y partición de arranque).

La ventaja de tener LVM directamente son:

  • simplicidad: no necesita usar 2 conjuntos de herramientas
  • flexibilidad: puede usar pvmove para mover los datos de un volumen de disco a otro sin tiempo de inactividad, puede usar instantáneas y aprovisionamiento delgado
  • no necesita ejecutar partprobe o kpartx para decirle al núcleo que creó / redimensionó / ​​eliminó un volumen. Y partprobe / kpartx podría fallar si las particiones están en uso y es posible que deba reiniciar
  • quizás un mejor rendimiento, en comparación con el uso de LVM sobre MS-DOS o GPT Disklables
Mircea Vutcovici
fuente
2
No estoy seguro de por qué todos quieren esa partición, pero la respuesta aquí va en la dirección de "por qué no". Esta respuesta es mejor: no necesita una partición si va a usar todo el disco. Tener una partición también puede hacer que cambiar el tamaño / extender los discos sea mucho más doloroso.
bryn
muchos administradores de sistemas Unix traen esta lógica a Linux, recuerdo que Veritas Volume Manager funciona con público y privado, en Linux esto no tiene ningún sentido
c4f4t0r