19.4. RAID1 - Mirroring
Indietro | Capitolo 19. GEOM: Framework modulare per la trasformazione del disco | Avanti

## 19.4. RAID1 - Mirroring

Il mirroring è una tecnologia utilizzata da molte aziende e utenti casalinghi per il salvataggio dei dati senza interruzioni. La presenza di un "mirror" significa semplicemente che il disco B replica il disco A;oppure che i dischi C e D replicano i dischi A e B. Indipendentemente dalla configurazione del disco, l'aspetto importante è che le informazioni presenti su un disco o una partizione sono letteralmente "replicati". Successivamente queste informazioni possono essere facilmente ripristinate,salvate senza che si verifichino disservizi o interruzioni nel loro accesso e, addirittura, conservate fisicamente in cassaforte.

Per cominciare assicurati che il sistema disponga di due dischi di identica capacità. Questo esercizio si riferisce a dischi SCSIad accesso diretto (da(4)),

Comincia installando FreeBSD sul primo disco creando solamente due partizioni. Una dovrebbe essere una partizione di swap, pari al doppio della RAM presente nel sistema e il resto dello spazio dedicato al filesystem di root (`/`). È possibile creare partizioni separate per gli altri mount points, aumentando parecchio la difficoltà di realizzazione del progetto; questo è dovuto alla necessità di alterare manualmente i settaggi di bsdlabel(8) e fdisk(8).

Riavvia e aspetta che il sistema sia completamente attivo. Non appena il boot è completato effettua il login come `root`.

Crea il device `/dev/mirror/gm` e fai un link dello stesso a `/dev/da1`:

`#` `gmirror label -vnb round-robin gm0 /dev/da1`

Il sistema dovrebbe rispondere con:

Metadata value stored on /dev/da1. Done.

Avvia GEOM,questa procedura caricherà nel kernel il modulo `/boot/kernel/geom_mirror.ko`

`#` `gmirror load`

### Nota:

Questo comando dovrebbe ora avere creato i nodi di device`gm0`,`gm0s1`, `gm0s1a` e `gm0s1c` nella directory `/dev/mirror`.

Crea una label generica e un codice di boot nel device `gm0` appena creato utilizzando il comando `fdisk`:

`#` `fdisk -vBI /dev/mirror/gm0`

Ora crea una label di informazioni generica con `bsdlabel`:

`#` `bsdlabel -wB /dev/mirror/gm0s1`

### Nota:

Se sono presenti più slices e partizioni, i flags dei due comandi precedenti richiederanno delle modifiche. Queste modifiche devono combaciare con la grandezza delle slices e delle partizioni dell'altro disco.

Utilizza l'utility newfs(8) per creare un filesystem di default sul nodo di device`gm0s1a`:

`#` `newfs -U /dev/mirror/gm0s1a`

Questo dovrebbe causare la visualizzazione di un bel pò di numeri e informazioni varie da parte del sistema. È corretto. Esamina bene lo schermo per vedere se ci sono messaggi di errore e monta il device in `/mnt`:

`#` `mount /dev/mirror/gm0s1a /mnt`

Ora sposta tutti i dati presenti sul tuo disco di boot nel nuovo filesystem. Questo esempio usa i comandi dump(8) e restore(8) comunque anche dd(1) dovrebbe funzionare nel contesto che stiamo trattando. Evita di utilizzare tar(1) dal momento che non copia il codice di boot. In caso contrario il fallimento è garantito.

`#` `dump -L -0 -f- / |(cd /mnt && restore -r -v -f-)`

Questo deve essere fatto per ciascun filesystem. Disponi semplicemente il filesystem appropriato nella posizione corretta quando digiti il suddetto comando.

Ora edita il file `/mnt/etc/fstab` "replicato" e rimuovi,o commenta (#) la riga relativa al file di swap. [8] Per utilizzare il nuovo disco cambia le altre informazioni di filesystem. Dai un' occhiata al seguente esempio:

# Device Mountpoint FStype Options Dump Pass# #/dev/da0s2b none swap sw 0 0 /dev/mirror/gm0s1a / ufs rw 1 1

Ora crea un file `boot.conf` in entrambe le partizioni di root; quella corrente e quella nuova. Questo file aiuterà il BIOS di sistema ad effettuare il boot dal drive corretto.

`#` `echo "1:da(1,a)/boot/loader" > /boot.config`
`#` `echo "1:da(1,a)/boot/loader" > /mnt/boot.config`

### Nota:

Lo abbiamo inserito in entrambe le partizioni di root per assicurarci un boot corretto. Se per qualche ragione il sistema non potesse leggere la nuova partizione di root, è disponibile una procedura di recupero.

Adesso aggiungi la seguente linea al nuovo file `/boot/loader.conf`:

`#` `echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf`

Questo indicherà a loader(8) come caricare il modulo `geom_mirror.ko` durante l'inizializzazione del sistema.

Riavvia il sistema:

`#` `shutdown -r now`

Se tutto è andato liscio il sistema dovrebbe aver effettuato il boot di device`gm0s1a` e il prompt di `login` dovrebbe essere in attesa. Se qualcosa è andato storto fai riferimento alla sezione successiva "risoluzione dei problemi". Ora aggiungi al disco`da0` al device `gm0`:

`#` `gmirror configure -a gm0` `#` `gmirror insert gm0 /dev/da0`

Il flag `-a` dice a gmirror(8) di usare la sincronizzazione automatica; ovvero mirrorare automaticamente le scritture sul disco. La manpage descrive come ricostruire o rimpiazzare i dischi, utilizzando `data` al posto di `gm0`.

### 19.4.1. Risoluzione dei problemi

#### 19.4.1.1. Il sistema non effettua il boot

Se al boot il sistema mostra un prompt simile a questo:

ffs_mountroot: can't find rootvp Root mount failed: 6 mountroot>

Riavvia la macchina utilizzando il tasto di reset o il pulsante di accensione. Arrivato al menu del boot, scegli l'opzione sei (6). Questo forzerà il sistema al prompt di loader(8). Carica manualmente il modulo del kernel:

OK? `load geom_mirror.ko` OK? `boot`

Se funziona significa che per qualche ragione il modulo non era stato caricato correttamente. Inserisci:

options GEOM_MIRROR

nel file di configurazione del kernek,ricompilalo e reinstallalo. Questo dovrebbe risolvere il problema.

[8] È opportuno chiarire che commentando la riga relativa allo swap nel file `fstab` ti sarà chiesto di ristabilire in un' altra maniera l'utilizzo dello spazio di swapping. Per maggiori informazioni a riguardo fai riferimento a Sezione 11.14, «Aggiunta di Spazio di Swap», grazie.

Indietro | Risali | Avanti
19.3. RAID0 - Striping | Partenza | Capitolo 20. Il Gestore di Volumi Vinum

Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Per domande su FreeBSD, leggi la documentazione prima di contattare <questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a <doc@FreeBSD.org>.