GEOM: Framework modulare per la trasformazione del discoTomRhodesScritto da SinossiGEOMGEOM Disk FrameworkGEOMQuesto articolo tratta l'utilizzo dei dischi attraverso la struttura
GEOM implementata in &os;. Questo include le più importanti
utility di controllo RAID
che utilizzano la suddetta struttura per la loro configurazione.
Questo capitolo non si soffermerà in discussioni approfondite
su come la struttura GEOM utilizza o controlla gli I/O, il suo
sottosistema di funzionamento o il codice.
Queste informazioni sono fornite dalla manpage &man.geom.4; e
nei suoi vari riferimenti SEE ALSO. Questo capitolo non è nemmeno
la guida definitiva alla configurazione del RAID
Soltanto i dischiRAID classificati come "supportati
da GEOM" saranno discussi.Dopo la lettura di questo capitolo saprai:Quale genere di supportoRAID è
disponibile attraverso GEOM.Come usare le utilities di base per configurare, manutenere,
e manipolare i vari livelli di RAID.
Come creare dei mirror, degli stripe, criptare e connettere dischi
remoti attraverso l'utilizzo di GEOM.Come sbrogliare problematiche relative ai dischi connessi
attraverso GEOM.Prima di procedere alla lettura di questo capitolo dovresti:Sapere la meccanica di utilizzo dei dischi da parte di &os;.
().Sapere come configurare e installare un kernel personalizzato
sotto &os; ().Introduzione a GEOMGEOM permette l'accesso e il controllo alle classi — Master Boot
Records, BSD labels, ecc — attraverso l'uso
di forniture o di di files speciali in /dev. Mediante il supporto di vari
software di configurazioneRAID , GEOM fornisce un
accesso "trasparente" al sistema operativo
e alle utilità di sistema.RAID0 - StripingTomRhodesScritto da MurrayStokelyGEOMStripingLo striping è un metodo utilizzato per unire gli hard disks in
un singolo volume. In molti casi, questo si ottiene attraverso dei
controllers hardware. Il sottosistema GEOM fornisce il supporto software
per il RAID0, conosciuto anche come disk
striping.In un sistema RAID0, i dati sono tagliati in
blocchi che vengono "spalmati" su tutti i dischi della catena RAID.
Invece di aspettare che il sistema scriva un blocco di 256kb su un disco,
il RAID0 può scrivere blocchi di 64k ciascuno
su quattro differenti dischi, offrendo performances I/O migliori. Queste
performances possono essere ulteriormente migliorate utilizzando
più controllers per dischi.In ogni "stripe" RAID0 ogni disco deve essere
della stessa grandezza degli altri, dal momento che le chiamate I/O sono
inframezzate per leggere e scrivere su più dischi in
parallelo.Disk Striping IllustrationCreazione di uno stripe di dischi ATA non formattatiCaricare il modulo geom_stripe:&prompt.root; kldload geom_stripe.koAssicurati che esiste una appropriato mount point. Se il volume
in questione diventerà una partizione di root, allora usa
temporaneamente un mount point diverso,ad esempio /mnt:&prompt.root; mkdir /mntDetermina i nomi dei devices per i dischi che verranno configurati
in stripe e creali. Ad esempio per configurare in modalità
stripe 2 dischi ATA
/dev/ad2 e /dev/ad3
non ancora partizionati potresti usare il seguente comando.&prompt.root; gstripe label -v st0 /dev/ad2 /dev/ad3Se questo volume sarà utilizzato come dispositivo di root
da cui effettuare il boot, allora prima di creare il filesystem devi
utilizzare il seguente comando:&prompt.root; fdisk -vBI /dev/stripe/st0Crea una tabella delle partizioni sul nuovo volume con in
seguente comando:&prompt.root; bsdlabel -wB /dev/stripe/st0Questa procedura dovrebbe aver creato altri due device in
/dev/stripe in aggiunta a
st0. Nella fattispecie
st0a e st0c.
Ora bisogna creare un filesystem nel device
st0a utilizzando il comando
newfs come segue:&prompt.root; newfs -U /dev/stripe/st0aDopo che per qualche secondo vedrete parecchi numeri scorrere
sullo schermo, la procedura sarà completa. Il volume è
stato creato ed è pronto per essere montato.Per montare manualmente il dispositivo stripe appena creato usa il
seguente comando:&prompt.root; mount /dev/stripe/st0a /mntPer montare il filesystem stripe automaticamente all'avvio del
sistema, inserisci le informazioni del volume nel file
/etc/fstab:&prompt.root; echo "/dev/stripe/st0a /mnt ufs rw 2 2" \>> /etc/fstabIl modulo geom deve essere caricato contestualmente
all'avvio del sistema; questo lo si ottiene semplicemente inserendo la
seguente linea nel file /boot/loader.conf:&prompt.root; echo 'geom_stripe_load="YES"' >> /boot/loader.confRAID1 - MirroringGEOMDisk MirroringIl 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 (&man.da.4;),Comincia installando &os; 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 &man.bsdlabel.8; e &man.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:&prompt.root; gmirror label -vnb round-robin gm0 /dev/da1Il 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&prompt.root; gmirror loadQuesto comando dovrebbe ora avere creato i nodi di
devicegm0,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:&prompt.root; fdisk -vBI /dev/mirror/gm0Ora crea una label di informazioni generica con
bsdlabel:&prompt.root; bsdlabel -wB /dev/mirror/gm0s1Se 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 &man.newfs.8; per creare un filesystem di default
sul nodo di devicegm0s1a:&prompt.root; newfs -U /dev/mirror/gm0s1aQuesto 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:&prompt.root; mount /dev/mirror/gm0s1a /mntOra sposta tutti i dati presenti sul tuo disco di boot nel nuovo
filesystem. Questo esempio usa i comandi &man.dump.8; e &man.restore.8;
comunque anche &man.dd.1; dovrebbe funzionare nel contesto che stiamo
trattando. Evita di utilizzare &man.tar.1; dal momento che non copia il
codice di boot. In caso contrario il fallimento è
garantito.&prompt.root; 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.
È 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
, grazie.
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.&prompt.root; echo "1:da(1,a)/boot/loader" > /boot.config&prompt.root; echo "1:da(1,a)/boot/loader" > /mnt/boot.configLo 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:&prompt.root; echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.confQuesto indicherà a &man.loader.8; come caricare il modulo
geom_mirror.ko durante l'inizializzazione del
sistema.Riavvia il sistema:&prompt.root; shutdown -r nowSe tutto è andato liscio il sistema dovrebbe aver effettuato
il boot di devicegm0s1a e il prompt di
login dovrebbe essere in attesa. Se qualcosa è
andato storto fai riferimento alla sezione successiva "risoluzione dei
problemi". Ora aggiungi al discoda0 al device
gm0:&prompt.root; gmirror configure -a gm0
&prompt.root; gmirror insert gm0 /dev/da0Il flag dice a &man.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.Risoluzione dei problemiIl sistema non effettua il bootSe 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 &man.loader.8;.
Carica manualmente il modulo del kernel:OK? load geom_mirror.ko
OK? bootSe funziona significa che per qualche ragione il modulo non era
stato caricato correttamente. Inserisci:options GEOM_MIRRORnel file di configurazione del kernek,ricompilalo e reinstallalo.
Questo dovrebbe risolvere il problema.