Red Hat Training

A Red Hat training course is available for RHEL 8

68.9.2. Creación de volúmenes lógicos de aprovisionamiento ligero

Este procedimiento proporciona una visión general de los comandos básicos que se utilizan para crear y aumentar los volúmenes lógicos de aprovisionamiento ligero. Para obtener información detallada sobre el aprovisionamiento ligero de LVM, así como información sobre el uso de los comandos y utilidades de LVM con volúmenes lógicos de aprovisionamiento ligero, consulte la página de manual lvmthin(7).

Para crear un volumen ligero, realice las siguientes tareas:

  1. Cree un grupo de volúmenes con el comando vgcreate.
  2. Cree un grupo ligero con el comando lvcreate.
  3. Cree un volumen delgado en la reserva delgada con el comando lvcreate.

Puedes utilizar la opción -T (o --thin) del comando lvcreate para crear un pool delgado o un volumen delgado. También puedes utilizar la opción -T del comando lvcreate para crear un pool delgado y un volumen delgado en ese pool al mismo tiempo con un solo comando.

El siguiente comando utiliza la opción -T del comando lvcreate para crear un thin pool llamado mythinpool en el grupo de volúmenes vg001 y que tiene un tamaño de 100M. Ten en cuenta que como estás creando un pool de espacio físico, debes especificar el tamaño del pool. La opción -T del comando lvcreate no toma un argumento; deduce qué tipo de dispositivo se va a crear a partir de las otras opciones que especifica el comando.

# lvcreate -L 100M -T vg001/mythinpool
  Thin pool volume with chunk size 64.00 KiB can address at most 15.81 TiB of data.
  Logical volume "mythinpool" created.
# lvs
  LV         VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mythinpool vg001 twi-a-tz-- 100.00m             0.00   10.84

El siguiente comando utiliza la opción -T del comando lvcreate para crear un volumen delgado llamado thinvolume en el pool delgado vg001/mythinpool. Ten en cuenta que en este caso estás especificando el tamaño virtual, y que estás especificando un tamaño virtual para el volumen que es mayor que el pool que lo contiene.

# lvcreate -V 1G -T vg001/mythinpool -n thinvolume
  WARNING: Sum of all thin volume sizes (1.00 GiB) exceeds the size of thin pool vg001/mythinpool (100.00 MiB).
  WARNING: You have not turned on protection against thin pools running out of space.
  WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
  Logical volume "thinvolume" created.
# lvs
  LV          VG       Attr     LSize   Pool       Origin Data%  Move Log Copy%  Convert
  mythinpool  vg001    twi-a-tz 100.00m                     0.00
  thinvolume  vg001    Vwi-a-tz   1.00g mythinpool          0.00

El siguiente comando utiliza la opción -T del comando lvcreate para crear una reserva delgada y un volumen delgado en esa reserva especificando tanto un argumento de tamaño como de tamaño virtual para el comando lvcreate. Este comando crea una reserva delgada llamada mythinpool en el grupo de volúmenes vg001 y también crea un volumen delgado llamado thinvolume en esa reserva.

# lvcreate -L 100M -T vg001/mythinpool -V 1G -n thinvolume
  Thin pool volume with chunk size 64.00 KiB can address at most 15.81 TiB of data.
  WARNING: Sum of all thin volume sizes (1.00 GiB) exceeds the size of thin pool vg001/mythinpool (100.00 MiB).
  WARNING: You have not turned on protection against thin pools running out of space.
  WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
  Logical volume "thinvolume" created.
# lvs
  LV         VG    Attr       LSize   Pool       Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mythinpool vg001 twi-aotz-- 100.00m                   0.00   10.94
  thinvolume vg001 Vwi-a-tz--   1.00g mythinpool        0.00

También puedes crear un thin pool especificando el parámetro --thinpool del comando lvcreate. A diferencia de la opción -T, el parámetro --thinpool requiere un argumento, que es el nombre del volumen lógico del thin pool que se está creando. El siguiente ejemplo especifica el parámetro --thinpool del comando lvcreate para crear un thin pool llamado mythinpool en el grupo de volúmenes vg001 y que tiene un tamaño de 100M:

# lvcreate -L 100M --thinpool mythinpool vg001
  Thin pool volume with chunk size 64.00 KiB can address at most 15.81 TiB of data.
  Logical volume "mythinpool" created.
# lvs
  LV         VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mythinpool vg001 twi-a-tz-- 100.00m             0.00   10.84

Utiliza los siguientes criterios para utilizar el tamaño de los trozos:

  • Un tamaño de trozo más pequeño requiere más metadatos y dificulta el rendimiento, pero proporciona una mejor utilización del espacio con las instantáneas.
  • Un tamaño de trozo mayor requiere menos manipulación de metadatos, pero hace que la instantánea sea menos eficiente en cuanto a espacio.

Por defecto, lvm2 comienza con un tamaño de chunk de 64KiB y aumenta su valor cuando el tamaño resultante del dispositivo de metadatos del thin pool crece por encima de los 128MiB, esto mantiene el tamaño de los metadatos compacto. Sin embargo, esto puede resultar en algunos valores de tamaño de chunk grandes, que son menos eficientes en cuanto a espacio para el uso de instantáneas. En estos casos, un tamaño de chunk más pequeño y un tamaño de metadatos más grande es una mejor opción.

Si el tamaño de los datos del volumen está en el rango de TiB, utilice ~15.8GiB como tamaño de los metadatos, que es el tamaño máximo soportado, y establezca el tamaño de los trozos según sus necesidades. Sin embargo, tenga en cuenta que no es posible aumentar el tamaño de los metadatos si necesita ampliar el tamaño de los datos del volumen y tiene un tamaño de trozo pequeño.

Aviso

Red Hat no recomienda establecer un tamaño de chunk menor que el valor por defecto. Si el tamaño del chunk es demasiado pequeño y su volumen se queda sin espacio para los metadatos, el volumen no podrá crear datos. Supervise sus volúmenes lógicos para asegurarse de que se amplían, o cree más almacenamiento antes de que los volúmenes de metadatos se llenen por completo. Asegúrese de configurar su thin pool con un tamaño de trozo lo suficientemente grande como para que no se quede sin espacio para los metadatos.

El striping es soportado para la creación de pools. El siguiente comando crea una reserva delgada de 100M llamada pool en el grupo de volúmenes vg001 con dos franjas de 64 kB y un tamaño de trozo de 256 kB. También crea un volumen fino de 1T, vg00/thin_lv.

# lvcreate -i 2 -I 64 -c 256 -L 100M -T vg00/pool -V 1T --name thin_lv

Puede ampliar el tamaño de un volumen ligero con el comando lvextend. Sin embargo, no se puede reducir el tamaño de un thin pool.

El siguiente comando redimensiona un thin pool existente que tiene un tamaño de 100M ampliándolo otros 100M.

# lvextend -L+100M vg001/mythinpool
  Extending logical volume mythinpool to 200.00 MiB
  Logical volume mythinpool successfully resized
# lvs
  LV           VG       Attr     LSize   Pool     Origin Data%  Move Log Copy%  Convert
  mythinpool   vg001    twi-a-tz 200.00m                   0.00
  thinvolume   vg001    Vwi-a-tz   1.00g mythinpool          0.00

Al igual que con otros tipos de volúmenes lógicos, puedes renombrar el volumen con el comando lvrename, puedes eliminar el volumen con el comando lvremove, y puedes mostrar información sobre el volumen con los comandos lvs y lvdisplay.

By default, the lvcreate command sets the size of the thin pool’s metadata logical volume according to the formula (Pool_LV_size / Pool_LV_chunk_size * 64). If you will have large numbers of snapshots or if you have have small chunk sizes for your thin pool and thus expect significant growth of the size of the thin pool at a later time, you may need to increase the default value of the thin pool’s metadata volume with the --poolmetadatasize parameter of the lvcreate command. The supported value for the thin pool’s metadata logical volume is in the range between 2MiB and 16GiB.

Puede utilizar el parámetro --thinpool del comando lvconvert para convertir un volumen lógico existente en un volumen de reserva delgada. Cuando convierta un volumen lógico existente en un volumen de reserva delgada, debe utilizar el parámetro --poolmetadata junto con el parámetro --thinpool del comando lvconvert para convertir un volumen lógico existente en el volumen de metadatos del volumen de reserva delgada.

Nota

La conversión de un volumen lógico en un volumen thin pool o en un volumen de metadatos thin pool destruye el contenido del volumen lógico, ya que en este caso el lvconvert no conserva el contenido de los dispositivos, sino que lo sobrescribe.

El siguiente ejemplo convierte el volumen lógico existente lv1 en el grupo de volúmenes vg001 en un volumen thin pool y convierte el volumen lógico existente lv2 en el grupo de volúmenes vg001 en el volumen de metadatos para ese volumen thin pool.

# lvconvert --thinpool vg001/lv1 --poolmetadata vg001/lv2
  Converted vg001/lv1 to thin pool.