stringtranslate.com

Administrador de volúmenes lógicos (Linux)

En Linux , Logical Volume Manager ( LVM ) es un marco de mapeo de dispositivos que proporciona administración de volúmenes lógicos para el núcleo de Linux . La mayoría de las distribuciones de Linux modernas son compatibles con LVM hasta el punto de poder tener sus sistemas de archivos raíz en un volumen lógico . [3] [4] [5]

Heinz Mauelshagen escribió el código LVM original en 1998, cuando trabajaba en Sistina Software , tomando sus pautas de diseño primarias del administrador de volúmenes de HP-UX . [1]

Usos

LVM se utiliza para los siguientes fines:

LVM puede considerarse como una fina capa de software sobre los discos duros y las particiones, lo que crea una abstracción de continuidad y facilidad de uso para administrar el reemplazo, la repartición y la copia de seguridad del disco duro.

Características

Varios elementos del LVM

Funcionalidad básica

Funcionalidad avanzada

RAID

Alta disponibilidad

El LVM también funciona en un clúster de almacenamiento compartido en el que los discos que contienen los PV se comparten entre múltiples computadoras host, pero puede requerir un demonio adicional para mediar el acceso a los metadatos a través de una forma de bloqueo.

CLVM
Se utiliza un administrador de bloqueo distribuido para gestionar los accesos simultáneos a los metadatos de LVM. Siempre que un nodo del clúster necesita modificar los metadatos de LVM, debe obtener el permiso de su servidor local clvmd, que está en contacto constante con otros clvmddaemons del clúster y puede comunicar el deseo de obtener un bloqueo en un conjunto particular de objetos.
HA-LVM
La función de alta disponibilidad se deja a cargo de la aplicación que proporciona la función de alta disponibilidad. Por parte de LVM, HA-LVM puede utilizar CLVM como mecanismo de bloqueo o puede continuar utilizando el bloqueo de archivos predeterminado y reducir las "colisiones" restringiendo el acceso únicamente a aquellos objetos LVM que tengan las etiquetas adecuadas. Dado que esta solución más simple evita la contención en lugar de mitigarla, no se permiten accesos simultáneos, por lo que HA-LVM se considera útil únicamente en configuraciones activas-pasivas.
bloqueo lvm
A partir de 2017 , un componente LVM estable que está diseñado para reemplazar clvmdal hacer que el bloqueo de objetos LVM sea transparente para el resto de LVM, sin depender de un administrador de bloqueo distribuido. [14] Tuvo un desarrollo masivo durante 2016. [15]

Los mecanismos descritos anteriormente solo resuelven los problemas con el acceso de LVM al almacenamiento. El sistema de archivos seleccionado para estar sobre dichos LV debe admitir la agrupación en clústeres por sí mismo (como GFS2 o VxFS ) o solo debe ser montado por un único nodo de clúster en cualquier momento (como en una configuración activa-pasiva).

Política de asignación de grupos de volúmenes

Los grupos de volúmenes virtuales LVM deben contener una política de asignación predeterminada para los nuevos volúmenes creados a partir de ellos. Esto se puede cambiar más adelante para cada grupo de volúmenes utilizando el lvconvert -Acomando o en el propio grupo de volúmenes mediante vgchange --alloc. Para minimizar la fragmentación, LVM intentará primero la política más estricta (contigua) y luego avanzará hacia la política más liberal definida para el objeto LVM hasta que la asignación finalmente tenga éxito.

En las configuraciones RAID, casi todas las políticas se aplican a cada pata de forma aislada. Por ejemplo, incluso si un LV tiene una política cling , la expansión del sistema de archivos no hará que el LVM utilice un PV si ya lo utiliza una de las otras patas de la configuración RAID. Los LV con funcionalidad RAID colocarán cada pata en diferentes PV, lo que hará que los otros PV no estén disponibles para ninguna otra pata determinada. Si esta fuera la única opción disponible, la expansión del LV fallaría. En este sentido, la lógica detrás de cling solo se aplicará a la expansión de cada una de las patas individuales de la matriz.

Las políticas de asignación disponibles son:

Implementación

Ejemplo básico de un cabezal LVM
Funcionamiento interno de la versión 1 de LVM. En este diagrama, PE significa extensión física.

Normalmente, el primer megabyte de cada volumen físico contiene una estructura codificada principalmente en ASCII denominada "encabezado LVM" o "cabeza LVM". Originalmente, el encabezado LVM solía escribirse en el primer y último megabyte de cada PV para redundancia (en caso de una falla parcial del hardware); sin embargo, esto se cambió más tarde a solo el primer megabyte. El encabezado de cada PV es una copia completa del diseño de todo el grupo de volúmenes, incluidos los UUID de todos los demás PV y de los LV, y el mapa de asignación de PE a LE . Esto simplifica la recuperación de datos si se pierde un PV.

En la serie 2.6 del kernel de Linux, el LVM se implementa en términos del mapeador de dispositivos , un esquema simple a nivel de bloque para crear dispositivos de bloques virtuales y mapear sus contenidos en otros dispositivos de bloques. Esto minimiza la cantidad de código de kernel relativamente difícil de depurar necesario para implementar el LVM. También permite que sus servicios de redirección de E/S se compartan con otros administradores de volúmenes (como EVMS ). Cualquier código específico de LVM se envía a sus herramientas de espacio de usuario, que simplemente manipulan estas asignaciones y reconstruyen su estado a partir de metadatos en el disco en cada invocación.

Para poner en línea un grupo de volúmenes, utilice la herramienta "vgchange":

  1. Busca PV en todos los dispositivos de bloque disponibles.
  2. Analiza el encabezado de metadatos en cada PV encontrado.
  3. Calcula los diseños de todos los grupos de volúmenes visibles.
  4. Realiza un bucle sobre cada volumen lógico del grupo de volúmenes que se va a poner en línea y:
    1. Comprueba si el volumen lógico que se pondrá en línea tiene todos sus PV visibles.
    2. Crea una nueva asignación de dispositivo vacía.
    3. Lo asigna (con el objetivo "lineal") a las áreas de datos de los PV a los que pertenece el volumen lógico.

Para mover un volumen lógico en línea entre PV en el mismo grupo de volúmenes, use la herramienta "pvmove":

  1. Crea una nueva asignación de dispositivo vacía para el destino.
  2. Aplica el destino "espejo" a los mapas original y de destino. El núcleo iniciará el espejo en modo "degradado" y comenzará a copiar datos del original al destino para sincronizarlos.
  3. Reemplaza la asignación original con el destino cuando el espejo se sincroniza y luego destruye el original.

Estas operaciones de mapeo de dispositivos se llevan a cabo de forma transparente, sin que las aplicaciones o los sistemas de archivos sepan que su almacenamiento subyacente se está moviendo.

Advertencias

Véase también

Referencias

  1. ^ ab "LVM README". 17 de noviembre de 2003. Consultado el 25 de junio de 2014 .
  2. ^ "Se ha creado la etiqueta anotada [lvm-devel] v2_03_21". 21 de abril de 2023. Consultado el 22 de abril de 2023 .
  3. ^ "7.1.2 Configuración de LVM con YaST". SUSE. 12 de julio de 2011. Archivado desde el original el 25 de julio de 2015. Consultado el 22 de mayo de 2015 .
  4. ^ "Cómo configurar el escritorio Ubuntu con particiones LVM". Ubuntu. 1 de junio de 2014. Archivado desde el original el 4 de marzo de 2016. Consultado el 22 de mayo de 2015 .
  5. ^ "9.15.4 Crear volumen lógico LVM". Red Hat. 8 de octubre de 2014. Consultado el 22 de mayo de 2015 .
  6. ^ "Rendimiento de BTRFS comparado con LVM+EXT4 en relación con las cargas de trabajo de la base de datos". 29 de mayo de 2018.
  7. ^ "Etiquetado de objetos de almacenamiento LVM2". Micro Focus International . Consultado el 21 de mayo de 2015 .
  8. ^ "El demonio de metadatos". Red Hat Inc. Recuperado el 22 de mayo de 2015 .
  9. ^ "Uso de la nueva función de caché de LVM". 22 de mayo de 2014. Consultado el 11 de julio de 2014 .
  10. ^ "2.3.5. Volúmenes lógicos con aprovisionamiento fino (Thin Volumes)". Access.redhat.com . Consultado el 20 de junio de 2014 .
  11. ^ "4.101.3. RHBA-2012:0161 — Corrección de errores y actualización de mejoras de lvm2" . Consultado el 8 de junio de 2014 .
  12. ^ "5.4.16. Volúmenes lógicos RAID". Access.redhat.com . Consultado el 7 de febrero de 2017 .
  13. ^ "Control de operaciones de E/S en un volumen lógico RAID1". redhat.com . Consultado el 16 de junio de 2014 .
  14. ^ "Re: Instantánea de LVM con VG agrupado [RESUELTO]". 15 de marzo de 2013. Consultado el 8 de junio de 2015 .
  15. ^ ""Historial de Git de vmlockd.c"". Archivado desde el original el 4 de enero de 2024.
  16. ^ "Error 9554: no se admiten barreras de escritura en el asignador de dispositivos". 2009-07-01 . Consultado el 2010-01-24 .
  17. ^ "Barreras y sistemas de archivos con registro en diario". LWN . 2008-05-22 . Consultado el 2008-05-28 .
  18. ^ "¿Moverse de un nivel a la vez desfragmentará?". 2010-04-29 . Consultado el 2015-05-22 .
  19. ^ "Gotchas". Wiki de btrfs. Archivado desde el original el 4 de enero de 2024. Consultado el 24 de abril de 2017 .

Lectura adicional