Laboratorio: configuración de lvm, raid en Linux

Una pequeña digresión: este LR es sintético.
Algunas de las tareas descritas aquí se pueden realizar de forma mucho más sencilla, pero dado que la tarea de l/r es conocer
con las funciones raid y lvm, algunas operaciones se complican artificialmente.

Requisitos de las herramientas para realizar LR:

  • Herramientas de virtualización como Virtualbox
  • Imagen de instalación de Linux, por ejemplo Debian9
  • Disponibilidad de Internet para descargar varios paquetes.
  • Conéctese vía ssh a la VM instalada (opcional)

PRECAUCIÓN

Este trabajo de laboratorio está relacionado con un tema tan sutil como la seguridad de los datos: este es un área en la que
lo que le permite perder todos sus datos debido al error más pequeño: una letra o número adicional.
Como estás haciendo trabajo de laboratorio, no corres ningún peligro, excepto que tendrás que empezar a hacerlo todo de nuevo.
En la vida real, todo es mucho más serio, por lo que debes ingresar los nombres de los discos con mucho cuidado, entendiendo
¿Qué estás haciendo exactamente con el comando actual y con qué discos estás trabajando?

El segundo punto importante es la denominación de los discos y las particiones: según la situación, los números de los discos pueden diferir.
a partir de aquellos valores que se presentan en los comandos en el trabajo de laboratorio.
Entonces, por ejemplo, si elimina el disco sda de la matriz y luego agrega un disco nuevo, se mostrará el nuevo disco.
en un sistema llamado sda. Si reinicia antes de agregar un nuevo disco, entonces el nuevo
el disco se llamará sdb y el antiguo se llamará sda

El laboratorio debe ejecutarse como superusuario (root), ya que la mayoría de los comandos lo requieren.
privilegios elevados y no tiene sentido escalar privilegios constantemente a través de sudo

Materiales de estudio

  • RAID
  • LVM
  • Nomenclatura de discos en el sistema operativo Linux
  • ¿Qué es una sección?
  • ¿Qué es una tabla de particiones y dónde se almacena?
  • que es la comida

Utilidades utilizadas

1) ver información del disco

  • lsblk -o NOMBRE, TAMAÑO, FSTYPE, TIPO, PUNTO DE MONTAJE
  • fdisk -l
    2) ver información y trabajar con LVM
  • pvs
  • extender
  • pvccrear
  • pvredimensionar
  • vgs
  • vgreducir
  • lvs
  • extender
    3) ver información y trabajar con RAID
  • gato /proc/mdstat
  • mdadm
    4) puntos de montaje
  • montar
  • desmontar
  • gato /etc/fstab
  • gato /etc/mtab
    5) partición del disco
  • fdisk/dev/XXX
    6) copiar particiones
  • dd si=/dev/xxx de=/dev/yyy
    7) trabajar con la tabla de particiones
  • partx
  • disco sf
  • mkfs.ext4
    8) trabajar con el gestor de arranque
  • instalación de grub /dev/XXX
  • actualizar-grub
    9) misceláneos
  • lsof
  • apto
  • rsync

El trabajo de laboratorio consta de 3 partes:

  • configurar un sistema de trabajo usando lvm, raid
  • Emulación de uno de los fallos del disco.
  • reemplazar discos sobre la marcha, agregar nuevos discos y mover particiones.

Tarea 1 (instalación del sistema operativo y configuración de LVM, RAID)

1) Crear una nueva máquina virtual, dándole las siguientes características:

  • 1 GB de RAM
  • 1 cpu
  • 2 discos duros (nómbrelos ssd1, ssd2 y asígneles tamaños iguales, marque las casillas de intercambio en caliente y ssd)
  • Controlador SATA configurado para 4 puertos

Laboratorio: configuración de lvm, raid en Linux

2) Comience a instalar Linux y cuando llegue a seleccionar los discos duros, haga lo siguiente:

  • Método de partición: manual, después del cual deberías ver esta imagen:
    Laboratorio: configuración de lvm, raid en Linux

  • Configurar una partición separada para /boot: seleccione el primer disco y cree una nueva tabla de particiones en él

    • Tamaño de partición: 512M
    • Punto de montaje: /boot
    • Repita la configuración para el segundo disco, pero como no puede montar/arrancar dos veces al mismo tiempo, seleccione el punto de montaje: ninguno, y finalmente obtendrá lo siguiente (imagen con una jamba, demasiado vago para rehacerla):
      Laboratorio: configuración de lvm, raid en Linux

  • Configuración de RAID:

    • Seleccione espacio libre en el primer disco y configure el tipo de partición como volumen físico para RAID
    • Seleccione "Terminado de configurar la partición"
    • Repita exactamente la misma configuración para el segundo disco, lo que dará como resultado lo siguiente:
      Laboratorio: configuración de lvm, raid en Linux
    • Seleccione "Configurar software RAID"
    • Crear dispositivo MD
    • Tipo de dispositivo RAID de software: seleccione una matriz reflejada
    • Dispositivos activos para la matriz RAID XXXX: seleccione ambas unidades
    • Dispositivos de repuesto: deje 0 como predeterminado
    • Dispositivos activos para la matriz RAID XX: seleccione las particiones que creó en raid
    • Acabado
    • Como resultado, deberías obtener una imagen como esta:
      Laboratorio: configuración de lvm, raid en Linux

  • Configuración de LVM: seleccione Configurar el administrador de volúmenes lógicos

    • Mantenga el diseño de partición actual y configure LVM: Sí
    • Crear grupo de volumen
    • Nombre del grupo de volúmenes: sistema
    • Dispositivos para el nuevo grupo de volúmenes: seleccione su RAID creado
    • Crear volumen lógico
    • nombre del volumen lógico: raíz
    • tamaño de volumen lógico: 25 del tamaño de su disco
    • Crear volumen lógico
    • nombre del volumen lógico: var
    • tamaño de volumen lógico: 25 del tamaño de su disco
    • Crear volumen lógico
    • nombre del volumen lógico: registro
    • tamaño de volumen lógico: 15 del tamaño de su disco
    • Al seleccionar Mostrar detalles de configuración, debería obtener la siguiente imagen:
      Laboratorio: configuración de lvm, raid en Linux
    • Una vez que haya completado la configuración de LVM, debería ver lo siguiente:
      Laboratorio: configuración de lvm, raid en Linux

  • Diseño de partición: uno por uno, seleccione cada volumen creado en LVM y distribúyalos, por ejemplo, para root de esta manera:

    • Usar como: ext4
    • punto de montaje: /
    • El resultado de marcar la partición raíz debería verse así:
      Laboratorio: configuración de lvm, raid en Linux
    • repita la operación de partición para var y log, seleccionando los puntos de montaje apropiados (/var y /var/log ingresados ​​manualmente), obteniendo el siguiente resultado:
      Laboratorio: configuración de lvm, raid en Linux
    • Seleccione Finalizar partición
    • Se le harán varias preguntas sobre el hecho de que todavía tiene una partición desmontada y el intercambio no está configurado. Ambas preguntas deben responderse negativamente.

  • El resultado final debería verse así:
    Laboratorio: configuración de lvm, raid en Linux
    3) Finalice la instalación del sistema operativo instalando grub en el primer dispositivo (sda) e inicie el sistema.
    4) Copie el contenido de la partición /boot de la unidad sda (ssd1) a la unidad sdb (ssd2)

    dd if=/dev/sda1 of=/dev/sdb1

    5) Instale grub en el segundo dispositivo:

  • Mire los discos en el sistema:

    fdisk -l
    lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

  • Enumere todos los discos que le dio el comando anterior y describa qué tipo de disco es

  • Busque la unidad donde no se instaló grub y realice esta instalación:
    grub-install /dev/sdb

  • vea información sobre la incursión actual con el comando cat /proc/mdstat y escriba lo que vea.

  • Mire la salida de los comandos: pvs, vgs, lvs, mount y escriba lo que vio exactamente.

Describe con tus propias palabras lo que hiciste y qué resultado obtuviste de la tarea.

Después de completar esta tarea, se recomienda guardar una copia de seguridad de la carpeta de la máquina virtual o hacer
caja vagabunda: https://t.me/bykvaadm/191

Resultado: Máquina virtual con discos ssd1, ssd2

Tarea 2 (Emulando el fallo de uno de los discos)

1) Si ha marcado la casilla de intercambio en caliente, puede eliminar discos sobre la marcha

  • Eliminar disco ssd1 en propiedades de la máquina
  • Busque el directorio donde están almacenados los archivos de su máquina virtual y elimine ssd1.vmdk
    2) Asegúrese de que su máquina virtual todavía esté funcionando
    3) Reinicie la máquina virtual y asegúrese de que todavía se esté ejecutando
    4) verifique el estado de la matriz RAID: cat /proc/mdstat
    5) agregue un nuevo disco del mismo tamaño en la interfaz VM y asígnele el nombre ssd3
    6) realizar las operaciones:
  • ver que el nuevo disco ha llegado al sistema usando fdisk -l
  • copie la tabla de particiones del disco antiguo al nuevo: sfdisk -d /dev/XXXX | sfdisk /dev/YYY
  • mira el resultado usando fdisk -l
  • Agregue un nuevo disco a la matriz raid: mdadm —manage /dev/md0 —add /dev/YYY
  • Mire el resultado: cat /proc/mdstat. Deberías ver que la sincronización ha comenzado.
    7) Ahora necesita sincronizar manualmente las particiones que no forman parte del RAID.
    Para hacer esto, usaremos la utilidad dd, copiando del disco “live” al nuevo que instaló recientemente.

    dd if=/dev/XXX of=/dev/YYY

    8) Una vez completada la sincronización, instale grub en la nueva unidad
    9) Reinicie la VM para asegurarse de que todo esté funcionando.
    Describe con tus propias palabras lo que hiciste y qué resultado obtuviste de la tarea.
    Resultado: se eliminó el disco ssd1, se guardó el disco ssd2 y se agregó el disco ssd3.

    Tarea 3 (Agregar nuevos discos y mover una partición)

    Ésta es la tarea más compleja y voluminosa de todas las presentadas.
    Comprueba con mucho cuidado qué estás haciendo y con qué discos y particiones.
    Se recomienda hacer una copia antes de ejecutarlo.
    Esta tarea es independiente de la tarea número 2; se puede realizar después de la tarea número 1, ajustada según los nombres de los discos.
    La segunda parte de esta tarea de laboratorio debería llevarnos exactamente al mismo estado que después de completar la primera parte.

    Para facilitar su trabajo, puedo recomendar no retirar físicamente los discos de la máquina host, sino sólo
    desconéctelos en las propiedades de la máquina. Desde el punto de vista del sistema operativo en la VM, se verá exactamente igual, pero puedes
    si sucede algo, vuelva a conectar el disco y continúe el trabajo retrocediendo un par de puntos, si
    estás teniendo problemas. Por ejemplo, es posible que lo haya hecho incorrectamente o que haya olvidado copiar la partición /boot al nuevo disco.
    Solo puedo aconsejarle que compruebe varias veces con qué discos y particiones está trabajando, o incluso mejor
    Anota en una hoja de papel la correspondencia entre los discos, particiones y el número de disco “físico”. Hermoso y claro árbol
    sorteos del equipo lsblk, Úselo con la mayor frecuencia posible para analizar lo que ha hecho y lo que hay que hacer.

    A la historia...

    Imagina que tu servidor ha estado funcionando durante mucho tiempo en 2 unidades SSD, cuando de repente…

    1) Simule la falla del disco ssd2 quitando el disco de las propiedades de la VM y reiniciando
    2) Ver el estado actual de los discos y RAID:

    cat /proc/mdstat
    fdisk -l
    lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

    3) Tienes suerte: tus jefes te han permitido comprar varios discos nuevos:

    2 SATA de gran capacidad para la tan esperada tarea de mover la partición con registros a un disco separado

    2 SSD para reemplazar el que murió, así como para reemplazar el que aún funciona.

    Tenga en cuenta que la cesta del servidor solo admite la instalación de 4 discos a la vez,
    por lo tanto, no puede agregar todos los discos a la vez.

    Seleccione una capacidad de HDD 2 veces mayor que la de SSD.
    La capacidad del SSD es 1,25 veces mayor que la del SSD anterior.

    4) Agregue un nuevo disco ssd, llámelo ssd4 y, después de agregarlo, verifique qué sucedió:

    fdisk -l
    lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

    5) En primer lugar, debes cuidar la seguridad de los datos en el disco antiguo.
    Esta vez transferiremos datos usando LVM:

    • En primer lugar, debe copiar la tabla de archivos del disco antiguo al nuevo:
      sfdisk -d /dev/XXX | sfdisk /dev/YYY

      Sustituya x,y por los discos correctos y descubra qué hace este comando.

      Ejecute lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT y compare su resultado con la llamada anterior.
      ¿Que ha cambiado?
      use el comando dd para copiar los datos /boot al nuevo disco

      dd if=/dev/XXX of=/dev/YYY

      Si /boot permaneció montado en el disco antiguo, se debe volver a montar en el disco activo:

      mount | grep boot # смотрим куда смонтирован диск
      lsblk # смотрим какие диски есть в системе и смотрим есть ли диск, полученный из предыдущего пункта
      umount /boot # отмонтируем /boot
      mount -a # выполним монтирование всех точек согласно /etc/fstab. 
      # Поскольку там указана точка монтирования /dev/sda, то будет выполнено корректное перемонтирование на живой диск

      Instale el gestor de arranque en la nueva unidad SSD

      grub-install /dev/YYY

      ¿Por qué estamos realizando esta operación?

      cree una nueva matriz raid que incluya solo un disco SSD nuevo:

      mdadm --create --verbose /dev/md63 --level=1 --raid-devices=1 /dev/YYY

      El comando anterior no funcionará sin especificar una clave especial.
      Lea la ayuda y agregue esta clave al comando.

      Utilice el comando cat /proc/mdstat para comprobar el resultado de su operación. ¿Que ha cambiado?
      Ejecute lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT y compare su resultado con la llamada anterior.
      ¿Que ha cambiado?
      6) El siguiente paso es configurar LVM
      ejecute el comando pvs para ver información sobre los volúmenes físicos actuales
      cree un nuevo volumen físico que incluya la matriz RAID creada anteriormente:

      pvcreate /dev/md63

      Ejecute lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT y compare su resultado con la llamada anterior.
      ¿Que ha cambiado?
      Ejecute el comando pvs nuevamente. ¿Que ha cambiado?
      Aumentemos el tamaño del sistema del grupo de volúmenes usando el siguiente comando:

      vgextend system /dev/md63

      Ejecute los comandos y escriba lo que vio y lo que cambió.

      vgdisplay system -v
      pvs
      vgs
      lvs -a -o+devices

      ¿En qué disco físico se encuentran actualmente LV var,log,root?

      Mueva los datos de la unidad antigua a la nueva, utilizando los nombres de dispositivo correctos.

      pvmove -i 10 -n /dev/system/root /dev/md0 /dev/md63 

      Repita la operación para todos los volúmenes lógicos.

      Ejecute los comandos y escriba lo que vio y lo que cambió.

      vgdisplay system -v
      pvs
      vgs
      lvs -a -o+devices
      lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

      Cambiemos nuestro VG quitando el antiguo disco raid. Sustituya el nombre de la incursión correcta.

      vgreduce system /dev/md0

      Ejecute los comandos y escriba lo que vio y lo que cambió.

      lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
      pvs
      vgs

      Para hacer la imagen más hermosa, vuelva a montar/iniciar en el segundo disco ssd (ssd4) y ejecute lsblk. Como resultado, el disco ssd3 no
      no se debe montar nada. ¡Compruebe cuidadosamente que la partición /boot no esté vacía! ls /boot debe mostrar
      varios archivos y carpetas. Estudie lo que se almacena en esta sección y anote qué directorio de archivos es responsable de qué.
      7) retire el disco ssd3 y agregue ssd5, hdd1, hdd2 de acuerdo con las especificaciones técnicas descritas anteriormente, lo que resulta en:
      ssd4: el primer SSD nuevo
      ssd5 - segundo ssd nuevo
      hdd1 - primer disco duro nuevo
      hdd2 - segundo disco duro nuevo

      8) Verifique qué sucedió después de agregar los discos:

      fdisk -l
      lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

      9) Restablezcamos el funcionamiento del conjunto raid principal:

      • copie la tabla de particiones, reemplazando los discos correctos:
        sfdisk -d /dev/XXX | sfdisk /dev/YYY
      • Tenga en cuenta que cuando copiamos la tabla de particiones del disco antiguo, parecía que el nuevo tamaño
        no utiliza toda la capacidad del disco duro.
        Por lo tanto, pronto necesitaremos cambiar el tamaño de esta partición y expandir la incursión.
        Compruébelo usted mismo ejecutando el comando:

        lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

        10) copie la partición de arranque/arranque de ssd4 a ssd5

        dd if=/dev/XXX of=/dev/YYY

        11) Instale grub en la nueva unidad (ssd5)
        12) cambiar el tamaño de la segunda partición del disco ssd5

        Ejecute la utilidad de partición de disco:

        fdisk /dev/XXX

        ingrese la tecla d para eliminar una partición existente (elija 2)
        ingrese la clave n para crear una nueva partición
        ingrese la clave p para indicar que el tipo de partición es "primaria"
        ingrese la clave 2 para que la nueva partición tenga el segundo número
        Primer sector: presione enter para aceptar el tamaño calculado automáticamente del comienzo de la partición
        Último sector: presione enter para aceptar el tamaño calculado automáticamente del final de la partición
        ingrese la tecla l para ver una lista de todos los tipos de particiones posibles y busque Linux raid auto en ella
        ingrese la tecla t para cambiar el tipo de partición creada (2) e ingrese el número encontrado en el paso anterior.
        ingrese la tecla w para escribir el cambio en el disco.
        12) vuelva a leer la tabla de particiones y verifique el resultado

        partx -u /dev/XXX
        lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

        agregue un nuevo disco a la matriz raid actual (no olvide sustituir los discos correctos)

        mdadm --manage /dev/md63 --add /dev/sda2

        Ampliemos la cantidad de discos en nuestra matriz a 2:

        mdadm --grow /dev/md63 --raid-devices=2

        Mire el resultado: tenemos 2 matrices marcadas, pero ambas secciones incluidas en esta matriz tienen diferentes tamaños

        lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

        13) aumente el tamaño de la partición en el disco ssd4

        Ejecute la utilidad de partición de disco:

        fdisk /dev/XXX

        ingrese la tecla d para eliminar una partición existente (elija 2)
        ingrese la clave n para crear una nueva partición
        ingrese la clave p para indicar que el tipo de partición es "primaria"
        ingrese la clave 2 para que la nueva partición tenga el segundo número
        Primer sector: presione enter para aceptar el tamaño calculado automáticamente del comienzo de la partición
        Último sector: presione enter para aceptar el tamaño calculado automáticamente del final de la partición
        Al final del marcado, seleccione No para dejar la firma de los miembros de la partición en la matriz.
        ingrese la tecla w para escribir el cambio en el disco.
        12) vuelva a leer la tabla de particiones y verifique el resultado

        partx -u /dev/XXX
        lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

        Tenga en cuenta que ahora las particiones sda2, sdc2 tienen un tamaño > que el tamaño del dispositivo raid.

        13) en esta etapa el tamaño de la incursión ahora se puede ampliar

        mdadm --grow /dev/md63 --size=max
        lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT # check result

        Revise lsblk y observe lo que ha cambiado.
        14) Sin embargo, aunque cambiamos el tamaño del raid, los tamaños de vg root,var,log no cambiaron.

        • mire el tamaño de PV:
          pvs
        • Ampliemos el tamaño de nuestro PV:
          pvresize /dev/md63
        • mire el tamaño de PV:
          pvs

          15) Agregue la ubicación recién aparecida VG var,root

          lvs # посмотрим сколько сейчас размечено
          lvextend -l +50%FREE /dev/system/root
          lvextend -l +100%FREE /dev/system/var
          lvs # проверьте что получилось

          En este punto, ha completado la migración de la matriz principal a los nuevos discos. trabajar con ssd1, ssd2 está completo

          16) Nuestra siguiente tarea es mover /var/log a nuevos discos, para ello crearemos una nueva matriz y lvm en los discos hdd.

          • veamos qué nombres tienen los nuevos discos duros
            fdisk -l
          • creemos una matriz de incursión
            mdadm --create /dev/md127 --level=1 --raid-devices=2 /dev/sdc /dev/sdd
          • creemos un nuevo PV en la incursión desde discos grandes
            pvcreate data /dev/md127
          • Creemos un grupo en este PV llamado datos.
            vgcreate data /dev/md127
          • Creemos un volumen lógico con el tamaño de todo el espacio libre y llamémoslo val_log
            lvcreate -l 100%FREE -n var_log data # lvs # посмотрим результат
          • formatear la partición creada en ext4
            mkfs.ext4 /dev/mapper/data-var_log
          • veamos el resultado
            lsblk

            17) transferir datos de registro de la partición anterior a la nueva

            instalar temporalmente un nuevo almacenamiento de registros

            mount /dev/mapper/data-var_log /mnt

            sincronicemos las particiones

            apt install rsync
            rsync -avzr /var/log/ /mnt/

            Averigüemos qué procesos se están ejecutando actualmente en /var/log

            apt install lsof
            lsof | grep '/var/log'

            detener estos procesos

            systemctl stop rsyslog.service syslog.socket

            realizar la sincronización final de particiones (datos que pueden haber cambiado desde la última sincronización)

            rsync -avzr /var/log/ /mnt/

            intercambiar las secciones

            umount /mnt
            umount /var/log
            mount /dev/mapper/data-var_log /var/log

            veamos qué pasó

            lsblk

            18) Editar /etc/fstab
            fstab: un archivo que registra las reglas según las cuales se montarán las particiones en el arranque
            nuestra tarea es encontrar la línea donde está montado /var/log y arreglar el dispositivo system-log en data-var_log

            19) Lo más importante en esta etapa es no olvidar cambiar la tabla radela (ext4, por ejemplo). Porque no importa cómo cambiemos cualquier raid, lvm, hasta que se notifique al FS de la partición que el tamaño de la partición ha cambiado, no podremos usar el nuevo espacio. usa el comando resize2fs para cambiar el FS.

            20) Acorde final

            • Reiniciemos. Si hizo todo correctamente, regresará a su sistema operativo (esto es necesario para asegurarse de que todo esté funcionando. Este paso no tiene más significado que el de autocomprobación).
            • comprobar que todo lo que queríamos hacer se hizo realmente:
              pvs
              lvs
              vgs
              lsblk
              cat /proc/mdstat

            21) [OPCIONAL] Sigue los pasos

            • reinicie presionando F12 para especificar diferentes unidades al iniciar para asegurarse de que puede iniciar
              desde cualquiera de las unidades ssd, para que no tengamos miedo de que falle una de ellas
            • ahora tiene un registro LV innecesario en el sistema VG. Asigne este espacio entre root o var, pero en lugar de usar
              diseños 100%GRATIS especifica el tamaño a mano usando la tecla -L:

              -L 500M
            • solucione el problema de que /boot está ubicado en dos particiones sin sincronización, no es necesario hacerlo correctamente,
              se agrega aquí como ejemplo. No olvides copiar primero el contenido de /boot en algún lugar.

              • crear una nueva incursión e incluir sda1,sda2 en ella
              • incluya estas particiones en el raid existente y restaure /boot en el raid principal, pero sin montarlo.

Fuente: habr.com

Añadir un comentario