4.4.3. Cómo crear volúmenes en espejo
Nota
Para crear un volumen lógico LVM en espejo en un cluster se requieren los mismos comandos y procedimientos que sirven para crear un volumen lógico LVM en espejo en un solo nodo. Sin embargo, para crear un volumen LVM en espejo en un cluster, la infraestructura del cluster y el espejo de cluster deben estar ejecutándose, el cluster debe estar en cuorum, y el tipo de bloqueo en el archivo
lvm.conf
debe establecerse correctamente para permitir el bloqueo de cluster. Para ver un ejemplo de una creación de volumen en espejo en un cluster, consulte Sección 5.5, “Cómo crear un volumen lógico LVM en un cluster”.
Si intenta ejecutar la creación en múltiples LVM en espejo y la conversión de comandos en una rápida sucesión de nodos múltiples en un cluster, podría causar una acumulación de comandos. Esto haría que algunas de las operaciones solicitadas expiren y como consecuencia fallen. Para evitar este problema, se recomienda que la creación de comandos en espejo de cluster se ejecute desde un nodo del cluster.
Cuando cree un volumen en espejo, se debe especificar el número de copias de los datos a realizar con el argumento
-m
del comando lvcreate
. Si especifica -m1
creará un espejo, el cual produce dos copias del sistema de archivos: un volumen lógico lineal y una copia. De igual manera, si se especifica -m2
se crearán 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 GB, se llama
mirrorlv
, y se forja del grupo de volúmenes vg0
:
lvcreate -L 50G -m1 -n mirrorlv vg0
Un espejo LVM divide en regiones el dispositivo que está siendo copiado, por defecto en regiones predeterminadas de 512KB. Puede usar el argumento
-R
del comando lvcreate
para especificar en MB el tamaño de la región. También puede cambiar el tamaño predeterminado de la región al modificar la configuración mirror_region_size
en el archivo lvm.conf
.
Nota
Debido a las limitaciones en la infraestructura de cluster, los espejos de cluster mayores de 1.5TB no pueden ser creados con el tamaño de región predeterminado de 512KB. Los usuarios que requieren espejos más grandes deben aumentar el tamaño de la región del predeterminado a algo mayor. No poder aumentar el tamaño de la región hará que la creación de LVM se cuelgue o cuelgue otros comandos LVM.
Como una regla general para especificar el tamaño de la región para espejos de más de 1.5TB, puede tomar su tamaño de espejo en TB y redondear ese número a la siguiente potencia de 2, mediante ese número como el argumento
-R
para el comando lvcreate
. Por ejemplo, si su espejo tiene .5TB, puede especificar -R 2
. Si su espejo es de 3TB, puede especificar -R 4
. Para un espejo de 5TB, puede especificar -R 8
.
El siguiente comando muestra solo el nombre y el tamaño del volumen físico en espejo con un tamaño de región de 2MB.
lvcreate -m1 -L 2T -R 2 -n mirror vol_group
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 mantenerlo persistente a través de los reinicios y garantiza que el espejo no necesite resincronizarse cada vez que la máquina reinicia o falla. En su lugar, puede especificar que este registro sea guardado en memoria con el argumento
--mirrorlog core
. Así se elimina la necesidad de un dispositivo de registro adicional, pero se requiere que el espejo total sea sincronizado tras cada reinicio.
El siguiente comando crea un volumen lógico en espejo desde el grupo de volúmenes
bigvg
. El volumen lógico se llama ondiskmirvol
y tiene un solo espejo. El volumen tiene 12MB y mantiene el registro de espejo en memoria.
# lvcreate -L 12MB -m1 --mirrorlog core -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 solo 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 volúmenes
vg0
consta solamente de dos dispositivos. Este comando crea un volumen de 500 MB denominado mirrorlv
en el grupo de volúmenes vg0
.
lvcreate -L 500M -m1 -n mirrorlv -alloc anywhere vg0
Nota
Con espejos en cluster, la administración del registro en espejo es responsabilidad del nodo del cluster con el ID de cluster más bajo actualmente. Por lo tanto, cuando el dispositivo que tiene el registro de espejo de cluster no está disponible, en un subconjunto del cluster, el espejo en cluster puede continuar funcionando sin ningún impacto, siempre y cuando el nodo del cluster con el ID más bajo retenga el acceso al registro de espejo. Puesto que el espejo no se disturba, no se realiza ninguna acción automática correctiva. No obstante, cuando el nodo de cluster con ID más bajo pierde acceso al registro de espejo, la acción automática se activa (independientemente de la accesibilidad al registro desde otros nodos).
Para crear un registro de espejo que se cree en espejo, debe especificar el argumento
--mirrorlog mirrored
. El siguiente comando crea un volumen lógico en espejo del grupo de volúmenes twologvol
. El volumen lógico se llama twologvol
y tiene un solo espejo. El volumen es de 12MB y el registro de espejo es copiado en espejo con cada registro que se mantiene en un dispositivo independiente.
# lvcreate -L 12MB -m1 --mirrorlog mirrored -n twologvol bigvg
Logical volume "twologvol" created
De la misma forma que con el registro en espejo estándar, es posible crear registros de espejo redundantes en el mismo dispositivo como 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 registro de espejo redundante, incluso si no tiene suficientes dispositivos subyacentes para que cada registro se mantenga en un dispositivo independiente de los pilares de espejo.
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 determinado disco, especifique exactamente una de las extensiones en el disco en el que será colocado. 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 y un registro único que no está en espejo. El volumen es de 500 MB, se llama
mirrorlv
, y se forja del grupo de volúmenes vg0
. El primer pilar de espejo se encuentra en el dispositivo /dev/sda1
, el segundo pilar se encuentra en el dispositivo /dev/sdb1
y el registro de espejo está 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 MB, se llama
mirrorlv
, y se forja del grupo de volúmenes vg0
. El primer pilar de espejo comprende las extensiones de 0 a 499 del dispositivo /dev/sda1
, el segundo pilar de espejo abarca las extensiones de 0 a 499 de dispositivo /dev/sdb1
y el registro del espejo inicia en la extensión 0 de /dev/sdc1
. Estas son extensiones de 1MB. Si alguna de las extensiones especificadas ha sido asignada, serán ignoradas.
lvcreate -L 500M -m1 -n mirrorlv vg0 /dev/sda1:0-499 /dev/sdb1:0-499 /dev/sdc1:0
Nota
A partir de Red Hat Enterprise Linux 6.1, usted puede combinar RAID0 (en franja) y RAID1 (en espejo) en un solo volumen lógico. La creación de un volumen lógico cuando se especifican simultáneamente el número de espejos (
--mirrors X
) y el número de franjas (--stripes Y
) produce un dispositivo de espejo cuyos dispositivos constituyentes son seccionados.
4.4.3.1. Política de fallas de volumen lógico en espejo
Puede definir la forma como se comporta un volumen lógico en el evento de una falla de dispositivo con los parámetros
mirror_image_fault_policy
y mirror_log_fault_policy
en la sección activation
del archivo lvm.conf
. Cuando estos parámetros se establecen a remove
, el sistema intenta retirar el dispositivo que está fallando y ejecutar sin él. Cuando este parámetro se establece a allocate
, el sistema intenta retirar el dispositivo que está fallando y trata de asignar espacio en un nuevo dispositivo para que sea el remplazo del dispositivo dañado; esta política actúa como la política remove
si no se puede asignar ningún dispositivo ni espacio apropiado para el remplazo.
Por defecto, el parámetro
mirror_log_fault_policy
se establece a allocate
. El uso de esta política para el registro es rápido y mantiene la capacidad de recordar el estado de sincronización a través de caídas y reinicios. Si se establece la política a remove
, cuando un dispositivo de registro falle el espejo se adaptará para usar un registro en memoria y el espejo no recordará su estatus de sincronización a través de caídas y reinicios y el espejo total se resincronizará.
Por defecto, el parámetro
mirror_image_fault_policy
se establece a remove
. Con esta política, si una imagen de espejo falla, el espejo se convertirá en un dispositivo sin espejo si solo queda una copia. Si establece esta política a allocate
para que el dispositivo de espejo requiera que el espejo resincronice los dispositivos, es un proceso lento, pero preserva la característica de espejo del dispositivo.
Nota
Cuando un espejo LVM sufre una falla de dispositivo, se produce la recuperación en dos etapas. La primera etapa tiene que ver con la remoción de dispositivos fallidos. Esto puede hacer que el espejo se reduzca a un dispositivo lineal. La segunda etapa, si el parámetro
mirror_log_fault_policy
se establece a allocate
, es para intentar remplazar cualquiera de los dispositivos fallidos. Observe, sin embargo, que no hay garantía de que la segunda etapa elija dispositivos que hayan sido utilizados por el espejo que no ha sido parte de la falla si otros están disponibles.
Para obtener mayor información sobre recuperación manual de una falla de espejo de LVM, consulte Sección 6.3, “Cómo recuperarse de una falla de un espejo LVM”.