Instale el escritorio Ubuntu 18.04 con RAID 1 y LVM en la máquina con UEFI BIOS

11

Tengo una máquina con UEFI BIOS. Quiero instalar Ubuntu 18.04, versión de escritorio con RAID 1 (y LVM) para que mi sistema continúe funcionando incluso si falla una de las unidades. No he encontrado un CÓMO de cómo hacer eso. El instalador de escritorio no es compatible con RAID. La respuesta a esta pregunta casi funciona, pero requiere un poco de disco USB GRUB shell / rescue y la configuración de UEFI magic. ¿Alguien sabe de un procedimiento que funcione sin las partes mágicas?

Niclas Börlin
fuente

Respuestas:

18

¿Con la ayuda de Cómo instalar el servidor Ubuntu con UEFI y RAID1 + LVM , la configuración RAID en Ubuntu 18.04 y la compatibilidad con RAID en el instalador de escritorio Ubuntu 18.04? y ¿Cómo deshacerse del "escaneo de sistemas de archivos btrfs" al inicio? , Logré armar un CÓMO de trabajo usando solo comandos de Linux.

En breve

  1. Descargue el instalador alternativo del servidor.
  2. Instalar con particionamiento manual, EFI + RAID y LVM en la partición RAID.
  3. Clone la partición EFI de la partición instalada a la otra unidad.
  4. Instale la segunda partición EFI en la cadena de arranque UEFI.
  5. Para evitar una larga espera durante el arranque en caso de que una unidad se rompa, elimine las btrfssecuencias de comandos de arranque.

En detalle

1. Descargue el instalador

2. Instalar con particionamiento manual

  • Durante la instalación, en el Partition diskspaso, seleccione Manual.
  • Si los discos contienen particiones, elimínelas.
    • Si hay volúmenes lógicos en sus unidades, seleccione Configure the Logical Volume Manager.
      • Elija Delete logical volumehasta que se hayan eliminado todos los volúmenes.
      • Elija Delete volume grouphasta que se hayan eliminado todos los grupos de volúmenes.
    • Si hay algún dispositivo RAID presente, seleccione Configure software RAID.
      • Elija Delete MD devicehasta que se hayan eliminado todos los dispositivos MD.
    • Elimine cada partición en las unidades físicas eligiéndolas y seleccionándolas Delete the partition.
  • Crea particiones físicas
    • En cada unidad, crear una partición de 512 MB (he visto que otros utilizan 128MB) al principio del disco, Utilizar como: EFI System Partition.
    • En cada unidad, crear una segunda partición con el tamaño de 'max', Utilizar como: Physical Volume for RAID.
  • Configurar RAID
    • Seleccionar Configure software RAID.
    • Seleccione Create MD device, escriba RAID1, 2 discos activos, 0 discos de repuesto y seleccione los dispositivos /dev/sda2y /dev/sdb2.
  • Configurar LVM
    • Seleccionar Configure the Logical Volume Manager.
    • Crear grupo de volúmenes vgen el /dev/md0dispositivo.
    • Crear volúmenes lógicos, p. Ej.
      • swap a 16G
      • root a 35G
      • tmp a 10G
      • var en 5G
      • home a 200G
  • Configurar cómo usar las particiones lógicas
    • Para la swappartición, seleccione Use as: swap.
    • Para las otras particiones, seleccione Use as: ext4con los puntos de montaje adecuado ( /, /tmp, /var, /home, respectivamente).
  • Seleccionar Finish partitioning and write changes to disk.
  • Permita que el programa de instalación finalice y reinicie.

Si está reinstalando en una unidad que anteriormente tenía una configuración RAID, el paso de creación RAID anterior podría fallar y nunca obtendrá un mddispositivo. En ese caso, es posible que deba crear una memoria USB de Ubuntu Live, iniciarla y ejecutarla gparted para borrar todas las tablas de particiones, antes de reiniciar este CÓMO.

3. Inspeccionar el sistema

  • Compruebe qué partición EFI se ha montado. Lo más probable /dev/sda1.

    monte | arranque grep

  • Verifique el estado de RAID. Lo más probable es que se esté sincronizando.

    cat / proc / mdstat

4. Clonar la partición EFI

El arranque EFI cargado debería haberse instalado en /dev/sda1. Como esa partición no se refleja a través del sistema RAID, debemos clonarla.

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

5. Inserte la segunda unidad en la cadena de arranque

Este paso puede no ser necesario, ya que si cualquiera de las unidades muere, el sistema debería arrancar desde las particiones EFI (idénticas). Sin embargo, parece prudente garantizar que podamos arrancar desde cualquier disco.

  • Ejecute efibootmgr -vy observe el nombre del archivo para la ubuntuentrada de arranque. En mi instalación fue \EFI\ubuntu\shimx64.efi.
  • Ejecutar sudo efibootmgr -c -d /dev/sdb -p 1 -L "ubuntu2" -l \EFI\ubuntu\shimx64.efi. Dependiendo de su caparazón, es posible que deba escapar de las barras diagonales inversas.
  • Verificar con efibootmgr -vque tiene el mismo nombre de archivo para los ubuntuy ubuntu2botas de artículos y que son los dos primeros en el orden de arranque.
  • ¡Ahora el sistema debería arrancar incluso si falla alguna de las unidades!

7. espera

Si desea intentar eliminar o deshabilitar físicamente cualquier unidad para probar su instalación, ¡primero debe esperar hasta que la sincronización RAID haya finalizado! Controle el progreso con cat /proc/mdstatSin embargo, puede realizar el paso 8 a continuación mientras espera.

8. Eliminar BTRFS

Si falla una unidad (después de que se complete la sincronización), el sistema aún se iniciará. Sin embargo, la secuencia de arranque pasará mucho tiempo buscando sistemas de archivos btrfs. Para eliminar esa espera innecesaria, ejecute

sudo apt-get purge btrfs-progs

Esto debería eliminar btrfs-progs, btrfs-toolsy ubuntu-server. El último paquete es solo un metapaquete, por lo que si no hay más paquetes listados para eliminar, debería estar bien.

9. Instale la versión de escritorio

Ejecute sudo apt install ubuntu-desktoppara instalar la versión de escritorio. ¡Después de eso, la sincronización probablemente se haya realizado y su sistema esté configurado y debería sobrevivir a una falla de disco!

10. Actualice la partición EFI después de la actualización de grub-efi-amd64

Cuando grub-efi-amd64se actualiza el paquete , los archivos en la partición EFI (montados en /boot/efi) pueden cambiar. En ese caso, la actualización debe clonarse manualmente en la partición espejo. Afortunadamente, debería recibir una advertencia del administrador de actualizaciones que grub-efi-amd64está a punto de actualizarse, para que no tenga que verificar después de cada actualización.

10.1 Descubra la fuente de clonación, de forma rápida

Si no ha reiniciado después de la actualización, use

mount | grep boot

para averiguar qué partición EFI está montada. Esa partición, por lo general /dev/sdb1, debe usarse como fuente de clonación.

10.2 Averigüe la fuente del clon, de forma paranoica

Cree puntos de montaje y monte ambas particiones:

sudo mkdir /tmp/sda1 /tmp/sdb1
sudo mount /dev/sda1 /tmp/sda1
sudo mount /dev/sdb1 /tmp/sdb1

Encuentra la marca de tiempo del archivo más nuevo en cada árbol

sudo find /tmp/sda1 -type f -printf '%T+ %p\n' | sort | tail -n 1 > /tmp/newest.sda1
sudo find /tmp/sdb1 -type f -printf '%T+ %p\n' | sort | tail -n 1 > /tmp/newest.sdb1

Comparar marcas de tiempo

cat /tmp/newest.sd* | sort | tail -n 1 | perl -ne 'm,/tmp/(sd[ab]1)/, && print "/dev/$1 is newest.\n"'

Debe imprimir /dev/sdb1 is newest(lo más probable) o /dev/sda1 is newest. Esa partición debe usarse como fuente de clonación.

Desmonte las particiones antes de la clonación para evitar inconsistencias de caché / partición.

sudo umount /tmp/sda1 /tmp/sdb1

10.3 Clon

Si /dev/sdb1fue la fuente del clon:

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

Si /dev/sda1fue la fuente del clon:

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

¡Hecho!

11. Gotchas de máquinas virtuales

Si primero quiere probar esto en una máquina virtual, hay algunas advertencias: Aparentemente, la NVRAM que contiene la información UEFI se recuerda entre reinicios, pero no entre ciclos de apagado y reinicio. En ese caso, puede terminar en la consola UEFI Shell. Los siguientes comandos deberían iniciarlo en su máquina desde /dev/sda1(use FS1:for /dev/sdb1):

FS0:
\EFI\ubuntu\grubx64.efi

La primera solución en la respuesta superior del arranque UEFI en virtualbox: Ubuntu 12.04 también podría ser útil.

Niclas Börlin
fuente
¿Cómo utilizaría LUKS para un conjunto de espejos cifrado / RAID 1, evitando que el cifrado ocurra dos veces (por ejemplo, LUKS sentado bajo mdadm, de modo que IO ocurre dos veces, pero el cifrado solo ocurre una vez, esto en realidad no sucede con algunas configuraciones , como los recomendados para ZFS, donde los volúmenes se cifran dos veces, una por dispositivo, duplicando efectivamente el costo del lado de cifrado de las cosas). No he podido encontrar instrucciones recientes sobre esta configuración.
soze
2
@soze, desafortunadamente no tengo experiencia con particiones Linux encriptadas. Haría un poco de prueba y error en una máquina virtual para averiguarlo. NB: agregué una sección anterior sobre las trampas de máquinas virtuales.
Niclas Börlin
Gracias @ NiclasBörlin! Estaba luchando con la creación de la partición de arranque bajo RAID y LVM, y su respuesta fue clara como el cristal. ¡Muchas gracias!
Gui Ambros
Vaca santa! ¡Agradable!
pileofrogs
Parece que esto ya no funciona con Focal Fossa ya que el instalador alternativo se ha ido. El instalador de Focal no tiene las opciones de partición mencionadas e insiste en un dispositivo para /bootsi intenta seguir la ruta de instalación de incursiones automatizadas.
Miércoles
3

RAID-1 + XFS + UEFI

Pude llegar al 99% del camino con la respuesta de @Niclas Börlin, ¡gracias!

También obtuve ayuda de las siguientes respuestas:

Estas son las formas en que arruiné las cosas

  1. Tener el BIOS en modo "Auto", lo que permitió que la llave USB se iniciara NO en modo UEFI. Esto provocó que Grub no se instalara correctamente. Cambié el modo a solo UEFI, reinicié y eliminé todos los volúmenes lógicos, grupos de incursiones y particiones y comencé de nuevo. Intenté volver a instalar grub en las particiones EFI, lo que solo empeoró las cosas.
  2. Tener la /bootpartición en XFS. El grub2 que viene con Ubuntu 18.04LTS aparentemente no maneja esto. Aunque eso no está documentado en ninguna parte. Creé una /bootpartición EXT-4 separada . Tenga en cuenta que esto todavía está en el volumen RAID-1 LVM, ¡y no en particiones separadas como las EFI! Muchas respuestas anteriores dicen que esto no es posible, pero parece ser ahora. Terminé obteniendo grub pero obteniendo errores desconocidos del sistema de archivos (p. Ej., Cómo solucionar "error: sistema de archivos desconocido. Grub rescue> ) que me dieron la pista XFS /bootcomo un no-go.
  3. En algún lugar en el medio de eso terminé con grub instalado pero un mensaje de grub en blanco, sin menú de grub. (p. ej. https://help.ubuntu.com/community/Grub2/Troubleshooting#Specific_Troubleshooting ). Esto se debió a /bootno ser accesible.

Que funciono para mi

Comience con la respuesta de @Niclas Börlin y cambie algunas cosas menores.

Tabla de particiones

Estoy a favor de una /partición grande , por lo que esto refleja esa elección. El cambio principal es una /bootpartición EXT4 en lugar de una XFS.

sda/
          GPT     1M (auto-added)
   sda1 - EFI - 512M
   sda2 - MD0 - 3.5G

sdb/
          GPT     1M (auto-added)
   sdb1 - EFI - 512M
   sdb2 - MD0 - 3.5G

md0/
   vg/
     boot - 1G   - EXT4 /boot
     swap - 16G  - SWAP 
     root - rest - XFS  /

Después de la instalación terminada pude ddel contenido de sda1a sdb2como se detalla en la otra respuesta. También pude agregar la segunda unidad a la cadena de arranque usando efibootmgrcomo se detalla.

maxslug
fuente
¡muy útil! He estado enfrentando el mismo problema con el servidor ubuntu 18.04 + UEFI + RAID1 + LVM. Seguir su esquema de partición me ha ayudado mucho. ¡Gracias!
Lucas Aimaretto