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
-
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 . -
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. -
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. -
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 1francesco@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
-
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 ~/.msmtprcA 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-keyconfermo 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.itComment: 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 NOInfine 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 -
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