Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "iononsbalgiomai/SoftwareRaid0"
Differenze tra le versioni 17 e 112 (in 95 versioni)
Versione 17 del 01/08/2021 15.29.35
Dimensione: 9987
Commento:
Versione 112 del 13/11/2021 23.18.03
Dimensione: 19473
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 3: Linea 3:
<<Indice(depth=1)>>
<<Informazioni(rilasci="20.04")>>
<<Include(NuoviStrumentiWiki/PaginaDiProva)>>
<<Indice(depth=2)>>
<<Informazioni(rilasci="18.04 20.04 21.04")>>
Linea 8: Linea 9:
Questa guida illustra come creare e gestire array software [[https://it.wikipedia.org/wiki/RAID|RAID]] adatti all'installazione di '''Ubuntu''' in sistemi [[https://wiki.ubuntu-it.org/AmministrazioneSistema/Uefi|UEFI]]. Questa guida illustra come creare e gestire array Linux Software [[https://it.wikipedia.org/wiki/RAID|RAID]] adatti all'installazione di '''Ubuntu''' in sistemi [[https://wiki.ubuntu-it.org/AmministrazioneSistema/Uefi|UEFI]].

Questo tipo di array non richiede hardware dedicato, pertanto non va confuso con gli array hardware RAID (realizzati grazie a controller dedicati) o con gli array fake RAID (creati mediante funzioni offerte dal firmware della scheda madre).
Linea 11: Linea 14:
 * Due partizioni EFI, una per disco, non RAID.
 * Un array RAID 0 per la partizione di sistema.
 * Un array RAID 1 per la partizione home.

La partizione EFI su '''sdb''' fungerà da backup della partizione EFI su '''sda'''. Per funzionare correttamente le partizioni EFI non possono far parte di un array RAID. Tuttavia verrà illustrato come mantenere le due partizioni sincronizzate in modo da ottenere una sorta di RAID 1.
 * Un array [[https://it.wikipedia.org/wiki/RAID#RAID_1:_replicazione|RAID 1]] come partizione EFI.
 * Un array [[https://it.wikipedia.org/wiki/RAID#RAID_0:_sezionamento_senza_ridondanza|RAID 0]] per il sistema.
 * Un array [[https://it.wikipedia.org/wiki/RAID#RAID_1:_replicazione|RAID 1]] per la Home.
Linea 19: Linea 20:
 0. Avviare una sessione live.

 0. Assicurarsi che il sistema sia connesso a Internet.

 0. Avviare '''GParted'''.
 0. Avviare una sessione live di '''Ubuntu''' in [[AmministrazioneSistema/Uefi#Avvio_della_Live|modalità UEFI]].

 0. [[AmbienteGrafico/AvviareProgrammi|Avviare]] '''GParted'''.
Linea 27: Linea 26:
 0. Nel menù '''''Dispositivi''''' scegliere '''''Crea tabella delle partizioni'''''.  0. Nel menù '''Dispositivi''' scegliere '''Crea tabella delle partizioni'''.<<BR>><<BR>>
 {{{#!wiki important
La creazione della tabella delle partizioni comporta l'eliminazione di tutti i dati eventualmente presenti sul disco.}}}
 {{{#!wiki note
Se il disco è già partizionato con una tabella di tipo '''gpt''' non è necessario crearne una nuova. In questo caso sarà possibile creare le partizioni nello spazio non allocato. Se questo non è sufficiente si dovrà procedere al ridimensionamento delle partizioni preesistenti. Per ridimensionare la partizione di Windows, attenersi alle istruzioni presenti nella [[Hardware/DispositiviPartizioni/RidimensionarePartizioneWindows|guida dedicata]].}}}
Linea 31: Linea 34:
 0. Creare una partizione '''fat32''' di 300 MiB e applicare le modifiche.

 0. Fare clic col tasto destro del mouse sulla partizione appena creata, scegliere '''''Gestione flag''''' e spuntare le voci '''esp''' e '''boot'''.

 0. Creare una partizione con file system '''pulito''' con una dimensione pari alla metà dello spazio che si intende dedicare alla partizione di sistema e applicare le modifiche.
 0. Creare una partizione di 300 MiB con file system '''fat32''' e applicare le modifiche.
 {{{#!wiki note
Se su uno dei due dischi è già presente una partizione EFI, basterà creare un'altra partizione '''fat32''' di pari dimensioni sull'altro disco. Quando le due partizioni verranno associate nell'array RAID 1 il contenuto della partizione preesistente verrà automaticamente replicato nell'altra partizione.}}}

 0. Fare clic col tasto destro del mouse sulla partizione appena creata, scegliere '''Gestione flag''' e spuntare le voci '''esp''' e '''boot'''.

 0. Creare una partizione con una dimensione pari alla metà dello spazio che si intende dedicare alla partizione di sistema con file system '''pulito''' e applicare le modifiche.
Linea 39: Linea 44:
 0. Creare un'altra partizione con file system '''pulito''' con una dimensione pari allo spazio che si intende dedicare alla partizione home e applicare le modifiche.

 0. Selezionare il disco '''/dev/sdb''' nel menù in alto a destra e ripetere i punti da 5 a 10.

 0. Chiudere '''GParted'''
 0. Creare una partizione con una dimensione pari allo spazio che si intende dedicare alla partizione Home con file system '''pulito''' e applicare le modifiche.

 0. Selezionare '''/dev/sdb''' nel menù in alto a destra e ripetere i punti da 4 a 9.
Linea 61: Linea 64:
 0. Installare il pacchetto ''[[https://it.wikipedia.org/wiki/Mdadm|mdadm]]'' digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo apt install -y mdadm}}}

 0. Creare l'array RAID 0 per la partizione di sistema digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sda2 /dev/sdb2}}}

 0. Creare l'array RAID 1 per la partizione home digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb3}}}
 Se richiesto, confermare le operazioni.

 0. Avviare '''GParted'''.

 0. Selezionare '''/dev/md0''' nel menù in alto a destra.

 0. Nel menù '''''Dispositivi''''' scegliere '''''Crea tabella delle partizioni'''''.
 0. Installare il pacchetto ''[[apt://mdadm|mdadm]]''.

 0. Creare l'array RAID 1 EFI digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mdadm -C /dev/md0 --level=1 -e 1.0 -n 2 /dev/sda1 /dev/sdb1}}}
 {{{#!wiki note
Utilizzando l'opzione `-e 1.0` le due partizioni che compongono l'array saranno accessibili singolarmente quando l'array non è attivo. Ciò significa che potranno essere lette dal firmware UEFI all'avvio del sistema e da eventuali altri sistemi operativi esattamente come accade per una normale partizione EFI. Inoltre il file system della prima partizione (in questo esempio '''/dev/sda1''') viene mantenuto inalterato e replicato sulla seconda partizione. Per ulteriori informazioni su questa ed altre opzioni, consultare il [[http://manpages.ubuntu.com/manpages/focal/en/man8/mdadm.8.html|manuale di mdadm]].}}}
 {{{#!wiki important
Se si opera su un sistema in cui è già presente una partizione EFI contenente i file di avvio di un altro sistema operativo, questa deve essere indicata come prima nella creazione dell'array. In caso contrario i file di avvio dell'altro sistema operativo verrebbero distrutti e questo potrebbe non essere più avviabile.}}}

 0. Digitare '''y''' e premere '''Invio''' per confermare.

 0. Creare l'array RAID 0 per il sistema digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mdadm -C /dev/md1 --level=0 -n 2 /dev/sda2 /dev/sdb2}}}

 0. Creare l'array RAID 1 per la Home digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mdadm -C /dev/md2 --level=1 -n 2 /dev/sda3 /dev/sdb3}}}
 
 0. Digitare '''y''' e premere '''Invio''' per confermare.

 0. Fare clic sul menù principale di '''GParted''' e scegliere '''Aggiorna dispositivi'''

 0. Selezionare '''/dev/md1''' nel menù in alto a destra.

 0. Nel menù '''Dispositivi''' scegliere '''Crea tabella delle partizioni'''.
Linea 79: Linea 91:
 0. Creare una partizione '''ext4''' che occupi tutto lo spazio disponibile e applicare le modifiche.

 0. Selezionare '''/dev/md1''' nel menù in alto a destra e ripetere i punti da 6 a 8.

 0. Chiudere '''GParted'''
 0. Creare una partizione che occupi tutto lo spazio disponibile con file system '''ext4''' e applicare le modifiche.

 0. Selezionare '''/dev/md2''' nel menù in alto a destra e ripetere i punti da 9 a 11.
Linea 87: Linea 97:
 * '''/dev/md0p1''' ext4  * '''/dev/md0''' fat32
Linea 91: Linea 101:
 * '''/dev/sda1''' fat32

 * '''/dev/sda2''' linux-raid (montata in '''/dev/md0''')
 * '''/dev/md2p1''' ext4

 * '''/dev/sda1''' linux-raid (montata in '''/dev/md0''')
Linea 97: Linea 107:
 * '''/dev/sdb1''' fat32

 * '''/dev/sdb2''' linux-raid (montata in '''/dev/md0''')
 * '''/dev/sda2''' linux-raid (montata in '''/dev/md2''')

 * '''/dev/sdb1''' linux-raid (montata in '''/dev/md0''')
Linea 103: Linea 113:
 * '''/dev/sdb2''' linux-raid (montata in '''/dev/md2''')
Linea 105: Linea 117:
 0. Avviare l'[[Installazione/InstallareUbuntu#Localit.2BAOA-|installazione di Ubuntu]] digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo ubiquiy -b}}}

 0. Nella schermata '''Tipo d'installazione''' scegliere '''Altro'''.
 0. Avviare l'[[Installazione/InstallareUbuntu#Scelta_della_lingua|installazione di Ubuntu]] digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo ubiquity -b}}}
 {{{#!wiki note
L'opzione `-b` specifica che il boot loader non verrà installato automaticamente durante l'installazione di '''Ubuntu'''. Nel [[#boot_loader|paragrafo successivo]] verrà spigato come installarlo manualmente.
}}}

 0. Nella schermata '''[[Installazione/InstallareUbuntu#Tipo_di_installazione|Tipo d'installazione]]''' scegliere '''[[Installazione/InstallareUbuntu#manu|Altro]]'''.
Linea 112: Linea 126:
 '''/dev/md0p1'''
  * Usare come: File System ext4 con journaling
 '''/dev/md0'''
  * Usare come: '''Partizione di sistema EFI'''
 <<BR>>
 '''/dev/md1
p1'''
  * Usare come: '''File System ext4 con journaling'''
Linea 115: Linea 132:
  * Punto di mount: /
 <<BR>>
 '''/dev/md1p1'''
  * Usare come: File System ext4 con journaling
  * Punto di mount: /home
  * Punto di mount: '''/'''
 <<BR>>
 '''/dev/md2p1'''
  * Usare come: '''File System ext4 con journaling'''
  * Punto di mount: '''/home'''
Linea 122: Linea 139:
  * Usare come: Partizione EFI   * Usare come: '''Partizione di sistema EFI'''
Linea 125: Linea 142:
  * Usare come: Partizione EFI   * Usare come: '''Partizione di sistema EFI'''
Linea 132: Linea 149:
= Installazione del bootloader =

 0. Montare il sistema appena installato e la partizione EFI principale digitando i seguenti comandi nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mount /dev/md0p1 /mnt
sudo mount /dev/sda1 /mnt/boot/efi
for i in dev dev/pts proc sys etc/resolv.conf; do sudo mount --bind /$i /mnt/$i; done}}}

 0. Eseguire il chroot digitando il seguente comando:{{{
<<Anchor(boot_loader)>>
= Installazione del boot loader =

 0. Montare il sistema appena installato digitando i seguenti comandi nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mount /dev/md1p1 /mnt
sudo mount /dev/md0 /mnt/boot/efi
for i in dev dev/pts proc sys sys/firmware etc/resolv.conf; do sudo mount --bind /$i /mnt/$i; done}}}

 0. Eseguire il '''chroot''' digitando il seguente comando:{{{
Linea 151: Linea 169:
 0. Installare e configurare '''Grub''' digitando i seguenti comandi:{{{
grub-install
update-grub}}}

 0. Montare la partizione EFI di backup digitando il seguente comando:{{{
mount /dev/sdb1 /mnt}}}

 0. Copiare il contenuto della partizione EFI principale nella partizione di backup digitando il seguente comando:{{{
rsync -a /boot/efi/ /mnt}}}

 0. Creare una voce di avvio per la partizione di backup digitando il seguente comando:

  * Se Secure Boot non è attivo:{{{
efibootmgr -c -g -d /dev/sdb -p 1 -L "ubuntu (efi2)" -l '\EFI\Ubuntu\grubx64.efi'}}}

  * Se Secure Boot è attivo:{{{
efibootmgr -c -g -d /dev/sdb -p 1 -L "ubuntu (efi2)" -l '\EFI\Ubuntu\shimx64.efi'}}}

 0. Ripetere l'installazione di '''Grub''' per reimpostare la voce di avvio che fa riferimento alla partizione EFI principale come prima voce di avvio. A tal fine digitare il seguente comando:{{{
 0. Aggiornare la configurazione di '''Grub''' e installarlo nell'array EFI digitando i seguenti comandi:{{{
update-grub
Linea 171: Linea 172:
 {{{#!wiki note
Verrà restituito un errore dovuto al fatto che nel firmware UEFI non può essere inserita una voce di avvio che punta all'array, perché il firmware UEFI ha bisogno che si faccia riferimento a una partizione standard. Questo errore non compromette la buona riuscita dell'installazione di '''Grub''' nell'array. Di seguito viene spiegato come creare manualmente due voci di avvio che fanno riferimento alle due partizioni che compongono l'array.}}}

 0. Creare una voce di avvio per ciascuna delle due partizioni EFI che formano l'array:

  * Se Secure Boot è attivo digitare i seguenti comandi:{{{
efibootmgr -c -g -d /dev/sdb -p 1 -L 'ubuntu (sdb)' -l '\EFI\ubuntu\shimx64.efi'
efibootmgr -c -g -d /dev/sda -p 1 -L 'ubuntu (sda)' -l '\EFI\ubuntu\shimx64.efi'}}}

  * Se Secure Boot non è attivo digitare i seguenti comandi:{{{
efibootmgr -c -g -d /dev/sdb -p 1 -L 'ubuntu (sdb)' -l '\EFI\ubuntu\grubx64.efi'
efibootmgr -c -g -d /dev/sda -p 1 -L 'ubuntu (sda)' -l '\EFI\ubuntu\grubx64.efi'}}}
Linea 177: Linea 190:
= Mantenere sincronizzate le partizioni EFI =

Di seguito viene spiegato come creare uno script che sincronizza la partizione efi principale con la partizione di backup. Viene poi spiegato come creare un servizio che esegue lo script prima di ogni riavvio o spegnimento.

== Creazione dello script ==

 0. Aprire un editor di testo con privilegi di amministrazione il file `/usr/bin/efisync`.

 0. Cancellare l'eventuale contenuto ed inserire le seguenti righe:{{{
#!/bin/bash

mountdir='/mnt/efibak'
efibak='/dev/sdb1'

## Verifica che lo script venga eseguito con privilegi elevati
if [ "$(id -u)" != '0' ]; then
  echo 'Eseguire con privilegi elevati'
  exit
= Risoluzione dei problemi =

== Gli array non sono visibili da altri altri sistemi operativi ==

La gestione degli array Linux software RAID dipende dal programma '''mdadm'''. Questa utility è disponibile solo per sistemi Linux, pertanto sistemi operativi differenti non possono accedervi, se non mediante software di recupero dati o altri tool di terze parti.

Per rendere visibili gli array ad un sistema Linux (anche in live) attenersi alla seguente procedura:

 0. Avviare il sistema da cui si vuole accedere agli array.

 0. Installare il pacchetto ''[[apt://mdadm|mdadm]]''.

 0. Abilitare gli array digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mdadm -A -s}}}

== Nel menù di avvio di Grub non compare Windows ==

Per rilevare altri sistemi operativi il comando `update-grub` si serve di '''os-prober''', il quale fa una ricerca nelle altre partizioni del sistema.

Il boot loader di Windows risiede nella partizione EFI, ma se questa fa parte di un array Linux software RAID (come spiegato in questa guida) non è possibile accedervi mentre l'array è attivo. Inoltre '''os-prober''' non cerca il boot loader di Windows all'interno di array Linux software RAID ma solo in partizioni EFI standard.

Per risolvere questo problema è quindi necessario smontare e disattivare l'array EFI prima che `update-grub` invochi '''os-prober'''. In seguito è necessario riattivare l'array EFI e rimontarlo.

L'operazione può essere automatizzata apportando una modifica al file `/etc/grub.d/30_os-prober`, come spiegato di seguito:

 0. Creare una copia di backup del file `/etc/grub.d/30_os-prober` digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo cp /etc/grub.d/30_os-prober /etc/grub.d/.30_os-prober.bak}}}
 {{{#!wiki note
In caso di problemi sarà possibile ripristinare la copia di backup digitando il comando `sudo mv /etc/grub.d/.30_os-prober.bak /etc/grub.d/30_os-prober`}}}

 0. Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]] il file `/etc/grub.d/30_os-prober`.

 0. Sostituire la seguente riga:{{{
OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"}}}
 con{{{
md=false
esp="$(findmnt -nosource /boot/efi)"
if [[ "$esp" == '/dev/md'* ]]; then
  md=true
  umount '/boot/efi'
  mdadm -S $esp
Linea 197: Linea 233:
## Smonta la partizione di backup, se già montata
if [ -n "$(df | grep "$efibak")" ]; then
  umount "$efibak"
fi

## Se la directory di montaggio non esiste la crea
if [ ! -d "$mountdir" ]; then
  mkdir "$mountdir"
fi

## Monta la partizione di backup e la sincronizza con la partizione principale
mount "$efibak" "$mountdir"
rsync -a --del --force '/boot/efi/' "$mountdir"

## Smonta la partizione di backuo ed elimina la directory di montaggio
umount "$efibak"
rm -r "$mountdir"}}}
OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"

if $md; then
  mdadm -A $esp
  sleep 1
  mount '/boot/efi'
fi}}}
Linea 217: Linea 243:
 0. Assegnare il permesso di esecuzione allo script appena creato digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo chmod +x /usr/bin/efisync}}}
 0. Aggiornare la configurazione di '''Grub''' digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo update-grub}}}
 Verrà rilevata una voce ''Windows Boot Manager'' per ciascuna partizione facente parte dell'array EFI.

== Non è possibile montare singolarmente le partizioni che fanno parte di un array ==

Questa operazione è possibile solo per gli array RAID 1 creati utilizzando l'opzione `-e 1.0` oppure `-e 0.9`. Esclusivamente per questo tipo di array, procedere come segue:

 0. Se l'array è montato, smontarlo digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo umount <punto di montaggio>}}}
 Sostituire `<punto di montaggio>` con il percorso in cui è montato l'array, ad esempio `/boot/efi`.

 0. Se l'array è attivo, disattivarlo digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mdadm -S /dev/mdN}}}
 Sostituire `/dev/mdN` con l'array da disattivare, ad esempio `/dev/md0`.

 0. Montare la partizione desiderata digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mount -t <file system> /dev/sdXN /mnt}}}
 Sostituire `<file system>` con il file system della partizione, ad esempio `vfat`, e`/dev/sdXN` con la partizione che si intende montare, ad esempio `/dev/sda1`.

== Un disco ha smesso di funzionare ==

Gli array RAID 1 continuano a funzionare e mantengono l'integrità di tutti i dati anche con un solo disco funzionante. Al contrario basta che un solo disco smetta di funzionare perché un array RAID 0 smetta di funzionare, con conseguente perdita di tutti i dati. Ciò significa che in un sistema configurato come spiegato in questa guida i dati presenti in EFI e Home saranno completamente ripristinabili, in quanto residenti in array RAID 1. Il sistema operativo e i programmi invece dovranno essere reinstallati, perché residenti in un array RAID 0.
Linea 221: Linea 267:
In qualsiasi momento si potrà avviare manualmente la sincronizzazione della partizione EFI di backup con la principale digitando nel terminale il comando `efisync`.}}}

== Creazione del servizio ==

 0. Aprire un editor di testo con privilegi di amministrazione il file `/lib/systemd/system/efisync.service`.

 0. Cancellare l'eventuale contenuto ed inserire le seguenti righe:{{{
[Unit]
Description=Sincronizzazione della partizione efi con /dev/sdb1
DefaultDependencies=no
Before=halt.target reboot.target shutdown.target

[Service]
Type=oneshot
ExecStart=/usr/bin/efisync
TimeoutStartSec=0

[Install]
WantedBy=halt.target reboot.target shutdown.target}}}

 0. Salvare il file e chiudere l'editor.

 0. Creare un collegamento simbolico al servizio `efisync.service` nella cartella `/etc/systemd/system/` digitando il seguenti comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo ln -s /lib/systemd/system/efisync.service /etc/systemd/system/efisync.service}}}

 0. Ricaricare la configurazione di '''systemd''' digitando il seguenti comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
systemctl daemon-reload}}}

= Accedere agli array da sessione live =

 0. Assicurarsi che il sistema sia connesso a Internet.

 0. Installare il pacchetto ''[[https://it.wikipedia.org/wiki/Mdadm|mdadm]]'' digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo apt install -y mdadm}}}

 0. Abilitare gli array software digitando il seguenti comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mdadm --assemble --scan}}}

 {{{#!wiki note
Questa procedura è valida anche per accedere agli array software da eventuali altri sistemi '''Linux''' installati nel pc.}}}
Se il disco è ancora correttamente riconosciuto dal computer, quindi non ha smesso di funzionare, ma il suo contenuto non è accessibile, potrebbe essere possibile ripristinarne le partizioni e i dati. Per maggiori informazioni consultare la [[AmministrazioneSistema/RecuperoDati|guida dedicata]].}}}
A titolo di esempio, di seguito viene spiegato come ripristinare il sistema nel caso in cui il disco '''sdb''' smetta di funzionare:

 0. Spegnere il computer e sostituire il disco danneggiato con un nuovo disco.

 0. Avviare una sessione live di '''Ubuntu''' in [[AmministrazioneSistema/Uefi#Avvio_della_Live|modalità UEFI]].

 0. Avviare '''GParted'''.

 0. Selezionare '''/dev/sdb''' nel menù in alto a destra.

 0. Seguire i punti da 4 a 9 del paragrafo [[#Preparazione_dei_dischi|Preparazione dei dischi]].

 0. Installare il pacchetto [[apt://mdadm|mdadm]].

 0. Abilitare gli array EFI e Home digitando i seguenti comandi nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mdadm -A /dev/md0
sudo mdadm -A /dev/md2}}}

 0. Aggiungere le nuove partizioni agli array EFI e Home digitando i seguenti comandi nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mdadm /dev/md0 -a /dev/sdb1
sudo mdadm /dev/md2 -a /dev/sdb3}}}

 0. Ricreare l'array di sistema digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mdadm -C /dev/md1 --level=0 -n 2 /dev/sda2 /dev/sdb2}}}

 0. Digitare '''y''' e premere '''Invio''' per confermare.

 0. Reintallare '''Ubuntu''' come spiegato nel paragrafo [[#Installazione_di_Ubuntu|installazione di Ubuntu]]

 0. Reinstallare il boot loader come spiegato nel paragrafo [[#Installazione_del_boot_loader|Installazione del bootloader]], fino al punto 6.

 0. Verificare quali sono le voci di avvio che fanno riferimento alla precedente installazione digitando il seguente comando:{{{
efibootmgr | grep 'ubuntu'}}}

 0. Prendere nota dei numeri delle voci di avvio, ad esempio `0000` e `0001`.

 0. Rimuovere le voci di avvio della precedente installazione digitando il seguente comando per ciascuna di esse:{{{
efibootmgr -b <numero della voce di avvio> -B}}}
 Sostituire `<numero della voce di avvio>` uno dei numeri annotati al punto 14.

 0. Proseguire dal punto 7 del paragrafo [[#Installazione_del_boot_loader|Installazione del bootloader]].

== Ripristinare Grub ==

Di seguito viene spiegato come ripristinare '''Gurb''' in un sistema installato come spiegato in questa guida, ovvero così configurato:
 * Partizione EFI → `/dev/md0` (array formata da `/dev/sda1` e `/dev/sdb1`)
 * Partizione di sistema → `/dev/md1p1`

Attenersi alla seguente procedura:

 0. Avviare una sessione live di '''Ubuntu''' in [[AmministrazioneSistema/Uefi#Avvio_della_Live|modalità UEFI]].

 0. Abilitare gli array RAID come spiegato nel paragrafo [[#Gli_array_non_sono_visibili_da_altri_altri_sistemi_operativi|paragrafo dedicato]].

 0. Montare il sistema digitando i seguenti comandi nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mount /dev/md1p1 /mnt
sudo mount /dev/md0 /mnt/boot/efi
for i in dev dev/pts proc sys sys/firmware; do sudo mount --bind /$i /mnt/$i; done}}}

 0. Eseguire il '''chroot''' digitando il seguente comando:{{{
sudo chroot /mnt}}}

 0. Aggiornare la configurazione di '''Grub''' e installarlo nell'array EFI digitando i seguenti comandi:{{{
update-grub
grub-install}}}
 {{{#!wiki note
Verrà restituito un errore dovuto al fatto che nel firmware UEFI non può essere inserita una voce di avvio che punta all'array, perché il firmware UEFI ha bisogno che si faccia riferimento a una partizione standard. Questo errore non compromette la buona riuscita dell'installazione di '''Grub''' nell'array. Di seguito viene spiegato come rimuovere e ricreare manualmente due voci di avvio che fanno riferimento alle due partizioni che compongono l'array.}}}

 0. Verificare quali sono le voci di avvio di '''Ubuntu''' digitando il seguente comando:{{{
efibootmgr -v | grep 'ubuntu'}}}

 0. Prendere nota dei numeri delle voci di avvio, ad esempio `0000` e `0001`.

 0. Rimuovere le voci di avvio di '''Ubuntu''' digitando il seguente comando per ciascuna di esse:{{{
efibootmgr -b <numero della voce di avvio> -B}}}
 Sostituire `<numero della voce di avvio>` con uno dei numeri annotati al punto 7.


 0. Creare una voce di avvio per ciascuna delle due partizioni EFI che formano l'array:

  * Se Secure Boot è attivo digitare i seguenti comandi:{{{
efibootmgr -c -g -d /dev/sdb -p 1 -L 'ubuntu (sdb)' -l '\EFI\ubuntu\shimx64.efi'
efibootmgr -c -g -d /dev/sda -p 1 -L 'ubuntu (sda)' -l '\EFI\ubuntu\shimx64.efi'}}}

  * Se Secure Boot non è attivo digitare i seguenti comandi:{{{
efibootmgr -c -g -d /dev/sdb -p 1 -L 'ubuntu (sdb)' -l '\EFI\ubuntu\grubx64.efi'
efibootmgr -c -g -d /dev/sda -p 1 -L 'ubuntu (sda)' -l '\EFI\ubuntu\grubx64.efi'}}}

 0. Uscire dal '''chroot''' digitando il seguente comando:{{{
exit}}}

 0. Riavviare il sistema.


Attenzione! Questa è una Pagina di prova. Le informazioni riportate potrebbero essere incomplete, errate e potenzialmente pericolose. Per contribuire alla realizzazione di questa pagina consultare la discussione di riferimento.

Guida verificata con Ubuntu: 20.04

Introduzione

Questa guida illustra come creare e gestire array Linux Software RAID adatti all'installazione di Ubuntu in sistemi UEFI.

Questo tipo di array non richiede hardware dedicato, pertanto non va confuso con gli array hardware RAID (realizzati grazie a controller dedicati) o con gli array fake RAID (creati mediante funzioni offerte dal firmware della scheda madre).

A titolo di esempio, verrà spiegato come installare Ubuntu in un sistema composto da due dischi non formattati, sda ed sdb, sui quali verrà creata una configurazione RAID così composta:

  • Un array RAID 1 come partizione EFI.

  • Un array RAID 0 per il sistema.

  • Un array RAID 1 per la Home.

Preparazione dei dischi

  1. Avviare una sessione live di Ubuntu in modalità UEFI.

  2. Avviare GParted.

  3. Selezionare /dev/sda nel menù in alto a destra.

  4. Nel menù Dispositivi scegliere Crea tabella delle partizioni.

    La creazione della tabella delle partizioni comporta l'eliminazione di tutti i dati eventualmente presenti sul disco.

    Se il disco è già partizionato con una tabella di tipo gpt non è necessario crearne una nuova. In questo caso sarà possibile creare le partizioni nello spazio non allocato. Se questo non è sufficiente si dovrà procedere al ridimensionamento delle partizioni preesistenti. Per ridimensionare la partizione di Windows, attenersi alle istruzioni presenti nella guida dedicata.

  5. Selezionare il tipo di tabella gpt e fare clic su Applica.

  6. Creare una partizione di 300 MiB con file system fat32 e applicare le modifiche.

    Se su uno dei due dischi è già presente una partizione EFI, basterà creare un'altra partizione fat32 di pari dimensioni sull'altro disco. Quando le due partizioni verranno associate nell'array RAID 1 il contenuto della partizione preesistente verrà automaticamente replicato nell'altra partizione.

  7. Fare clic col tasto destro del mouse sulla partizione appena creata, scegliere Gestione flag e spuntare le voci esp e boot.

  8. Creare una partizione con una dimensione pari alla metà dello spazio che si intende dedicare alla partizione di sistema con file system pulito e applicare le modifiche.

    È consigliabile una dimensione minima di 15 GiB, in modo da ottenere poi un array RAID 0 di 30 GiB per la partizione di sistema.

  9. Creare una partizione con una dimensione pari allo spazio che si intende dedicare alla partizione Home con file system pulito e applicare le modifiche.

  10. Selezionare /dev/sdb nel menù in alto a destra e ripetere i punti da 4 a 9.

Al termine di questa procedura saranno quindi presenti le seguenti partizioni:

  • /dev/sda1 fat32

  • /dev/sda2 sconosciuto

  • /dev/sda3 sconosciuto

  • /dev/sdb1 fat32

  • /dev/sdb2 sconosciuto

  • /dev/sdb3 sconosciuto

Creazione degli array

  1. Installare il pacchetto mdadm.

  2. Creare l'array RAID 1 EFI digitando il seguente comando nel terminale:

    sudo mdadm -C /dev/md0 --level=1 -e 1.0 -n 2 /dev/sda1 /dev/sdb1

    Utilizzando l'opzione -e 1.0 le due partizioni che compongono l'array saranno accessibili singolarmente quando l'array non è attivo. Ciò significa che potranno essere lette dal firmware UEFI all'avvio del sistema e da eventuali altri sistemi operativi esattamente come accade per una normale partizione EFI. Inoltre il file system della prima partizione (in questo esempio /dev/sda1) viene mantenuto inalterato e replicato sulla seconda partizione. Per ulteriori informazioni su questa ed altre opzioni, consultare il manuale di mdadm.

    Se si opera su un sistema in cui è già presente una partizione EFI contenente i file di avvio di un altro sistema operativo, questa deve essere indicata come prima nella creazione dell'array. In caso contrario i file di avvio dell'altro sistema operativo verrebbero distrutti e questo potrebbe non essere più avviabile.

  3. Digitare y e premere Invio per confermare.

  4. Creare l'array RAID 0 per il sistema digitando il seguente comando nel terminale:

    sudo mdadm -C /dev/md1 --level=0 -n 2 /dev/sda2 /dev/sdb2
  5. Creare l'array RAID 1 per la Home digitando il seguente comando nel terminale:

    sudo mdadm -C /dev/md2 --level=1 -n 2 /dev/sda3 /dev/sdb3
  6. Digitare y e premere Invio per confermare.

  7. Fare clic sul menù principale di GParted e scegliere Aggiorna dispositivi

  8. Selezionare /dev/md1 nel menù in alto a destra.

  9. Nel menù Dispositivi scegliere Crea tabella delle partizioni.

  10. Selezionare il tipo di tabella gpt e fare clic su Applica.

  11. Creare una partizione che occupi tutto lo spazio disponibile con file system ext4 e applicare le modifiche.

  12. Selezionare /dev/md2 nel menù in alto a destra e ripetere i punti da 9 a 11.

Al termine di questa procedura saranno quindi presenti le seguenti partizioni:

  • /dev/md0 fat32

  • /dev/md1p1 ext4

  • /dev/md2p1 ext4

  • /dev/sda1 linux-raid (montata in /dev/md0)

  • /dev/sda2 linux-raid (montata in /dev/md1)

  • /dev/sda2 linux-raid (montata in /dev/md2)

  • /dev/sdb1 linux-raid (montata in /dev/md0)

  • /dev/sdb2 linux-raid (montata in /dev/md1)

  • /dev/sdb2 linux-raid (montata in /dev/md2)

Installazione di Ubuntu

  1. Avviare l'installazione di Ubuntu digitando il seguente comando nel terminale:

    sudo ubiquity -b

    L'opzione -b specifica che il boot loader non verrà installato automaticamente durante l'installazione di Ubuntu. Nel paragrafo successivo verrà spigato come installarlo manualmente.

  2. Nella schermata Tipo d'installazione scegliere Altro.

  3. Impostare le partizioni come segue:

    /dev/md0

    • Usare come: Partizione di sistema EFI


    /dev/md1p1

    • Usare come: File System ext4 con journaling

    • ✔️ Formattare la partizione
    • Punto di mount: /


    /dev/md2p1

    • Usare come: File System ext4 con journaling

    • Punto di mount: /home


    /dev/sda1

    • Usare come: Partizione di sistema EFI


    /dev/sdb1

    • Usare come: Partizione di sistema EFI


  4. Procedere con l'installazione di Ubuntu.

  5. Al termine fare clic su Continua a provare.

Installazione del boot loader

  1. Montare il sistema appena installato digitando i seguenti comandi nel terminale:

    sudo mount /dev/md1p1 /mnt
    sudo mount /dev/md0 /mnt/boot/efi
    for i in dev dev/pts proc sys sys/firmware etc/resolv.conf; do sudo mount --bind /$i /mnt/$i; done
  2. Eseguire il chroot digitando il seguente comando:

    sudo chroot /mnt
  3. Installare il pacchetto grub-efi-amd64 digitando il seguente comando:

    apt install -y grub-efi-amd64
  4. Se Secure Boot è attivo, installare il pacchetto shim-signed digitando il seguente comando:

    apt install -y shim-signed
  5. Installare il pacchetto mdadm digitando il seguente comando:

    apt install -y mdadm
  6. Aggiornare la configurazione di Grub e installarlo nell'array EFI digitando i seguenti comandi:

    update-grub
    grub-install

    Verrà restituito un errore dovuto al fatto che nel firmware UEFI non può essere inserita una voce di avvio che punta all'array, perché il firmware UEFI ha bisogno che si faccia riferimento a una partizione standard. Questo errore non compromette la buona riuscita dell'installazione di Grub nell'array. Di seguito viene spiegato come creare manualmente due voci di avvio che fanno riferimento alle due partizioni che compongono l'array.

  7. Creare una voce di avvio per ciascuna delle due partizioni EFI che formano l'array:
    • Se Secure Boot è attivo digitare i seguenti comandi:

      efibootmgr -c -g -d /dev/sdb -p 1 -L 'ubuntu (sdb)' -l '\EFI\ubuntu\shimx64.efi'
      efibootmgr -c -g -d /dev/sda -p 1 -L 'ubuntu (sda)' -l '\EFI\ubuntu\shimx64.efi'
    • Se Secure Boot non è attivo digitare i seguenti comandi:

      efibootmgr -c -g -d /dev/sdb -p 1 -L 'ubuntu (sdb)' -l '\EFI\ubuntu\grubx64.efi'
      efibootmgr -c -g -d /dev/sda -p 1 -L 'ubuntu (sda)' -l '\EFI\ubuntu\grubx64.efi'
  8. Uscire dal chroot digitando il seguente comando:

    exit
  9. Riavviare il sistema.

Risoluzione dei problemi

Gli array non sono visibili da altri altri sistemi operativi

La gestione degli array Linux software RAID dipende dal programma mdadm. Questa utility è disponibile solo per sistemi Linux, pertanto sistemi operativi differenti non possono accedervi, se non mediante software di recupero dati o altri tool di terze parti.

Per rendere visibili gli array ad un sistema Linux (anche in live) attenersi alla seguente procedura:

  1. Avviare il sistema da cui si vuole accedere agli array.
  2. Installare il pacchetto mdadm.

  3. Abilitare gli array digitando il seguente comando nel terminale:

    sudo mdadm -A -s

Nel menù di avvio di Grub non compare Windows

Per rilevare altri sistemi operativi il comando update-grub si serve di os-prober, il quale fa una ricerca nelle altre partizioni del sistema.

Il boot loader di Windows risiede nella partizione EFI, ma se questa fa parte di un array Linux software RAID (come spiegato in questa guida) non è possibile accedervi mentre l'array è attivo. Inoltre os-prober non cerca il boot loader di Windows all'interno di array Linux software RAID ma solo in partizioni EFI standard.

Per risolvere questo problema è quindi necessario smontare e disattivare l'array EFI prima che update-grub invochi os-prober. In seguito è necessario riattivare l'array EFI e rimontarlo.

L'operazione può essere automatizzata apportando una modifica al file /etc/grub.d/30_os-prober, come spiegato di seguito:

  1. Creare una copia di backup del file /etc/grub.d/30_os-prober digitando il seguente comando nel terminale:

    sudo cp /etc/grub.d/30_os-prober /etc/grub.d/.30_os-prober.bak

    In caso di problemi sarà possibile ripristinare la copia di backup digitando il comando sudo mv /etc/grub.d/.30_os-prober.bak /etc/grub.d/30_os-prober

  2. Aprire con un editor di testo e con i privilegi di amministrazione il file /etc/grub.d/30_os-prober.

  3. Sostituire la seguente riga:

    OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"

    con

    md=false
    esp="$(findmnt -nosource /boot/efi)"
    if [[ "$esp" == '/dev/md'* ]]; then
      md=true
      umount '/boot/efi'
      mdadm -S $esp
    fi
    
    OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"
    
    if $md; then
      mdadm -A $esp
      sleep 1
      mount '/boot/efi'
    fi
  4. Salvare il file e chiudere l'editor.
  5. Aggiornare la configurazione di Grub digitando il seguente comando nel terminale:

    sudo update-grub

    Verrà rilevata una voce Windows Boot Manager per ciascuna partizione facente parte dell'array EFI.

Non è possibile montare singolarmente le partizioni che fanno parte di un array

Questa operazione è possibile solo per gli array RAID 1 creati utilizzando l'opzione -e 1.0 oppure -e 0.9. Esclusivamente per questo tipo di array, procedere come segue:

  1. Se l'array è montato, smontarlo digitando il seguente comando nel terminale:

    sudo umount <punto di montaggio>

    Sostituire <punto di montaggio> con il percorso in cui è montato l'array, ad esempio /boot/efi.

  2. Se l'array è attivo, disattivarlo digitando il seguente comando nel terminale:

    sudo mdadm -S /dev/mdN

    Sostituire /dev/mdN con l'array da disattivare, ad esempio /dev/md0.

  3. Montare la partizione desiderata digitando il seguente comando nel terminale:

    sudo mount -t <file system> /dev/sdXN /mnt

    Sostituire <file system> con il file system della partizione, ad esempio vfat, e/dev/sdXN con la partizione che si intende montare, ad esempio /dev/sda1.

Un disco ha smesso di funzionare

Gli array RAID 1 continuano a funzionare e mantengono l'integrità di tutti i dati anche con un solo disco funzionante. Al contrario basta che un solo disco smetta di funzionare perché un array RAID 0 smetta di funzionare, con conseguente perdita di tutti i dati. Ciò significa che in un sistema configurato come spiegato in questa guida i dati presenti in EFI e Home saranno completamente ripristinabili, in quanto residenti in array RAID 1. Il sistema operativo e i programmi invece dovranno essere reinstallati, perché residenti in un array RAID 0.

Se il disco è ancora correttamente riconosciuto dal computer, quindi non ha smesso di funzionare, ma il suo contenuto non è accessibile, potrebbe essere possibile ripristinarne le partizioni e i dati. Per maggiori informazioni consultare la guida dedicata.

A titolo di esempio, di seguito viene spiegato come ripristinare il sistema nel caso in cui il disco sdb smetta di funzionare:

  1. Spegnere il computer e sostituire il disco danneggiato con un nuovo disco.
  2. Avviare una sessione live di Ubuntu in modalità UEFI.

  3. Avviare GParted.

  4. Selezionare /dev/sdb nel menù in alto a destra.

  5. Seguire i punti da 4 a 9 del paragrafo Preparazione dei dischi.

  6. Installare il pacchetto mdadm.

  7. Abilitare gli array EFI e Home digitando i seguenti comandi nel terminale:

    sudo mdadm -A /dev/md0
    sudo mdadm -A /dev/md2
  8. Aggiungere le nuove partizioni agli array EFI e Home digitando i seguenti comandi nel terminale:

    sudo mdadm /dev/md0 -a /dev/sdb1
    sudo mdadm /dev/md2 -a /dev/sdb3
  9. Ricreare l'array di sistema digitando il seguente comando nel terminale:

    sudo mdadm -C /dev/md1 --level=0 -n 2 /dev/sda2 /dev/sdb2
  10. Digitare y e premere Invio per confermare.

  11. Reintallare Ubuntu come spiegato nel paragrafo installazione di Ubuntu

  12. Reinstallare il boot loader come spiegato nel paragrafo Installazione del bootloader, fino al punto 6.

  13. Verificare quali sono le voci di avvio che fanno riferimento alla precedente installazione digitando il seguente comando:

    efibootmgr | grep 'ubuntu'
  14. Prendere nota dei numeri delle voci di avvio, ad esempio 0000 e 0001.

  15. Rimuovere le voci di avvio della precedente installazione digitando il seguente comando per ciascuna di esse:

    efibootmgr -b <numero della voce di avvio> -B

    Sostituire <numero della voce di avvio> uno dei numeri annotati al punto 14.

  16. Proseguire dal punto 7 del paragrafo Installazione del bootloader.

Ripristinare Grub

Di seguito viene spiegato come ripristinare Gurb in un sistema installato come spiegato in questa guida, ovvero così configurato:

  • Partizione EFI → /dev/md0 (array formata da /dev/sda1 e /dev/sdb1)

  • Partizione di sistema → /dev/md1p1

Attenersi alla seguente procedura:

  1. Avviare una sessione live di Ubuntu in modalità UEFI.

  2. Abilitare gli array RAID come spiegato nel paragrafo paragrafo dedicato.

  3. Montare il sistema digitando i seguenti comandi nel terminale:

    sudo mount /dev/md1p1 /mnt
    sudo mount /dev/md0 /mnt/boot/efi
    for i in dev dev/pts proc sys sys/firmware; do sudo mount --bind /$i /mnt/$i; done
  4. Eseguire il chroot digitando il seguente comando:

    sudo chroot /mnt
  5. Aggiornare la configurazione di Grub e installarlo nell'array EFI digitando i seguenti comandi:

    update-grub
    grub-install

    Verrà restituito un errore dovuto al fatto che nel firmware UEFI non può essere inserita una voce di avvio che punta all'array, perché il firmware UEFI ha bisogno che si faccia riferimento a una partizione standard. Questo errore non compromette la buona riuscita dell'installazione di Grub nell'array. Di seguito viene spiegato come rimuovere e ricreare manualmente due voci di avvio che fanno riferimento alle due partizioni che compongono l'array.

  6. Verificare quali sono le voci di avvio di Ubuntu digitando il seguente comando:

    efibootmgr -v | grep 'ubuntu'
  7. Prendere nota dei numeri delle voci di avvio, ad esempio 0000 e 0001.

  8. Rimuovere le voci di avvio di Ubuntu digitando il seguente comando per ciascuna di esse:

    efibootmgr -b <numero della voce di avvio> -B

    Sostituire <numero della voce di avvio> con uno dei numeri annotati al punto 7.

  9. Creare una voce di avvio per ciascuna delle due partizioni EFI che formano l'array:
    • Se Secure Boot è attivo digitare i seguenti comandi:

      efibootmgr -c -g -d /dev/sdb -p 1 -L 'ubuntu (sdb)' -l '\EFI\ubuntu\shimx64.efi'
      efibootmgr -c -g -d /dev/sda -p 1 -L 'ubuntu (sda)' -l '\EFI\ubuntu\shimx64.efi'
    • Se Secure Boot non è attivo digitare i seguenti comandi:

      efibootmgr -c -g -d /dev/sdb -p 1 -L 'ubuntu (sdb)' -l '\EFI\ubuntu\grubx64.efi'
      efibootmgr -c -g -d /dev/sda -p 1 -L 'ubuntu (sda)' -l '\EFI\ubuntu\grubx64.efi'
  10. Uscire dal chroot digitando il seguente comando:

    exit
  11. Riavviare il sistema.