Nota:
- Este tutorial está disponible en un entorno de laboratorio gratuito proporcionado por Oracle.
- Utiliza valores de ejemplo para las credenciales, el arrendamiento y los compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por valores específicos de su entorno en la nube.
Configuración de volúmenes lógicos RAID en Oracle Linux
Introducción
LVM RAID es una forma de crear un volumen lógico (LV) que utiliza varios dispositivos físicos para mejorar el rendimiento o tolerar fallos de dispositivos. En LVM, los dispositivos físicos son volúmenes físicos (VP) en un único grupo de volúmenes (VG).
Este tutorial funcionará con las utilidades de Oracle Linux Volume Manager para crear un volumen lógico RAID y, a continuación, solucionar un fallo de disco.
Objetivos
- Creación de un volumen lógico RAID
- Cambiar el tamaño de un volumen lógico RAID
- Recuperación de un dispositivo RAID fallido
Requisitos
Cualquier sistema Oracle Linux 8 con las siguientes configuraciones:
- un usuario no raíz con permisos sudo
- volúmenes en bloque adicionales para su uso con LVM
Configuración del entorno del laboratorio
Nota: Al utilizar el entorno de prácticas gratuitas, consulte Aspectos básicos de las prácticas de Oracle Linux para obtener información sobre la conexión y otras instrucciones de uso.
-
Si aún no está conectado, abra un terminal y conéctese mediante ssh a cada instancia mencionada anteriormente.
ssh oracle@<ip_address_of_instance>
-
Verifique que los volúmenes en bloque existen.
sudo lsblk
La salida del entorno de prácticas libres debe mostrar /dev/sda para el sistema de archivos existente y los discos disponibles /dev/sdb, /dev/sdc, /dev/sdd y /dev/sde. También hay dos discos adicionales (/dev/sdf, /dev/sdg) que usaremos más adelante.
Volumen físico (PV)
-
Cree los volúmenes físicos (PV) con los discos disponibles.
sudo pvcreate -v /dev/sd[b-e]
Ejecute el comando con la opción
-v
para obtener información detallada. -
Verifique la creación de PV.
sudo pvs
Resultado de ejemplo:
[oracle@ol-node01 ~]$ sudo pvs PV VG Fmt Attr PSize PFree /dev/sda3 ocivolume lvm2 a-- 45.47g 0 /dev/sdb lvm2 --- 50.00g 50.00g /dev/sdc lvm2 --- 50.00g 50.00g /dev/sdd lvm2 --- 50.00g 50.00g /dev/sde lvm2 --- 50.00g 50.00g
Grupo de Volúmenes (VG)
-
Cree el grupo de volúmenes (VG) con los volúmenes físicos recién creados.
sudo vgcreate -v foo /dev/sd[b-e]
-
Verifique la creación de VG.
sudo vgs
Resultado de ejemplo:
[oracle@ol-node01 ~]$ sudo vgs VG #PV #LV #SN Attr VSize VFree foo 4 0 0 wz--n- 199.98g 199.98g ocivolume 1 2 0 wz--n- 45.47g 0
Volumen Lógico (LV)
-
Cree el volumen lógico RAID (LV).
sudo lvcreate --type raid5 -i 3 -L 5G -n rr foo
--type
: defina el nivel de RAID. LVM admite los niveles de RAID 0, 1, 4, 5, 6 y 10.-i
: defina el número (n) de segmentos (dispositivos) para un volumen lógico RAID 4/5/6. Un LV raid5 requiere dispositivos n+1.-L
: tamaño total de la matriz RAID.-n
: nombre de la matriz RAID.
Resultado de ejemplo:
[oracle@ol-node01 ~]$ sudo lvcreate --type raid5 -i 3 -L 5G -n rr foo Using default stripesize 64.00 KiB. Rounding size 5.00 GiB (1280 extents) up to stripe boundary size 5.00 GiB (1281 extents). Logical volume "rr" created.
Para obtener más información, consulte la página manual
lvmraid(7)
. -
Verifique la creación de LV.
sudo lvdisplay foo
La salida muestra todos los volúmenes lógicos contenidos en el foo VG.
Resultado de ejemplo:
[oracle@ol-node01 ~]$ sudo lvdisplay foo --- Logical volume --- LV Path /dev/foo/rr LV Name rr VG Name foo LV UUID vghyRi-nKGM-3b9t-tB1I-biJX-10h6-UJWvm2 LV Write Access read/write LV Creation host, time ol-node01, 2022-05-19 01:23:46 +0000 LV Status available # open 0 LV Size 5.00 GiB Current LE 1281 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 1024 Block device 252:10
-
Muestre el tipo de LV.
sudo lvs -o name,segtype foo/rr
- El comando
lvs
puede tomar la ruta completa de LV como una opción para limitar los resultados.
Resultado de ejemplo:
[oracle@ol-node01 ~]$ sudo lvs -o name,segtype /dev/foo/rr LV Type rr raid5
- El comando
Creación de un sistema de archivos
-
Cree un sistema de archivos XFS en el LV RAID.
sudo mkfs.xfs -f /dev/foo/rr
-f
: fuerza la sobrescritura de un sistema de archivos existente.
Resultado de ejemplo:
[oracle@ol-node01 ~]$ sudo mkfs.xfs -f /dev/foo/rr meta-data=/dev/foo/rr isize=512 agcount=8, agsize=163952 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=1311616, imaxpct=25 = sunit=16 swidth=48 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
Nota: El sistema de archivos XFS no puede reducir su tamaño después de la creación. Sin embargo, el comando xfs_growfs puede ampliarlo.
Montaje del LV de RAID
-
Monte el sistema de archivos.
sudo mkdir -p /u01 sudo mount /dev/foo/rr /u01
-
Informar el uso del disco del sistema de archivos.
df -h
Resultado de ejemplo:
[oracle@ol-node01 ~]$ df -h Filesystem Size Used Avail Use% Mounted on ... /dev/mapper/foo-rr 5.0G 69M 5.0G 2% /u01
Cambio de tamaño de LV de RAID
Hay varias maneras de cambiar el tamaño de un LV RAID:
- Utilice
lvresize
olvextend
para aumentar la LV. - Utilice
lvresize
olvreduce
para reducir la LV. - Utilice
lvconvert
con el parámetro--stripes N
para cambiar el número de segmentos.
Importante: Reducir una LV es arriesgado y puede provocar la pérdida de datos. Al ejecutar un sistema de archivos XFS en el LV, evite reducir el LV, ya que XFS no permite reducir el tamaño del sistema de archivos.
Aumento de la capacidad de LV de RAID
-
Con el espacio libre disponible en la VG, aumente el tamaño de LV RAID a 10G.
sudo lvresize -L 10G foo/rr
Para aumentar el tamaño en 10G, utilice la opción
-L +10G
en su lugar. -
Verifique que la LV haya aumentado a 10 G.
sudo lvs foo/rr
LSize debe mostrar 10g.
-
Haga crecer el sistema de archivos.
sudo xfs_growfs /u01
-
Informar el uso actualizado del disco del sistema de archivos.
df -h
-
Compruebe el estado de sincronización de RAID antes de continuar.
Advertencia: si continúa demasiado rápido para el siguiente paso, puede que se muestre un error debido a que foo/rr no está sincronizado.
Este error se producirá si la sincronización no se completó después de cambiar el tamaño del LV RAID anterior.
Compruebe el LV de RAID con
watch sudo lvs foo/rr
y espere a que el campo Cpy%Sync alcance el 100%. Una vez que Cpy%Sync alcance el 100%, utilicectrl-c
para salir del comandowatch
.
Consulte las páginas del comando man lvresize(8)
, lvextend(8)
y lvreduce(8)
para obtener más información.
Aumento de segmentos en RAID LV
El cambio del número de segmentos en un LV RAID aumenta la capacidad general y es posible en RAID4/5/6/10. Cada segmento adicional requiere un número igual de volúmenes físicos (dispositivos) no asignados dentro del grupo de volúmenes.
-
Compruebe qué volúmenes físicos (PV) existen en VG foo.
sudo pvs
En la salida /dev/sdb, /dev/sdc, /dev/sdd y /dev/sde están todos asociados con la página VG.
-
Determine si hay volúmenes físicos sin usar.
sudo pvdisplay -m /dev/sd[b-e]
Resultado de ejemplo:
--- Physical volume --- PV Name /dev/sdb VG Name foo PV Size 50.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 12799 Free PE 11944 Allocated PE 855 PV UUID Q1uEMC-0zL1-dgrA-9rIT-1xrA-Vnfr-2E8tJT --- Physical Segments --- Physical extent 0 to 0: Logical volume /dev/foo/rr_rmeta_0 Logical extents 0 to 0 Physical extent 1 to 854: Logical volume /dev/foo/rr_rimage_0 Logical extents 0 to 853 Physical extent 855 to 12798: FREE ...
El comando
pvdisplay
con la opción-m
muestra la asignación de extensiones físicas a volúmenes lógicos y extensiones logciales. En la salida de ejemplo, el PV /dev/sdb muestra las extensiones físicas asociadas con el LV de RAID. Lo mismo debe aparecer para /dev/sdc, /dev/sdd y /dev/sde. -
Agregue otro PV al VG.
Dado que el LV de RAID existente utiliza todos los volúmenes físicos existentes, agregue /dev/sdf al pie de página de PV.
sudo vgextend foo /dev/sdf
La salida muestra que el comando
vgextend
convierte /dev/sdf a un PV antes de agregarlo a la página VG. -
Agregue un segmento a la LV RAID.
sudo lvconvert --stripes 4 foo/rr
Responda con
y
en la petición de datos.Resultado de ejemplo:
[oracle@ol-node01 ~]$ sudo lvconvert --stripes 4 foo/rr Using default stripesize 64.00 KiB. WARNING: Adding stripes to active and open logical volume foo/rr will grow it from 2562 to 3416 extents! Run "lvresize -l2562 foo/rr" to shrink it or use the additional capacity. Are you sure you want to add 1 images to raid5 LV foo/rr? [y/n]: y Logical volume foo/rr successfully converted.
-
Verifique el nuevo tamaño de LV.
sudo lvs foo/rr
Resultado de ejemplo:
[oracle@ol-node01 ~]$ sudo lvs foo/rr LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert rr foo rwi-aor--- 13.34g 2.24
La capacidad (LSize) creció mediante 3.34g y comienza la sincronización (Cpy%Sync). La sincronización es el proceso que hace que todos los dispositivos de un LV RAID sean coherentes entre sí, y se necesita una sincronización completa cuando se modifican o reemplazan los dispositivos del LV RAID.
-
Compruebe el estado de la sincronización.
Ejecute la comprobación hasta que el progreso alcance el 100%.
watch sudo lvs foo/rr
Una vez que Cpy%Sync alcance el 100%, utilice
ctrl-c
para salir del comandowatch
.Otras formas de utilizar el comando
watch
incluyen:- Ejecute
watch -n 5 sudo lvs foo/rr
para refrescar cada 5s en lugar de los 2 por defecto. - Ejecute
timeout 60 watch -n 5 sudo lvs foo/rr
para salir automáticamente después de los 60.
- Ejecute
-
Muestre el nuevo rango de segmentos y el nuevo PV, que ahora incluye /dev/sdf.
sudo lvs -a -o lv_name,attr,segtype,seg_pe_ranges,dataoffset foo
Recuperación de un dispositivo RAID fallido en una LV
Las matrices RAID pueden continuar ejecutándose con dispositivos fallidos. La eliminación de un dispositivo para tipos RAID distintos de RAID1 implicaría la conversión a un RAID de nivel inferior (RAID5 a RAID0 en este caso).
LVM permite sustituir un dispositivo fallido en un volumen RAID en un solo paso mediante el comando lvconvert --repair
para dispositivos fallidos en lugar de eliminar una unidad fallida y, posiblemente, agregar una sustitución.
-
Compruebe el diseño actual de RAID LV.
sudo lvs --all --options name,copy_percent,devices foo
-
Simule un fallo en /dev/sdd.
echo 1 | sudo tee /sys/block/sdd/device/delete
-
Después del fallo, vuelva a comprobar la distribución de LV de RAID.
sudo lvs --all --options name,copy_percent,devices foo
Observe los dispositivos [unknown].
Resultado de ejemplo:
[oracle@ol-node01 ~]$ sudo lvs --all --options name,copy_percent,devices foo WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc. WARNING: VG foo is missing PV o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc (last written to /dev/sdd). LV Cpy%Sync Devices rr 100.00 rr_rimage_0(0),rr_rimage_1(0),rr_rimage_2(0),rr_rimage_3(0),rr_rimage_4(0) [rr_rimage_0] /dev/sdb(855) [rr_rimage_0] /dev/sdb(1) [rr_rimage_1] /dev/sdc(855) [rr_rimage_1] /dev/sdc(1) [rr_rimage_2] [unknown](855) [rr_rimage_2] [unknown](1) [rr_rimage_3] /dev/sde(855) [rr_rimage_3] /dev/sde(1) [rr_rimage_4] /dev/sdf(855) [rr_rimage_4] /dev/sdf(1) [rr_rmeta_0] /dev/sdb(0) [rr_rmeta_1] /dev/sdc(0) [rr_rmeta_2] [unknown](0) [rr_rmeta_3] /dev/sde(0) [rr_rmeta_4] /dev/sdf(0)
-
Reemplazar el dispositivo defectuoso.
sudo lvconvert --repair foo/rr
Responda con
y
en la petición de datos.El comando no encuentra espacio o dispositivo disponible para usar en el VG.
Resultado de ejemplo:
[oracle@ol-node01 ~]$ sudo lvconvert --repair foo/rr WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc. WARNING: VG foo is missing PV o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc (last written to /dev/sdd). WARNING: Couldn't find device with uuid o1JwCl-DTpi-anww-rYt3-1LCq-vmLV-FQCKyc. Attempt to replace failed RAID images (requires full device resync)? [y/n]: y Insufficient free space: 856 extents needed, but only 0 available Failed to replace faulty devices in foo/rr.
Advertencia: si el error contiene un mensaje "Unable to replace device in foo/rr while not in-sync", verifique que RAID-LV esté sincronizado ejecutando
watch sudo lvs foo/rr
y confirmando que Cpy%Sync es 100%. A continuación, vuelva a intentar el comandolvconvert
. -
Agregue el dispositivo /dev/sdg al VG
sudo vgextend foo /dev/sdg
Los mensajes de WARNING en la salida se deben a que todavía falta la unidad fallida.
-
Vuelva a intentar sustituir la unidad fallida.
sudo lvconvert --repair foo/rr
Vuelva a responder con
y
a la petición de datos.La salida muestra de nuevo los mensajes de WARNING acerca de la unidad que falta, pero el comando reemplazó correctamente el dispositivo defectuoso en el VG.
-
Examine el diseño.
sudo lvs --all --options name,copy_percent,devices foo
Observe que /dev/sdg reemplazó todas las entradas del dispositivo [unknown].
-
Elimine el dispositivo defectuoso del VG.
Las utilidades de LVM seguirán informando de que LVM no puede encontrar el dispositivo fallido hasta que lo extraiga del VG.
sudo vgreduce --removemissing foo
Los mensajes de WARNING en la salida se deben a que todavía falta la unidad fallida.
-
Compruebe el estado de sincronización de RAID antes de continuar.
Advertencia: Si continúa demasiado rápido para la siguiente sección, puede aparecer el siguiente mensaje de error:
Resultado de ejemplo:
[oracle@ol-node01 ~]$ sudo lvchange --syncaction check foo/rr foo/rr state is currently "recover". Unable to switch to "check".
Este error se producirá si la sincronización no se completó después de agregar segmentos al LV RAID.
Compruebe el LV de RAID con
watch sudo lvs foo/rr
y espere a que el campo Cpy%Sync alcance el 100%.
Comprobación de coherencia de datos en RAID LV (limpieza)
LVM proporciona la capacidad de limpieza para RAID LV, que lee todos los bloques de datos y paridad de una matriz y comprueba la coherencia.
-
Inicie una limpieza en modo de comprobación.
sudo lvchange --syncaction check foo/rr
-
Mostrar el estado de la acción de limpieza.
watch sudo lvs -a -o name,raid_sync_action,sync_percent foo/rr
Resultado de ejemplo:
[oracle@ol-node01 ~]$ sudo lvs -a -o name,raid_sync_action,sync_percent foo/rr LV SyncAction Cpy%Sync rr check 30.08
-
Una vez finalizada la limpieza (sincronización), muestre el número de bloques inconsistentes encontrados.
sudo lvs -o +raid_sync_action,raid_mismatch_count foo/rr
La opción
raid_sync_action
muestra el campo SyncAction con uno de los siguientes valores:idle
: se han completado todas las acciones.resync
: inicialización o recuperación después de un fallo del sistema.recover
: sustitución de un dispositivo en la matriz.check
: búsqueda de diferencias.repair
: búsqueda y reparación de diferencias.
Resultado de ejemplo:
[oracle@ol-node01 ~]$ lvs -o +raid_sync_action,raid_mismatch_count foo/rr LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert SyncAction Mismatches rr foo rwi-aor--- 13.34g 44.42 check 0
La salida muestra 0 incoherencias (no coinciden).
-
(Opcional) Corrija las diferencias en la matriz.
Este paso es opcional, ya que es probable que no existan diferencias en esta matriz de ejemplo.
sudo lvchange --syncaction repair foo/rr
-
(Opcional) Compruebe el estado de la reparación.
sudo lvs -o +raid_sync_action,raid_mismatch_count foo/rr
Observe que el campo SyncAction cambió a repair.
Consulte las páginas del comando man lvchange(8)
y lvmraid(7)
para obtener más información.
Para obtener más información:
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Configure RAID Logical Volumes on Oracle Linux
F57871-02
May 2022
Copyright © 2021, Oracle and/or its affiliates.