4.4. Administración del volumen lógico
Esta sección describe los comandos que ejecutan varios aspectos de la administración de volúmenes lógicos.
4.4.1. Cómo crear volúmenes lógicos
Para crear un volumen lógico, utilice el comando
lvcreate
. Puede crear volúmenes lineales, volúmenes entrelazados y volúmenes en espejo, tal y como se describe en las siguientes subdivisiones.
Si no especifica un nombre para el volumen lógico, se utiliza el nombre predeterminado
lvol#
en donde # es el número interno del volumen lógico.
Las siguientes secciones proporcionan ejemplos de creación de volúmenes lógicos para tres tipos de volúmenes lógicos que se pueden crear con LVM.
4.4.1.1. Cómo crear volúmenes lineales
Cuando cree un volumen lógico, el volumen lógico es creado desde un grupo de volúmenes que utiliza las extensiones libres en los volúmenes físicos que conforman el grupo de volúmenes. Normalmente los volúmenes lógicos utilizan el siguiente espacio disponible en el volumen lógico subyacente. Cuando se modifica el volumen lógico el espacio se libera y se asigna de nuevo en el volumen físico.
El siguiente comando crea un volumen lógico de 10GB en el grupo de volúmenes
vg1
.
lvcreate -L 10G vg1
El siguiente comando crea un volumen lógico lineal de 1500 megabyte llamado
testlv
en el grupo de volúmenes testvg
, creando el dispositivo de bloque /dev/testvg/testlv
.
lvcreate -L1500 -n testlv testvg
El siguiente comando crea un volumen lógico de 50 GB llamado
gfslv
con las extensiones libres en el grupo de volumen vg0
.
lvcreate -L 50G -n gfslv vg0
Puede usar la opción
-l
del comando lvcreate
para especificar el tamaño del volumen lógico en extensiones. Esta opción también puede ser usada para especificar el porcentaje del grupo de volúmenes que se usará en el volumen lógico. El siguiente comando crea un volumen lógico llamado mylv
que utiliza el 60% del espacio total en el grupo de volúmenes testvol
lvcreate -l 60%VG -n mylv testvg
Puede utilizar la opción
-l
de lvcreate
para especificar el porcentaje del espacio libre restante en un grupo de volúmenes como el tamaño del volumen lógico. El siguiente comando crea un volumen lógico llamado yourlv
que utiliza todo el espacio sin asignar en el grupo de volúmenes testvol
.
lvcreate -l 100%FREE -n yourlv testvg
You can use
-l
argument of the lvcreate
command to create a logical volume that uses the entire volume group. Another way to create a logical volume that uses the entire volume group is to use the vgdisplay
command to find the "Total PE" size and to use those results as input to the the lvcreate
command.
El siguiente comando crea un volumen lógico llamado
mylv
para llenar el grupo de volúmenes llamado testvg
.
#vgdisplay testvg | grep "Total PE"
Total PE 10230 #lvcreate -l 10230 testvg -n mylv
The underlying physical volumes used to create a logical volume can be important if the physical volume needs to be removed, so you may need to consider this possibility when you create the logical volume. For information on removing a physical volume from a volume group, see Sección 4.3.6, “Cómo remover un volumen físico de un grupo de volúmenes”.
Para crear un volumen lógico que será asignado desde un volumen físico específico en el grupo de volúmenes, especifique el volumen o volúmenes físicos al final de la línea de comandos
lvcreate
. El siguiente comando crea un volumen lógico llamado testlv
en el grupo de volúmenes testvg
asignado desde el volumen físico /dev/sdg1
,
lvcreate -L 1500 -ntestlv testvg /dev/sdg1
Puede especificar cuáles extensiones de un volumen físico se utilizarán en un volumen lógico. El siguiente ejemplo crea un volumen lógico lineal con las extensiones del volumen físico
/dev/sda1
que van desde 0 hasta 25 y las extensiones que van desde 50 hasta 125 del volumen físico /dev/sdb1
en el grupo de volúmenes testvg
.
lvcreate -l 100 -n testlv testvg /dev/sda1:0-25 /dev/sdb1:50-125
El siguiente ejemplo crea un volumen lógico lineal con las extensiones que van de 0 a 25 del volumen físico
/dev/sda1
y luego continúa desde la extensión 100.
lvcreate -l 100 -n testlv testvg /dev/sda1:0-25:100-
The default policy for how the extents of a logical volume are allocated is
inherit
, which applies the same policy as for the volume group. These policies can be changed using the lvchange
command. For information on allocation policies, see Sección 4.3.1, “Cómo crear grupos de volúmenes”.
4.4.1.2. Cómo crear volúmenes entrelazados
For large sequential reads and writes, creating a striped logical volume can improve the efficiency of the data I/O. For general information about striped volumes, see Sección 2.3.2, “Volúmenes lógicos entrelazados”.
Cuando cree un volumen lógico entrelazado, especifique el número de enlaces con la opción
-i
del comando lvcreate
. Esto determina cuántos volúmenes físicos serán entrelazados por el volumen lógico. El número de enlaces no puede ser mayor al número de volúmenes físicos en el grupo de volúmenes (a menos de que se utilice la opción --alloc anywhere
).
Si los dispositivos físicos subyacentes que conforman el volumen lógico entrelazado tienen diferentes tamaños, el tamaño máximo del volumen entrelazado se determina de acuerdo con el dispositivo subyacente más pequeño. Por ejemplo, en un enlace basado en dos pilares, el tamaño máximo debe tener el doble del tamaño del dispositivo más pequeño. En un enlace basado en tres pilares, el tamaño máximo es tres veces el tamaño del dispositivo más pequeño.
El siguiente comando crea un volumen lógico con dos volúmenes físicos con un enlazado de 64KB. El volumen lógico tiene 50 GB, se llama
gfslv
y está construido sobre el grupo vg0
:
lvcreate -L 50G -i2 -I64 -n gfslv vg0
Como con los volúmenes lineales, usted puede especificar las extensiones del volumen físico que está siendo utilizado para el enlace. El siguiente comando crea un volumen entrelazado con 100 extensiones en tamaño que cubre dos volúmenes físicos, se llama
stripelv
y está en el grupo de volúmenes testvg
. El enlace utilizará los sectores 0-50 de /dev/sda1
y los sectores 50-100 de /dev/sdb1
.
# lvcreate -l 100 -i2 -nstripelv testvg /dev/sda1:0-50 /dev/sdb1:50-100
Using default stripesize 64.00 KB
Logical volume "stripelv" created
4.4.1.3. Cómo crear volúmenes en espejo
Cuando cree un volumen en espejo, se debe especificar el número de copias de los datos a realizar con la opción
-m
del comando lvcreate
. Si se especifica -m1
se creará un espejo, creando dos copias del sistema de archivos: un volumen lógico lineal y una copia. De igual manera, si se especifica -m2
se crean dos espejos, con tres copias del sistema de archivos.
El siguiente comando crea un volumen lógico en espejo con un solo espejo. El volumen tiene 50' gigabytes, se llama
mirrorlv
, y está construido sobre el grupo de volúmenes vg0
:
lvcreate -L 50G -m1 -n gfslv vg0
Un espejo LVM divide el dispositivo a copiar en regiones que, por defecto, tienen 512KB. Puede utilizar la opción
-R
para especificar el tamaño de la región en MB. LVM mantiene un registro pequeño para determinar cuáles regiones están sincronizadas con el espejo o espejos. Por defecto, este registro se almacena en el disco para mantener la persistencia a través de los reinicios. Puede especificar que este registro sea guardado en memoria con el argumento --corelog
; eliminando así la necesidad de un dispositivo de registro adicional, pero requiere que el espejo sea sincronizado tras cada reinicio.
El siguiente comando crea un volumen lógico en espejo desde el grupo de volumen
bigvg
. El volumen lógico se llama ondiskmirvol
y tiene un solo espejo. El volumen tiene 12MB en tamaño y mantiene el registro en memoria.
# lvcreate -L 12MB -m1 --corelog -n ondiskmirvol bigvg
Logical volume "ondiskmirvol" created
El registro de espejo es creado en un dispositivo independiente de los dispositivos en los cuales se crean los pilares de espejo. Es posible, no obstante, crear el registro de espejo en el mismo dispositivo como uno de los pilares de espejo mediante el argumento
--alloc anywhere
del comando vgcreate
. Esto puede degradar el rendimiento, pero le permitirá crear un espejo incluso si tiene sólo dos dispositivos subyacentes.
El siguiente comando crea un volumen lógico en espejo con un solo espejo para el cual el registro de espejo está en el mismo dispositivo como uno de los pilares de espejo. En este ejemplo, el grupo de volumen
vg0
consta solamente de dos dispositivos. El volumen en espejo creado por este comando es de 500 MB, se denomina mirrorlv
, y se construye del grupo de volumen vg0
.
lvcreate -L 500M -m1 -n mirrorlv -alloc anywhere vg0
Cuando un espejo es creado, las regiones del espejo son sincronizadas. Para componentes de espejo grandes, el proceso de sincronización puede tomar algún tiempo. Cuando esté creando un nuevo espejo que no necesita ser reactivado, puede especificar la opción
nosync
para indicar que una sincronización inicial desde el primer dispositivo no es requerida.
Puede especificar los dispositivos a utilizar para los registros del espejo y cuales extensiones del dispositivo deben usarse. Para forzar el registro en un disco particular, especifique exactamente una de las extensiones en el disco en el cual será ubicado. LVM no respeta necesariamente el orden en el cual los dispositivos se listan en la línea de comandos. Si un volumen físico se lista, ese es el único espacio en el cual la asignación puede llevarse a cabo. Cualquier extensión física incluida en la lista que ya ha sido asignada será ignorada.
El siguiente comando crea un volumen lógico en espejo con un solo espejo. El volumen es de 500 MB, se llama
mirrorlv
, y se construye del grupo de volúmenes vg0
. El primer pilar del espejo está en el dispositivo /dev/sda1
, el segundo está en /dev/sdb1
y el registro del espejo en /dev/sdc1
.
lvcreate -L 500M -m1 -n mirrorlv vg0 /dev/sda1 /dev/sdb1 /dev/sdc1
El siguiente comando crea un volumen lógico en espejo con un solo espejo. El volumen tiene 500 megabytes en tamaño, se llama
mirrorlv
y está construido del grupo de volúmenes vg0
. El primer pilar del espejo comprende las extensiones desde 0 hasta 499 del dispositivo /dev/sda1
, el segundo pilar del espejo abarca las extensiones desde 0 a 499 de /dev/sdb1
y el registro del espejo inicia en la extensión 0 de /dev/sdc1
. Éstas son extensiones de 1MB. Si alguna de las extensiones especificadas ha sido asignadas éstas serán ignoradas.
lvcreate -L 500M -m1 -n mirrorlv vg0 /dev/sda1:0-499 /dev/sdb1:0-499 /dev/sdc1:0
Nota
A partir del lanzamiento de RHEL 5.3, los volúmenes lógicos en espejo son soportados en un cluster.
4.4.1.4. Cómo cambiar la configuración del volumen en espejo
Puede convertir un volumen lógico de volumen en espejo a volumen lineal o viceversa con el comando
lvconvert
. También puede utilizar este comando para reconfigurar otros parámetros de un volumen lógico existente tal como corelog
.
Al convertir un volumen lógico a un volumen con espejos, se crean pilares de espejo para el volumen existente. Esto quiere decir que el grupo de volúmenes debe tener espacio suficiente para los pilares de espejo y su registro.
If you lose a leg of a mirror, LVM converts the volume to a linear volume so that you still have access to the volume, without the mirror redundancy. After you replace the leg, you can use the
lvconvert
command to restore the mirror. This procedure is provided in Sección 6.3, “Cómo recuperarse de una falla de un espejo LVM”.
El siguiente comando convierte el volumen lógico lineal
vg00/lvol1
en un volumen lógico con espejo.
lvconvert -m1 vg00/lvol1
El siguiente comando convierte el volumen lógico con espejos
vg00/lvol1
en un volumen lógico lineal, quitando el pilar de espejo.
lvconvert -m0 vg00/lvol1