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
| 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
| 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. 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
| 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.
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:
nel file di configurazione del kernek,ricompilalo e reinstallalo. Questo dovrebbe risolvere il problema.