Nota:

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

Requisitos

Cualquier sistema Oracle Linux 8 con las siguientes configuraciones:

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.

  1. 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>
    
  2. 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)

  1. 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.

  2. 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)

  1. Cree el grupo de volúmenes (VG) con los volúmenes físicos recién creados.

    sudo vgcreate -v foo /dev/sd[b-e]
    
  2. 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)

  1. 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).

  2. 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
    
  3. 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
    

Creación de un sistema de archivos

  1. 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

  1. Monte el sistema de archivos.

    sudo mkdir -p /u01
    sudo mount /dev/foo/rr /u01
    
  2. 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:

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

  1. 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.

  2. Verifique que la LV haya aumentado a 10 G.

    sudo lvs foo/rr
    

    LSize debe mostrar 10g.

  3. Haga crecer el sistema de archivos.

    sudo xfs_growfs /u01
    
  4. Informar el uso actualizado del disco del sistema de archivos.

    df -h
    
  5. 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%, utilice ctrl-c para salir del comando watch.

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.
    
  5. 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.

  6. 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 comando watch.

    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.
  7. 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.

  1. Compruebe el diseño actual de RAID LV.

    sudo lvs --all --options name,copy_percent,devices foo
    
  2. Simule un fallo en /dev/sdd.

    echo 1 | sudo tee /sys/block/sdd/device/delete
    
  3. 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)        
    
  4. 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 comando lvconvert.

  5. 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.

  6. 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.

  7. Examine el diseño.

    sudo lvs --all --options name,copy_percent,devices foo
    

    Observe que /dev/sdg reemplazó todas las entradas del dispositivo [unknown].

  8. 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.

  9. 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.

  1. Inicie una limpieza en modo de comprobación.

    sudo lvchange --syncaction check foo/rr
    
  2. 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   
    
  3. 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).

  4. (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
    
  5. (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.