Capítulo 17. Control de la asignación de LVM
Por defecto, un grupo de volúmenes asigna extensiones físicas de acuerdo a reglas de sentido común como no colocar franjas paralelas en el mismo volumen físico. Esta es la política de asignación normal
. Puedes usar el argumento --alloc
del comando vgcreate
para especificar una política de asignación de contiguous
, anywhere
, o cling
. En general, las políticas de asignación diferentes a normal
son requeridas sólo en casos especiales donde se necesita especificar una asignación de extensión inusual o no estándar.
17.1. Políticas de asignación de LVM
Cuando una operación LVM necesita asignar extensiones físicas para uno o más volúmenes lógicos, la asignación procede como sigue:
- Se genera el conjunto completo de extensiones físicas no asignadas en el grupo de volúmenes para su consideración. Si proporciona cualquier rango de extensiones físicas al final de la línea de comandos, sólo se considerarán las extensiones físicas no asignadas dentro de esos rangos en los volúmenes físicos especificados.
-
Cada política de asignación se intenta por turnos, empezando por la política más estricta (
contiguous
) y terminando con la política de asignación especificada mediante la opción--alloc
o establecida por defecto para el volumen lógico o grupo de volúmenes concreto. Para cada política, trabajando desde la extensión lógica más baja del espacio del volumen lógico vacío que necesita ser llenado, se asigna tanto espacio como sea posible, de acuerdo con las restricciones impuestas por la política de asignación. Si se necesita más espacio, LVM pasa a la siguiente política.
Las restricciones de la política de asignación son las siguientes:
Una política de asignación de
contiguous
requiere que la ubicación física de cualquier extensión lógica que no sea la primera extensión lógica de un volumen lógico sea adyacente a la ubicación física de la extensión lógica inmediatamente anterior.Cuando un volumen lógico está dividido en franjas o en espejo, la restricción de asignación
contiguous
se aplica independientemente a cada franja o imagen en espejo (pierna) que necesite espacio.Una política de asignación de
cling
requiere que el volumen físico utilizado para cualquier extensión lógica se añada a un volumen lógico existente que ya esté en uso por al menos una extensión lógica anterior en ese volumen lógico. Si se define el parámetro de configuraciónallocation/cling_tag_list
, se considera que dos volúmenes físicos coinciden si alguna de las etiquetas enumeradas está presente en ambos volúmenes físicos. Esto permite que grupos de volúmenes físicos con propiedades similares (como su ubicación física) sean etiquetados y tratados como equivalentes a efectos de asignación.Cuando un Volumen Lógico es rayado o reflejado, la restricción de asignación
cling
se aplica independientemente a cada raya o imagen reflejada (pierna) que necesite espacio.Una política de asignación de
normal
no elegirá una extensión física que comparta el mismo volumen físico que una extensión lógica ya asignada a un volumen lógico paralelo (es decir, una franja o imagen espejo diferente) en el mismo desplazamiento dentro de ese volumen lógico paralelo.Cuando se asigna un registro en espejo al mismo tiempo que volúmenes lógicos para contener los datos en espejo, una política de asignación de
normal
intentará primero seleccionar volúmenes físicos diferentes para el registro y los datos. Si eso no es posible y el parámetro de configuraciónallocation/mirror_logs_require_separate_pvs
se establece en 0, entonces permitirá que el registro comparta volumen(s) físico(s) con parte de los datos.Del mismo modo, al asignar los metadatos del thin pool, una política de asignación de
normal
seguirá las mismas consideraciones que para la asignación de un mirror log, basándose en el valor del parámetro de configuraciónallocation/thin_pool_metadata_require_separate_pvs
.-
Si hay suficientes extensiones libres para satisfacer una solicitud de asignación pero una política de asignación de
normal
no las utilizaría, la política de asignación deanywhere
lo hará, incluso si eso reduce el rendimiento al colocar dos franjas en el mismo volumen físico.
Las políticas de asignación pueden modificarse mediante el comando vgchange
.
Si confía en cualquier comportamiento de distribución más allá de lo documentado en esta sección según las políticas de asignación definidas, debe tener en cuenta que esto podría cambiar en futuras versiones del código. Por ejemplo, si proporcionas en la línea de comandos dos volúmenes físicos vacíos que tienen un número idéntico de extensiones físicas libres disponibles para la asignación, LVM actualmente considera usar cada uno de ellos en el orden en que están listados; no hay garantía de que las futuras versiones mantengan esa propiedad. Si es importante obtener un diseño específico para un Volumen Lógico en particular, entonces deberías construirlo a través de una secuencia de pasos de lvcreate
y lvconvert
de tal manera que las políticas de asignación aplicadas a cada paso no dejen a LVM ninguna discreción sobre el diseño.
Para ver cómo funciona actualmente el proceso de asignación en cualquier caso específico, puede leer la salida del registro de depuración, por ejemplo, añadiendo la opción -vvvv
a un comando.