Installazione Ubuntu Server in modalità UEFI con RAID Software

Installazione Ubuntu Server in modalità UEFI con RAID Software

Prima di iniziare date un’occhiata a questo articolo per controllare se il vostro bios sia impostato correttamente per l’installazione in modalità UEFI

Scaricare il programma di installazione

Scaricare l’immagine ISO (es. ubuntu-18.04.1-server-amd64.iso) da qui
Creare un CD o una USB bootable e avviare il pc con il supporto creato per installare Ubuntu in UEFI con un software RAID

  1.  Installare con partizionamento manuale

    Dopo la fase in cui vengono richiesti la nazionalità e le lingue del OS, in Partition disks, selezionare Manual .
    Se i dischi contengono già delle partizioni, rimuoverle.
    Se sono presenti volumi logici sulle unità, selezionare Configure the Logical Volume Manager .
    Scegliere Delete logical volume finché tutti i volumi non sono stati eliminati.
    Scegli Delete volume group finché tutti i gruppi di volumi non siano stati eliminati.
    Se è presente un dispositivo RAID, selezionare Configure software RAID .
    Scegli Delete MD device fino a quando tutti i dispositivi MD sono stati eliminati.
    Elimina ogni partizione sulle unità fisiche selezionate scegliendo Delete the partition .
    A questo punto dovremmo avere una situazione come da figura sotto e possiamo iniziare a creare le partizioni fisiche:


    Su ogni unità (sda e sdb), dopo aver creato una tabella di partizionamento vuota, creare una partizione da 512 MB all’inizio del disco, e scegliere di utilizzarla come: EFI System Partition.


    Su ciascuna unità, creare una seconda partizione con tutto lo spazio rimanente, scegliendo di utilizzarla come: Physical Volume for RAID .

  2. Configurazione del RAID

    Selezionare Configure software RAID .
    Selezionare Create MD device -> RAID 1 ,  number active disk 2 , number spare devives 0, e selezionare i dispositivi /dev/sda2 e /dev/sdb2 e confermare.

  3. Configurare LVM

    Seleziona Configure the Logical Volume Manager –> Create Volume group.
    Creare un volume  group vg o un altro nome sul dispositivo /dev/md0 e successivamente i volumi logici ad es:
    – vg_root a 7 GB
    – vg_swap a 1 GB
    – vg_var a 1 GB
    – vg_home a 1 GB
    NB. I valori dello spazio per le varie partizioni è di esempio. In un server di produzione devono essere ovviamente differenti
    Impostare come utilizzare le partizioni logiche
    Per la partizione di swap , selezionare Use as: swap .
    Per le altre partizioni, selezionare Use as: ext4 con i punti di montaggio appropriati rispettivamente  / , /var , /home .
    Seleziona Finish partitioning and write changes to disk .

    Attendere la fine del programma di installazione riavviare.

  4. Verifica del sistema

    Verifico rapidamente il mio partizionamento. Come si può vedere /dev/sda1 e /dev/sdb1  sono le due partizione EFI  mentre
    /dev/sda2 e /dev/sdb2 sono le due partizioni in RAID 1

    francesco@ubuntu:~$ sudo fdisk -l
    Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: gpt
    Disk identifier: DF63D02A-CC3B-4E09-B31D-5F4E527FC21F
    
    Device      Start      End  Sectors  Size Type
    /dev/sda1    2048   999423   997376  487M EFI System
    /dev/sda2  999424 20969471 19970048  9.5G Linux RAID
    
    
    Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: gpt
    Disk identifier: 302BD9A4-B201-4682-B393-3AFB617152D5
    
    Device      Start      End  Sectors  Size Type
    /dev/sdb1    2048   999423   997376  487M EFI System
    /dev/sdb2  999424 20969471 19970048  9.5G Linux RAID
    

    Ora controllo quale partizione EFI è stata montata per l’avvio del sistema (nel mio caso/dev/sda1) .

    francesco@ubuntu:~$ mount | grep boot
    /dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=iso8859-1,
    shortname=mixed,errors=remount-ro)
    

    Successivamente, controlla lo stato del RAID. Per dischi molto grandi la prima sincronizzazione dovrebbe avvenire nel giro di qualche decina di minuti.

    francesco@ubuntu:~$ cat /proc/mdstat
    Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
    md0 : active raid1 sdb2[1] sda2[0]
          9975808 blocks super 1.2 [2/2] [UU]
    
    unused devices: <none>
    

    Nel mio caso il raid è già sincronizzato e attivo

    A questo punto, è necessario clonare la partizione EFI con il bootloader che è installato su /dev/sda1 perchè non in mirroring con la partizione /dev/sdb1. Attenzione che il comando seguente è molto potente e potrebbe rendere il pc non più avviabile. Controllate bene la partizione di destinazione!

    francesco@ubuntu:~$ sudo dd if=/dev/sda1 of=/dev/sdb1
    997376+0 records in
    997376+0 records out
    510656512 bytes (511 MB, 487 MiB) copied, 7.24484 s, 70.5 MB/s

    Quando il pacchetto grub-efi-amd64 verrà aggiornato, i file sulla partizione EFI (montati su /boot/efi ) possono cambiare. In tal caso, bisogna rieseguire la clonazione.
    E’ possibile controllare  sulle 2 partizione EFI se riportano lo stesso timestamp:

    sudo mkdir /tmp/sda1 /tmp/sdb1 
    sudo mount /dev/sda1 /tmp/sda1 
    sudo mount /dev/sdb1 /tmp/sdb1
    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
    
    ed infine controllo i timestamp
    cat /tmp/newest.sd* | sort | tail -n 1 | perl -ne 'm,/tmp/(sd[ab]1)/, && print "/dev/$1 e' piu' recente.\n"'

    L’ultimo comando stamperà “/dev/sda1 e’ piu’ recente” o “/dev/sdb1 e’ piu’ recente”.
    Smontare le partizioni prima della clonazione per evitare l’inconsistenza cache/partizione.

    sudo umount /tmp/sda1 /tmp/sdb1

    Ora non rimane che inserire la seconda unità /dev/sdb1 nella chain di avvio.
    Questo passaggio potrebbe non essere necessario, perchè il sistema dovrebbe avviarsi comunque. Tuttavia è meglio già predisporre entrambi i dischi per l’avvio dei sistema in caso di failure di un disco.

    francesco@ubuntu:~$ sudo efibootmgr -v | grep HD
    Boot0005* ubuntu        HD(1,GPT,4b2905b7-cc97-4bbb-82dd-88ec9afe793f,0x800,0xf3800)/File(\EFI\ubuntu\shimx64.efi)
    

    L’applicazione efibootmgr interagisce con il firmware UEFI nel sistema, ed è uno strumento per modificare le impostazioni EFI al fine di creare e gestire le voci di avvio che sono in grado di avviare Linux. Nel mio caso il file immagine di avvio è \EFI\ubuntu\shimx64.efi

    francesco@ubuntu:~$ sudo efibootmgr -c -d /dev/sdb -p 1 -L "ubuntu-disk2" -l \EFI\ubuntu\shimx64.efi
    BootCurrent: 0005
    BootOrder: 0006,0005,0000,0001,0002,0003,0004
    Boot0000* EFI VMware Virtual SCSI Hard Drive (0.0)
    Boot0001* EFI VMware Virtual SCSI Hard Drive (1.0)
    Boot0002* EFI VMware Virtual SATA CDROM Drive (1.0)
    Boot0003* EFI Network
    Boot0004* EFI Internal Shell (Unsupported option)
    Boot0005* ubuntu
    Boot0006* ubuntu-disk2

    Ora il sistema dovrebbe avviarsi correttamente.
    Gli argomenti passati a efibootmgr sono:
    –create (-c) per creare una nuova voce;
    –part (-p) seguito dal numero della partizione dove è presente il sistema EFI;
    –disk (-d) seguito dal disco in cui è presente l’EFI System Partition;
    –label (-L) seguita dal nome che vogliamo dare alla seconda voce di avvio;
    –loader (-l) seguito dal percorso del file di immagine di avvio.

    Per cancellare una voce del menù è possibile utilizzare
    efibootmgr -Bb 0000 -> con 0000 il numero della nuova voce nel boot. Volendo cancellare la voce 6, appena inserita, basta scrivere:

    francesco@ubuntu:~$ sudo efibootmgr -Bb 0006
    BootCurrent: 0005
    BootOrder: 0005,0000,0001,0002,0003,0004
    Boot0000* EFI VMware Virtual SCSI Hard Drive (0.0)
    Boot0001* EFI VMware Virtual SCSI Hard Drive (1.0)
    Boot0002* EFI VMware Virtual SATA CDROM Drive (1.0)
    Boot0003* EFI Network
    Boot0004* EFI Internal Shell (Unsupported option)
    Boot0005* ubuntu

    Se si volesse provare a rimuovere / disabilitare qualsiasi unità, è necessario attendere il termine della sincronizzazione RAID! Monitorare i progressi con cat /proc/mdstat .

    Nell’attesa della sincronizzazione è possibile effettuare questo passaggio (opzionale). Se un’unità si dovesse guastare (dopo aver completato la sincronizzazione), il sistema si avvierebbe tranquillamente. Tuttavia, la sequenza di boot impiegherà molto tempo alla ricerca di file system btrfs. Per eliminare questa attesa inutile, è possibile effettuare la rimozione con il comando:

    francesco@ubuntu:~$ sudo apt-get purge btrfs-progs
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    The following packages will be REMOVED:
      btrfs-progs* btrfs-tools* ubuntu-server*
    0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
    After this operation, 4,275 kB disk space will be freed.
    Do you want to continue? [Y/n] Installa la versione desktop
  5. Come controllare se c’è un errore nel raid?

    Installare msmtp

    sudo apt-get install msmtp msmtp-mta

    Esistono due metodi di configurazione di msmtp; Uno a livello di sistema e quello di base per utenti. Siamo interessati a una configurazione a livello di utente root.
    Verifico dove va creato il file di configurazione

    # msmtp --version | grep "User configuration"
    Quindi nel mio caso
    # sudo nano ~/.msmtprc

    Il file di esempio per entrambi i tipi di configurazione è presente nella cartella in /usr/share/doc/msmtp/examples/ quindi basta copiarlo nella destinazione vista precedentemente:
    cp /usr/share/doc/msmtp/examples/msmtprc-user.example ~/.msmtprc

    A questo punto per non salvare le credenziali per l’accesso smtp in chiaro per l’invio delle email in caso di failure di un disco, mi creo una password crittografata utilizzando GPG
    Creo un set di chiavi
    gpg –full-generate-key

    confermo le voci richieste:
    At the prompt, specify the kind of key you want, or press Enter to accept the default RSA and RSA.
    Enter the desired key size. We recommend the maximum key size of 4096.
    Enter the length of time the key should be valid. Press Enter to specify the default selection, indicating that the key doesn’t expire.
    Verify that your selections are correct.
    Enter your user ID information.
    Real name: SRV XYZ
    E-mail address: raid.sw@serverxyz.it

    Comment: Account per password email
    You selected this USER-ID:
    “SRV XYZ (Account per crittografia password email) <raid.sw@serverxyz.it>”
    Change (N)ame, (C)omment, (E)-mail or (O)kay/(Q)uit? O
    Alla richiesta di inserire una password per la chiave digitare NO

    Infine creo la chiave password

    root@ubuntu:~# echo -e "PasswordSMTP\n" | gpg --encrypt -o .msmtp-server.gpg -r raid.sw@serverxyz.it

    Nel caso di invio con TLS aggiungere anche la Chain delle CA sotto una cartella e modificare la stringa in ~/.msmtprc come nell’esempio (riga 7)

    defaults
    account serverxyz
    host INDIRIZZO.SERVER.SMTP
    from raid.sw@serverxyz.it
    port 587
    tls on
    tls_trust_file /etc/ssl/certs/MyChainCA.pem
    auth on
    user username_login_tuo_smtp
    passwordeval gpg –no-tty -q -d ~/.msmtp-server.gpg
    account default : serverxyz

  6. Per aggiungere, rimuovere e simulare un disco rotto nel raid

    Simulare la rottura di un disco
    mdadm -f /dev/md0 /dev/sdb2
    Aggiungere un disco
    mdadm /dev/md0 -a /dev/sdb2
    Rimozione di un disco
    mdadm /dev/md0 -r /dev/sdb2

2 Replies to “Installazione Ubuntu Server in modalità UEFI con RAID Software”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *