diff --git a/it_IT.ISO8859-15/books/handbook/advanced-networking/chapter.sgml b/it_IT.ISO8859-15/books/handbook/advanced-networking/chapter.sgml
index 8127f3d81c..57ad4e4af7 100644
--- a/it_IT.ISO8859-15/books/handbook/advanced-networking/chapter.sgml
+++ b/it_IT.ISO8859-15/books/handbook/advanced-networking/chapter.sgml
@@ -1,104 +1,110 @@
Networking Avanzato
-
+ SinossiTraduzione in corsoGateways and RoutesTraduzione in corso
+
+ Wireless
+
+ Traduzione in corso
+
+
BridgingTraduzione in corsoNFSTraduzione in corsoDiskless OperationTraduzione in corsoISDNTraduzione in corsoNIS/YPTraduzione in corsoDHCPTraduzione in corsoDNSTraduzione in corsoNTPTraduzione in corsoNetwork Address TranslationTraduzione in corsoinetd Super-ServerTraduzione in corsoParallel Line IP (PLIP)Traduzione in corsoIPv6Traduzione in corso
diff --git a/it_IT.ISO8859-15/books/handbook/advanced-networking/isdn-bus.eps b/it_IT.ISO8859-15/books/handbook/advanced-networking/isdn-bus.eps
deleted file mode 100644
index cdb717f681..0000000000
--- a/it_IT.ISO8859-15/books/handbook/advanced-networking/isdn-bus.eps
+++ /dev/null
@@ -1,147 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%BoundingBox: 99 -130 355 100
-%%Creator: G. Adam Stanislav
-%%EndComments
-%%BeginProlog
-%%EndProlog
-
-%%BeginSetup
-/t {
- rlineto
- -5 0 rlineto
- 0 -7 rlineto
- -6 0 rlineto
- 0 20 rlineto
- 6 0 rlineto
- 0 -7 rlineto
- 5 0 rlineto
-} bind def
-
-/ldent {
- 0 5 rlineto
- -7 0 rlineto
- 0 -5 rlineto
-} bind def
-
-/rdent {
- 0 5 rlineto
- 11 0 rlineto
- 0 -5 rlineto
-} bind def
-
-/router {
- moveto
- 0 12 t
- 0 12 rlineto
- 70 0 rlineto
- 0 -30 rlineto
- -52.5 0 rlineto
- ldent
- closepath
- 2 28 rmoveto
- 0 -26 rlineto
- 6.5 0 rlineto
- rdent
- 48.5 0 rlineto
- 0 26 rlineto
- closepath
- fill
-} bind def
-
-/box {
- moveto
- 0 17 t
- 0 17 rlineto
- 100 0 rlineto
- 0 -40 rlineto
- closepath
- 2 38 rmoveto
- 0 -36 rlineto
- 96 0 rlineto
- 0 36 rlineto
- closepath
- fill
-} bind def
-
-/plug {
- moveto
- 0 7 rlineto
- 6 0 rlineto
- 0 -7 rlineto
- closepath
- fill
-} bind def
-
-/internet {
- moveto
- 0 210 rlineto
- 110 0 rlineto
- 0 -210 rlineto
- closepath
- gsave
- 5 7 div setcolor
- fill
- grestore
- stroke
-} bind def
-%%EndSetup
-
-% draw the coax cable
-3 7 div setcolor
-114 -94 moveto
--4 0 rlineto
-0 164 rlineto
-4 0 rlineto
-closepath
-fill
-
-% draw some terminating resistors
-newpath
-112 -110 2 0 360 arc fill
-newpath
-112 85 2 0 360 arc fill
-0 setcolor
-
-120 60 router
-131 57.5 plug
-
-120 0 box
-120 -60 box
-120 -120 box
-
-gsave
-[5 3] 0 setdash
-235 -120 internet
-grestore
-
-% Connect router to the Internet
-232 40.5 plug
-133 58 moveto
-0 -15 rlineto
-102 0 rlineto
-0 2 rlineto
--100 0 rlineto
-0 13 rlineto
-closepath
-fill
-
-/Helvetica-bold findfont dup 10 scalefont setfont
-
-140 74 moveto (Router) show
-140 -42 moveto (Windows 95) show
-130.5 -102 moveto (Sun Workstation) show
-138 18 moveto (FreeBSD Box) show
-161 47.5 moveto (ISDN BRI Line) show
-
-25 scalefont setfont
-
-265 51 moveto (The) show
-245 27 moveto (Internet) show
-1 setcolor
-264 53 moveto (The) show
-244 29 moveto (Internet) show
-
-%%Trailer
-showpage
-%%EOF
-
diff --git a/it_IT.ISO8859-15/books/handbook/advanced-networking/isdn-twisted-pair.eps b/it_IT.ISO8859-15/books/handbook/advanced-networking/isdn-twisted-pair.eps
deleted file mode 100644
index 5021a84aab..0000000000
--- a/it_IT.ISO8859-15/books/handbook/advanced-networking/isdn-twisted-pair.eps
+++ /dev/null
@@ -1,242 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%BoundingBox: -10 -70 355 100
-%%Creator: G. Adam Stanislav
-%%EndComments
-%%BeginProlog
-%%EndProlog
-
-%%BeginSetup
-/ldent {
- 0 5 rlineto
- -7 0 rlineto
- 0 -5 rlineto
-} bind def
-
-/uldent {
- 0 -5 rlineto
- 7 0 rlineto
- 0 5 rlineto
-} bind def
-
-/rdent {
- 0 5 rlineto
- 11 0 rlineto
- 0 -5 rlineto
-} bind def
-
-/urdent {
- 0 -5 rlineto
- -11 0 rlineto
- 0 5 rlineto
-} bind def
-
-/hub {
- moveto
- 0 30 rlineto
- 84 0 rlineto
- 0 -30 rlineto
- -10.5 0 rlineto
- ldent
- -7 0 rlineto
- ldent
- -7 0 rlineto
- ldent
- -7 0 rlineto
- ldent
- -7 0 rlineto
- ldent
- closepath
- 2 28 rmoveto
- 0 -26 rlineto
- 6.5 0 rlineto
- rdent
- 3 0 rlineto
- rdent
- 3 0 rlineto
- rdent
- 3 0 rlineto
- rdent
- 3 0 rlineto
- rdent
- 6.5 0 rlineto
- 0 26 rlineto
- closepath
- fill
-} bind def
-
-/router {
- moveto
- 0 30 rlineto
- 70 0 rlineto
- 0 -30 rlineto
- -10.5 0 rlineto
- ldent
- -35 0 rlineto
- ldent
- closepath
- 2 28 rmoveto
- 0 -26 rlineto
- 6.5 0 rlineto
- rdent
- 31 0 rlineto
- rdent
- 6.5 0 rlineto
- 0 26 rlineto
- closepath
- fill
-} bind def
-
-/box {
- moveto
- 0 40 rlineto
- 10.5 0 rlineto
- uldent
- 82.5 0 rlineto
- 0 -40 rlineto
- closepath
- 2 38 rmoveto
- 0 -36 rlineto
- 96 0 rlineto
- 0 36 rlineto
- -78.5 0 rlineto
- urdent
- closepath
- fill
-} bind def
-
-/plug {
- moveto
- 0 7 rlineto
- 6 0 rlineto
- 0 -7 rlineto
- closepath
- fill
-} bind def
-
-/internet {
- moveto
- 0 90 rlineto
- 110 0 rlineto
- 0 -90 rlineto
- closepath
- gsave
- 5 7 div setcolor
- fill
- grestore
- stroke
-} bind def
-%%EndSetup
-
-0 60 hub
-11 57.5 plug
-25 57.5 plug
-39 57.5 plug
-53 57.5 plug
-67 57.5 plug
-
-100 60 router
-111 57.5 plug
-153 57.5 plug
-
-0 -60 box
-11 -24.5 plug
-% Connect box 1 with hub
-13 -20 moveto
-0 78 rlineto
-2 0 rlineto
-0 -78 rlineto
-closepath
-fill
-
-120 0 box
-% Connect box 2 with hub
-131 35.5 plug
-133 40 moveto
-0 6 rlineto
--78 0 rlineto
-0 12 rlineto
-2 0 rlineto
-0 -10 rlineto
-78 0 rlineto
-0 -8 rlineto
-closepath
-fill
-
-120 -60 box
-131 -24.5 plug
-% Connect with hub
-133 -20 moveto
-0 6 rlineto
--106 0 rlineto
-0 72 rlineto
-2 0 rlineto
-0 -70 rlineto
-106 0 rlineto
-0 -8 rlineto
-closepath
-fill
-
-240 -60 box
-251 -24.5 plug
-% Connect with hub
-253 -20 moveto
-0 14 rlineto
--212 0 rlineto
-0 68 rlineto
-2 0 rlineto
-0 -66 rlineto
-212 0 rlineto
-0 -16 rlineto
-closepath
-fill
-
-% Connect hub with router
-69 58 moveto
-0 -6 rlineto
-46 0 rlineto
-0 6 rlineto
--2 0 rlineto
-0 -4 rlineto
--42 0 rlineto
-0 4 rlineto
-closepath
-fill
-
-gsave
-[5 3] 0 setdash
-235 0 internet
-grestore
-
-% Connect router to the Internet
-232 40.5 plug
-155 58 moveto
-0 -15 rlineto
-80 0 rlineto
-0 2 rlineto
--78 0 rlineto
-0 13 rlineto
-closepath
-fill
-
-/Helvetica-bold findfont dup 10 scalefont setfont
-
-32 74 moveto (Hub) show
-120 74 moveto (Router) show
-17 -42 moveto (Novell Server) show
-140 -42 moveto (Windows 95) show
-250.5 -42 moveto (Sun Workstation) show
-138 18 moveto (FreeBSD Box) show
-161 47.5 moveto (ISDN BRI Line) show
-
-25 scalefont setfont
-
-265 51 moveto (The) show
-245 27 moveto (Internet) show
-1 setcolor
-264 53 moveto (The) show
-244 29 moveto (Internet) show
-
-%%Trailer
-showpage
-%%EOF
-
diff --git a/it_IT.ISO8859-15/books/handbook/advanced-networking/natd.eps b/it_IT.ISO8859-15/books/handbook/advanced-networking/natd.eps
deleted file mode 100644
index 5677ace420..0000000000
--- a/it_IT.ISO8859-15/books/handbook/advanced-networking/natd.eps
+++ /dev/null
@@ -1,228 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%BoundingBox: -10 -10 355 100
-%%Creator: G. Adam Stanislav
-%%EndComments
-%%BeginProlog
-%%EndProlog
-
-%%BeginSetup
-/ldent {
- 0 5 rlineto
- -7 0 rlineto
- 0 -5 rlineto
-} bind def
-
-/uldent {
- 0 -5 rlineto
- 7 0 rlineto
- 0 5 rlineto
-} bind def
-
-/rdent {
- 0 5 rlineto
- 11 0 rlineto
- 0 -5 rlineto
-} bind def
-
-/urdent {
- 0 -5 rlineto
- -11 0 rlineto
- 0 5 rlineto
-} bind def
-
-/hub {
- moveto
- 0 30 rlineto
- 70 0 rlineto
- 0 -30 rlineto
- -10.5 0 rlineto
- ldent
- -7 0 rlineto
- ldent
- -7 0 rlineto
- ldent
- -7 0 rlineto
- ldent
- closepath
- 2 28 rmoveto
- 0 -26 rlineto
- 6.5 0 rlineto
- rdent
- 3 0 rlineto
- rdent
- 3 0 rlineto
- rdent
- 3 0 rlineto
- rdent
- 6.5 0 rlineto
- 0 26 rlineto
- closepath
- fill
-} bind def
-
-/router {
- moveto
- 0 30 rlineto
- 70 0 rlineto
- 0 -30 rlineto
- -10.5 0 rlineto
- ldent
- -35 0 rlineto
- ldent
- closepath
- 2 28 rmoveto
- 0 -26 rlineto
- 6.5 0 rlineto
- rdent
- 31 0 rlineto
- rdent
- 6.5 0 rlineto
- 0 26 rlineto
- closepath
- fill
-} bind def
-
-/box1 {
- moveto
- 0 40 rlineto
- 10.5 0 rlineto
- uldent
- 82.5 0 rlineto
- 0 -40 rlineto
- closepath
- 2 38 rmoveto
- 0 -36 rlineto
- 96 0 rlineto
- 0 36 rlineto
- -78.5 0 rlineto
- urdent
- closepath
- fill
-} bind def
-
-/box2 {
- moveto
- 0 40 rlineto
- 10.5 0 rlineto
- uldent
- 65 0 rlineto
- uldent
- 10.5 0 rlineto
- 0 -40 rlineto
- closepath
- 2 38 rmoveto
- 0 -36 rlineto
- 96 0 rlineto
- 0 36 rlineto
- -6.5 0 rlineto
- urdent
- -61 0 rlineto
- urdent
- closepath
- fill
-} bind def
-
-/plug {
- moveto
- 0 7 rlineto
- 6 0 rlineto
- 0 -7 rlineto
- closepath
- fill
-} bind def
-
-/internet {
- moveto
- 0 90 rlineto
- 110 0 rlineto
- 0 -90 rlineto
- closepath
- gsave
- 5 7 div setcolor
- fill
- grestore
- stroke
-} bind def
-%%EndSetup
-
-0 60 hub
-11 57.5 plug
-25 57.5 plug
-
-135 60 router
-146 57.5 plug
-188 57.5 plug
-
-0 0 box1
-11 35.5 plug
-
-13 40 moveto
-0 18 rlineto
-2 0 rlineto
-0 -18 rlineto
-closepath
-fill
-
-120 0 box2
-% Connect box2 with hub
-131 35.5 plug
-133 40 moveto
-0 8 rlineto
--106 0 rlineto
-0 10 rlineto
-2 0 rlineto
-0 -8 rlineto
-106 0 rlineto
-0 -10 rlineto
-closepath
-fill
-
-% Connect box2 with router
-203 35.5 plug
-205 40 moveto
-0 8 rlineto
--57 0 rlineto
-0 10 rlineto
-2 0 rlineto
-0 -8 rlineto
-57 0 rlineto
-0 -10 rlineto
-closepath
-fill
-
-gsave
-[5 3] 0 setdash
-235 0 internet
-grestore
-
-% Connect router to the Internet
-232 49.5 plug
-190 58 moveto
-0 -6 rlineto
-45 0 rlineto
-0 2 rlineto
--43 0 rlineto
-0 4 rlineto
-closepath
-fill
-
-/Helvetica-bold findfont dup 10 scalefont setfont
-
-25 74 moveto (Hub) show
-155 74 moveto (Router) show
-28 18 moveto (Client A) show
-149 23 moveto (Client B) show
-123.5 10 moveto ((FreeBSD Gateway)) show
-
-25 scalefont setfont
-
-265 51 moveto (The) show
-245 27 moveto (Internet) show
-1 setcolor
-264 53 moveto (The) show
-244 29 moveto (Internet) show
-
-%%Trailer
-showpage
-%%EOF
-
diff --git a/it_IT.ISO8859-15/books/handbook/vinum/chapter.sgml b/it_IT.ISO8859-15/books/handbook/vinum/chapter.sgml
index 565fa5f521..d03f38a4b7 100644
--- a/it_IT.ISO8859-15/books/handbook/vinum/chapter.sgml
+++ b/it_IT.ISO8859-15/books/handbook/vinum/chapter.sgml
@@ -1,1035 +1,1035 @@
Il Gestore di Volumi VinumSinossiQualunque siano i dischi che hai, ci saranno sempre delle
limitazioni:Potrebbero essere troppo piccoli.Potrebbero essere troppo lenti.Potrebbero essere troppo inaffidabili.GregLeheyOriginariamente scritto da Dischi troppo piccoliVinumVolumiGestoreVinum è un Volume
Manager, ovvero un driver virtuale di disco che si occupa dei
tre problemi indicati nella sinossi. Diamo un'occhiata in dettaglio a
questi problemi, per cui sono state proposte e implementate varie
soluzioni.I dischi stanno diventando sempre più grandi, ma questo
è vero anche le necessità di spazio per i dati. Spesso
sentirai il bisogno di avere un file system più grande dei dischi
che possiedi. Effettivamente questo problema non è così
grave come lo era dieci anni fa, ma è sempre presente. Alcuni
sistemi risolvono la questione creando un dispositivo astratto che
ripartisce i suoi dati su vari dischi.
-
+ Colli di bottiglia nell'accessoI moderni sistemi hanno frequentemente la necessità di
accedere ai dati in modo concorrente. Ad esempio, un grande server FTP o
HTTP può avere migliaia di sessioni concorrenti e molteplici
- connessioni da 100 Mbit/s verso il mondo esterno, ben oltre il transfer
- rate (velocità di trasferimento) che la maggior parte dei dischi
- può sostenere.
+ connessioni da 100 Mbit/s verso il mondo esterno, ben oltre il
+ transfer rate (velocità di trasferimento) che la maggior parte dei
+ dischi può sostenere.
I dischi odierni possono trasferire sequenzialmente dati fino a
- 70 MB/s, ma questo valore ha poca importanza in un ambiente dove molti
- processi indipendenti accedono al disco, in quanto raggiungerebbero
+ 70 MB/s, ma questo valore ha poca importanza in un ambiente dove
+ molti processi indipendenti accedono al disco, in quanto raggiungerebbero
solo una frazione di quella velocità. In questi casi è
più interessante vedere il problema dal punto di vista del
sottosistema dischi: il parametro importante è il carico che il
trasferimento pone sul sottosistema, in altre parole il tempo per cui il
trasferimento occupa i dischi necessari per lo stesso.In ogni trasferimento da disco il drive deve prima posizionare le
testine, poi aspettare che il primo settore passi sotto la testina di
lettura e solo dopo può effettuare il trasferimento. Queste azioni
possono essere considerate atomiche: non ha alcun senso
interromperle.Considera un tipico trasferimento di circa
10 kB: l'attuale generazione di dischi ad alte prestazioni può
- posizionare le testine in circa 3,5 ms. I dischi più veloci
- ruotano a 15.000 rpm, quindi la latenza media rotazionale (mezzo giro)
- è di 2 ms. A 70 MB/s, il trasferimento in sé occupa circa
- 150 μs, quasi nulla in confronto al tempo di posizionamento.
- In questo caso il transfer rate effettivo può scendere fino a poco
- oltre 1 MB/s e questo è charamente molto dipendente dalla
- dimensione del trasferimento.
+ posizionare le testine in circa 3,5 ms. I dischi più veloci
+ ruotano a 15.000 rpm, quindi la latenza media rotazionale (mezzo
+ giro) è di 2 ms. A 70 MB/s, il trasferimento in
+ sé occupa circa 150 μs, quasi nulla in confronto al tempo
+ di posizionamento. In questo caso il transfer rate effettivo può
+ scendere fino a poco oltre 1 MB/s e questo è charamente molto
+ dipendente dalla dimensione del trasferimento.
La tradizionale e ovvia soluzione a questo collo di bottiglia è
più assi: invece di usare un grande disco si usano
molti piccoli dischi con la stessa dimensione totale. Ogni disco è
capace di posizionarsi e trasferire dati indipendentemente quindi la
velocità effettiva aumenta di un fattore vicino al numero di dischi
usati.L'esatto fattore di miglioramento è, ovviamente, più
piccolo del numero di dischi: benché ogni disco sia capace di
trasferire in parallelo non c'è modo di assicurare che le richieste
siano distribuite uniformemente tra tutti i dischi. Inevitabilmente il
carico su uno dei dischi è più alto che sugli altri.concatenazioneVinumVinumconcatenazioneL'uniformità della distribuzione del carico sui dischi è
fortemente dipendente dal modo in cui i dati sono condivisi tra i dischi
stessi. Nella seguente discussione è conveniente pensare allo
spazio di immagazzinamento come se fosse diviso in un gran numero di
settori identificati da un indirizzo numerico, come pagine in un libro.
Il metodo più ovvio è di dividere il disco virtuale in
gruppi di settori consecutivi della dimensione dei dischi fisici e
immagazzinarli in questa maniera, come strappare un grosso libro in
piccole sezioni. Questo metodo è chiamato
concatenazione e ha il vantaggio di non avere
particolari richieste sulla dimensione degli specifici dischi.
Funziona bene quando l'accesso al
disco virtuale è ben ripartito tra tutto il suo spazio di
indirizzamento. Quando l'accesso è concentrato in una piccola area
il miglioramento è meno marcato. La
illustra la sequenza in cui le unità di immagazzinamento sono
allocate nell'organizzazione concatenata.Organizzazione concatenatastripingVinumVinumstripingRAIDlivello 0RAID-0Un metodo alternativo è dividere lo spazio in più
piccole componenti di egual dimensione e immagazzinarle sequenzialente su
differenti dispositivi. Per esempio i primi 256 settori potrebbero essere
immagazzinati sul primo disco, i seguenti 256 settori sul disco seguente e
così via. Dopo aver immagazzinato i dati sull'ultimo disco il
processo si ripete finché i dischi non sono pieni. Questo
mappamento è chiamato striping (letteralmente
"a bande") o RAID-0
RAIDRedundant Array of Inexpensive DisksRAID significa Redundant Array of
Inexpensive Disks (insieme ridondante di dischi non
costosi) e offre varie forme di tolleranza ai problemi. Nel caso del
RAID-0 il termine è leggermente fuorviante: in
effetti non dà alcuna ridondanza..
Lo striping richiede qualche sforzo aggiuntivo per localizzare i dati e
può causare carico di I/O aggiuntivo quando il trasferimento
è distribuito tra vari dischi, ma aiuta il carico a essere ben
distribuito tra i vari dischi. La illustra
la sequenza in cui i blocchi di dati sono allocati nell'organizzazione in
striping.Organizzazione in striping
-
+ Integrità dei datiL'ultimo problema dei dischi attuali è che sono inaffidabili.
Benché la loro affidabilità sia aumentata tremendamente
durante gli ultimi anni sono tuttora il componente di un server che ha
la maggior probabilità di rompersi. Quando succede i risultati
possono essere catastrofici: rimpiazzare un disco rotto e riempirlo dei
dati originari può richiedere giorni.mirroringVinumVinummirroringRAIDlivello 1RAID-1Il metodo tradizionale per affrontare questo problema si chiama
mirroring (letteralmente "specchiatura") e consiste
nel tenere due copie dei dati su hardware fisici differenti. Con
l'avvento dei livelli RAID questa tecnica è
stata chiamata RAID di livello 1 o
RAID-1. Ogni scrittura su disco scrive in entrambe le
locazioni; una lettura può essere soddisfatta da entrambi quindi se
un disco si rompe i dati sono sempre disponibili sull'altro disco.Il mirroring ha due problemi:Il prezzo. Richiede il doppio dello spazio di
immagazzinamento delle soluzioni non ridondanti.L'impatto sulle prestazioni. La scrittura deve essere
compiuta su entrambi i dischi quindi la banda occupata raddoppia.
Le letture non soffrono di problemi sulle prestazioni: possono
perfino essere più veloci.Vinumstriping con paritàRAIDlivello 5RAID-5Una soluzione alternativa è la
parità, implementata nel
RAID di livello 2, 3, 4 e 5. Di questi, il
RAID-5 è il più interessante. La sua
implementazione in Vinum è una variante dell'organizzazione in
striping che dedica un blocco di ogni banda alla parità degli
- altri blocchi: per come è implementato in Vinum, ogni blocco
+ altri blocchi. Per come è implementato in Vinum, ogni blocco
RAID-5 è simile a un blocco in striping, con
la differenza che implementa il RAID-5 includendo un
blocco di parità per ogni banda. Come richiesto dal
RAID-5 la locazione di questi blocchi di parità
cambia da ogni banda alla successiva. I numeri nei blocchi dati indicano
il numero dei blocchi relativi.Organizzazione RAID-5Comparandolo al mirroring, il RAID-5 ha il
vantaggio di richiedere molto meno spazio di immagazzinamento. La
velocità di lettura è simile all'organizzazione in
striping, ma in scrittura l'accesso è significativamente più
lento, circa il 25% della performance di lettura. Se uno dei dischi si
rompe l'aggregato continua a lavorare con performance peggiorate: la
lettura da uno dei dischi rimanenti continua normalmente, ma la lettura
dal disco rotto è ricalcolata dai corrispondenti blocchi dei
dischi rimanenti.Oggetti VinumPer risolvere questi problemi Vinum implementa una categoria di
oggetti a quattro livelli:L'oggetto più visibile è il disco virtuale,
chiamato volume. I volumi hanno essenzialmente
le stesse proprietà di un disco UNIX™, benché ci
sia qualche differenza minore. Non hanno limiti di dimensione.I volumi sono composti da plex, ognuno dei
quali rappresenta il completo spazio di indirizzamento del volume.
È quindi questo il livello della gerarchia che gestisce la
ridondanza dei dati. Pensa ai plex come a singoli dischi collegati
tra loro in mirroring, ognuno contenete gli stessi dati.Dato che Vinum vive all'interno del framework UNIX™ di
immagazzinamento dei dati sarebbe possibile utilizzare le partizioni
UNIX™ come blocchi basilari per costruire i plex multidisco,
ma questo approccio sarebbe in effetti troppo poco flessibile: i
dischi UNIX™ possono avere solo un limitato numero di
partizioni; al contrario Vinum suddivide le singole partizioni
UNIX™ (drive, ovvero dischi) in aree
contigue chiamate subdisks (sottodischi), che
solo a loro volta utilizzati come elementi per costruire i
plex.I sottodischi risiedono su drive Vinum, che
attualmente sono partizioni UNIX™. I drive Vinum possono
contenere qualsiasi quantità di sottodischi. Con l'eccezione
di una piccola area all'inizio del drive, che è usata per
immagazzinare informazioni sulla configurazione e sullo stato,
l'intero drive è disponibile per l'ìimmagazzinamento
dei dati.La sezione seguente descrive come gli oggetti sopra discussi possano
dare le funzionalità richieste.Considerazioni sulle dimensioni dei volumiI plex possono contenere molteplici sottodischi distribuiti tra
tutti i drive presenti nella configurazione di Vinum, questo permette
alla dimensione dei plex, e quindi anche dei volumi, di non essere
limitata dalla dimensione dei singoli dischi.Immagazzinamento ridondante dei datiVinum implementa il mirroring collegando più plex allo stesso
volume, ogni plex contiene la rappresentazione di tutti i dati del
volume. Un volume può contenere da uno ad otto plex.Nonostante un plex rappresenti i dati di un volume per intero,
è possibile che parti di questa rappresentazione vengano a
mancare o per scelta (non definendo dei sottodischi per alcune parti del
plex) o per accidente (come risultato della rottura del disco che le
conteneva). Finché almeno un plex contiene i dati di tutto lo
spazio d'indirizzamento del volume, il volume stesso è
completamente funzionale.Considerazioni sulle prestazioniVinum implementa sia la concatenazione che lo striping al livello di
plex:Un plex concatenato usea lo spazio di
indirizzamento di ogni sottodisco a turno.Un plex in striping suddivide i dati tra
ogni sottodisco. I sottodischi devono tutti avere la stessa
dimensione e devono essere presenti almeno due sottodischi
perché esista differenza da un plex concatenato.Quale organizzazione per i plex?La versione di Vinum distribuita con FreeBSD &rel.current;
implementa due tipi di plex:I plex concatenati, che sono i più flessibili: possono
contenere qualsiasi numero di sottodischi e questi possono avere
qualsiasi dimensione. Il plex può essere esteso aggiungendo
sottodischi. Richiede meno tempo di CPU di un
plex in striping, benché la differenza in carico di
CPU non sia misurabile. D'altro canto sono
più suscettibili agli hot spot (letteralmente zona
calda): casi in cui un disco è molto attivo mentre
gli altri sono fermi.Il più grande vantaggio dei plex in striping
(RAID-0) è la loro capacità di
ridurre gli hot spot: scegliendo una dimensione di striping ottimale
- (circa 256 kB) si può ridistribuire il carico sui drive. Gli
- svantaggi di questo approccio sono codice più complesso e
+ (circa 256 kB) si può ridistribuire il carico sui drive.
+ Gli svantaggi di questo approccio sono codice più complesso e
restrizioni sui sottodischi: devono essere tutti della stessa
dimensione, inoltre estendere il plex aggiungendo sottodischi
è così complicato che attualmente Vinum non lo
implementa. Vinum aggiunge anche un'ulteriore restrizione
elementare: un plex in striping deve contenere almeno due
sottodischi, dato che sarebbe altrimenti indistinguibile da un plex
concatenato.La riassume vantaggi e svantaggi
di ogni tipo di organizzazione dei plex.
Organizzazione dei Plex VinumTipo di plexSottodischi minimiSottodischi aggiungibiliDimensioni forzatamente ugualiApplicazioneconcatenato1sìnoImmagazzinamento di grandi moli di dati con la massima
flessibilità e prestazioni moderatestriping2nosìAlte prestazioni in casi di accessi altamente
concorrenti
Alcuni esempiVinum mantiene un database della configurazione
che descrive gli oggetti del sistema conosciuti. Inizialmente l'utente
crea il database della configurazione da uno o più file di
configurazione, con l'aiuto del programma &man.vinum.8;. Vinum
immagazzina una copia del database di configurazione in ogni slice del
disco (che Vinum chiama device, ovvero
dispositivo) sotto il suo controllo.
Questo database è aggiornato a ogni cambi
di stato in modo che un riavvio possa recuperare accuratamente lo stato di
ogni oggetto Vinum.Il file di configurazioneIl file di configurazione descrive singoli oggetti Vinum. La
definizione di un semplice volume potrebbe essere: drive a device /dev/da3h
volume myvol
plex org concat
sd length 512m drive aQuesto file descrive quattro oggetti Vinum:La linea drive descrive la partizione del
disco (drive) e la sua locazione relativa
all'hardware sottostante. Gli viene assegnato il nome simbolico
a. Questa separazione dei nomi simbolici dai
nomi di dispositivo permette di muovere i dischi da una locazione ad
un'altra senza confusione.La linea volume descrive un volume.
L'unico attributo richiesto è il nome, in questo caso
myvol.La linea plex definisce un plex.
L'unico parametro richiesto è il tipo di organizzazione, in
questo caso concat. Non è necessario
un nome: il sistema genera un nome automaticamente a partire dal
nome del volume, aggiungendo un suffisso
.px, dove
x indica il numero del plex nel volume. Il
plex verrà quindi chiamato
myvol.p0.La linea sd descrive un sottodisco.
Le spefiche minime sono il nome del drive su cui immagazzinarlo e
la lunghezza del sottodisco. Come per i plex non è
necessario un nome: il sistema assegna automaticamente nomi
derivati dal nome del plex, agigungendo il suffisso
.sx, dove
x indica il numero del sottdisco nel plex,
quindi Vinum darà a questo sottodisco il nome di
myvol.p0.s0.Dopo aver elaborato questo file, &man.vinum.8; produce il seguente
output: &prompt.root; vinum -> create config1
Configuration summary
Drives: 1 (4 configured)
Volumes: 1 (4 configured)
Plexes: 1 (8 configured)
Subdisks: 1 (16 configured)
D a State: up Device /dev/da3h Avail: 2061/2573 MB (80%)
V myvol State: up Plexes: 1 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MBQuesto output mostra il formato di elenco breve di &man.vinum.8;,
che è rappresentato graficamente nella
.Un semplice volume VinumQuesta figura e quelle che seguono rappresentano un volume
contenente dei plex che a loro volta contengono dei sottodischi.
In questo semplice esempio il volume contiene un plex e il plex
contiene un sottodisco.Questo particolare volume non ha specifici vantaggi su una
convenzionale partizione di disco. Contiene un singolo plex, quindi non
è ridondante. Il plex contiene un solo sottodisco, quindi non
c'è differenza nell'immagazzinamento dei dati. Le sezioni
seguenti mostrano vari metodi di configurazione più
interessanti.Aumentare la resistenza alle rotture: il mirroringIl mirroring può aumentare, in un volume, la resistenza alle
rotture. Quando si definisce un volume in mirroring è importante
assicurarsi che i sottodischi di ogni plex siano su dischi differenti,
in modo che la rottura di un drive non blocchi entrambi i plex. La
seguente configurazione mostra un volume in mirroring: drive b device /dev/da4h
volume mirror
plex org concat
sd length 512m drive a
plex org concat
sd length 512m drive bIn questo esempio non è necessario specificare nuovamente la
definizione del drivea, dato che Vinum mantiene
traccia di tutti gli oggetti nel suo database di configurazione. Dopo
aver elaborato questa definizione, la configurazione appare
così: Drives: 2 (4 configured)
Volumes: 2 (4 configured)
Plexes: 3 (8 configured)
Subdisks: 3 (16 configured)
D a State: up Device /dev/da3h Avail: 1549/2573 MB (60%)
D b State: up Device /dev/da4h Avail: 2061/2573 MB (80%)
V myvol State: up Plexes: 1 Size: 512 MB
V mirror State: up Plexes: 2 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB mostra la struttura
graficamente.Un volume Vinum in mirroringIn questo esempio ogni plex contiene l'intero spazio di
- indirizzamento di 512 MB. Come nel precedente esempio ogni plex
+ indirizzamento di 512 MB. Come nel precedente esempio ogni plex
contiene un solo sottodisco.Ottimizzazione delle prestazioniIl volume in mirroring dell'esempio precedente è più
resistente alle rotture di un volume non in mirroring, ma le sue
prestazioni sono inferiori: ogni scrittura sul volume richiede una
scrittura su ognuno dei drive, utilizzando quindi una maggior frazione
della banda passante totale dei dischi. Considerazioni sulle
prestazioni portano ad un differente approccio: al posto del mirroring,
i dati vengono posti su più dischi possibile utilizzando lo
striping. La seguente configruazione mostra un volume con un plex in
striping su quattro dischi: drive c device /dev/da5h
drive d device /dev/da6h
volume stripe
plex org striped 512k
sd length 128m drive a
sd length 128m drive b
sd length 128m drive c
sd length 128m drive dCome prima non è necessario definire i drive che Vinum
già conosce. Dopo aver elaborato queste definizioni la
configurazione appare così: Drives: 4 (4 configured)
Volumes: 3 (4 configured)
Plexes: 4 (8 configured)
Subdisks: 7 (16 configured)
D a State: up Device /dev/da3h Avail: 1421/2573 MB (55%)
D b State: up Device /dev/da4h Avail: 1933/2573 MB (75%)
D c State: up Device /dev/da5h Avail: 2445/2573 MB (95%)
D d State: up Device /dev/da6h Avail: 2445/2573 MB (95%)
V myvol State: up Plexes: 1 Size: 512 MB
V mirror State: up Plexes: 2 Size: 512 MB
V striped State: up Plexes: 1 Size: 512 MB
P myvol.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p0 C State: up Subdisks: 1 Size: 512 MB
P mirror.p1 C State: initializing Subdisks: 1 Size: 512 MB
P striped.p1 State: up Subdisks: 1 Size: 512 MB
S myvol.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p0.s0 State: up PO: 0 B Size: 512 MB
S mirror.p1.s0 State: empty PO: 0 B Size: 512 MB
S striped.p0.s0 State: up PO: 0 B Size: 128 MB
S striped.p0.s1 State: up PO: 512 kB Size: 128 MB
S striped.p0.s2 State: up PO: 1024 kB Size: 128 MB
S striped.p0.s3 State: up PO: 1536 kB Size: 128 MBUn volume Vinum in stripingQuesto volume è rappresentato nella
. L'intensità delle strisce
indica la posizione all'interno dello spazio di inidirizzamento del
plex: le più chiare all'inizio, le più scure alla
fine.Resistenza alle rotture e prestazioniCon hardware a sufficenza è
possibile creare volumi con miglioramenti sia nella resistenza alle
rotture che nelle prestazioni, comparati alle normali partizioni
UNIX™. Una tipica configurazione potrebbe essere: volume raid10
plex org striped 512k
sd length 102480k drive a
sd length 102480k drive b
sd length 102480k drive c
sd length 102480k drive d
sd length 102480k drive e
plex org striped 512k
sd length 102480k drive c
sd length 102480k drive d
sd length 102480k drive e
sd length 102480k drive a
sd length 102480k drive bI sottodischi del secondo plex sono spostati di due posti rispetto a
quelli del primo plex: questo aumenta le probabilità che le
scritture non utilizzino lo stesso sottodisco anche in caso che un
trasferimento utilizzi entrambi i drive.La rappresenta la struttura di
questo volume.Un volume Vinum in mirroring e striping
-
+ Nomenclatura degli oggettiCome descritto sopra, Vinum assegna nomi di default a plex e
sottodischi, benché questi possano essere cambiati. Cambiare il
nome di default non è raccomandato: l'esperienza con il VERITAS
volume manager, che permette la nomenclatura arbitraria degli oggetti, ha
mostrato che questa flessibilità non porta vantaggi significativi e
può causare confusione.I nomi possono contenere ogni carattere non blank (i caratteri di
spazio, tabulazione, cambio riga) ma è consigliato limitarsi a
lettere, cifre e il carattere di underscore (il carattere di
sottolineatura). I nomi di volumi, plex e sottodischi possono essere
lunghi fino a 64 caratteri, i nomi di drive invece hanno un massimo di 32
caratteri./dev/vinumI nomi assegnati agli oggetti Vinum sono nella gerarchia
/dev/vinum.
La configurazione di Vinum mostrata sopra creerebbe i seguenti
dispositivi:I dispositivi di controllo
/dev/vinum/control e
/dev/vinum/controld, utilizzati
rispettivamente da &man.vinum.8; e dal demone Vinum.Voci di dispositivi a blocchi e a caratteri per ogni volume.
Questi sono i principali dispositivi utilizzati da Vinum. I
dispositivi a blocchi hanno il nome dei relativi volumi, quelli a
caratteri, seguendo la tradizione BSD, hanno una lettera
r all'inizio del nome. Quindi la configurazione
vista sopra genererebbe i dispositivi a blocchi
/dev/vinum/myvol,
/dev/vinum/mirror,
/dev/vinum/striped,
/dev/vinum/raid5 e
/dev/vinum/raid10, e i dispositivi a
caratteri /dev/vinum/rmyvol,
/dev/vinum/rmirror,
/dev/vinum/rstriped,
/dev/vinum/rraid5 e
/dev/vinum/rraid10.
In questo c'è un ovvio problema: è possibile avere due
volumi chiamati r e rr che
avrebbero un conflitto nel creare il nodo
/dev/vinum/rr: sarebbe il dispositivo a
caratteri per il volume r o il dispositivo a
blocchi per il volume rr? Attualmente Vinum non
si interessa di questo conflitto: il volume definito per primo prende
il nome.Una directory /dev/vinum/drive con voci
per ogni disco. Queste voci sono in effetti dei collegamenti simbolici
ai rispettivi nodi di disco.Una directory /dev/vinum/volume con voci per
ogni volume. Contiene sottodirectory per ogni plex, che a loro volta
contengono sottodirectory per ogni sottodisco.Le directory /dev/vinum/plex,
/dev/vinum/sd e
/dev/vinum/rsd contengono i dispositivi a
blocchi per ogni plex, dispositivo a blocchi e dispositivo a caratteri
per ogni sottodisco rispettivamente.Ad esempio, considera il seguente file di configurazione: drive drive1 device /dev/sd1h
drive drive2 device /dev/sd2h
drive drive3 device /dev/sd3h
drive drive4 device /dev/sd4h
volume s64 setupstate
plex org striped 64k
sd length 100m drive drive1
sd length 100m drive drive2
sd length 100m drive drive3
sd length 100m drive drive4Dopo aver elaborato questo file, &man.vinum.8; crea la seguente
struttura in /dev/vinum: brwx------ 1 root wheel 25, 0x40000001 Apr 13 16:46 Control
brwx------ 1 root wheel 25, 0x40000002 Apr 13 16:46 control
brwx------ 1 root wheel 25, 0x40000000 Apr 13 16:46 controld
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 drive
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 plex
crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 rs64
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 rsd
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 rvol
brwxr-xr-- 1 root wheel 25, 2 Apr 13 16:46 s64
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 sd
drwxr-xr-x 3 root wheel 512 Apr 13 16:46 vol
/dev/vinum/drive:
total 0
lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive1 -> /dev/sd1h
lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive2 -> /dev/sd2h
lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive3 -> /dev/sd3h
lrwxr-xr-x 1 root wheel 9 Apr 13 16:46 drive4 -> /dev/sd4h
/dev/vinum/plex:
total 0
brwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0
/dev/vinum/rsd:
total 0
crwxr-xr-- 1 root wheel 91, 0x20000002 Apr 13 16:46 s64.p0.s0
crwxr-xr-- 1 root wheel 91, 0x20100002 Apr 13 16:46 s64.p0.s1
crwxr-xr-- 1 root wheel 91, 0x20200002 Apr 13 16:46 s64.p0.s2
crwxr-xr-- 1 root wheel 91, 0x20300002 Apr 13 16:46 s64.p0.s3
/dev/vinum/rvol:
total 0
crwxr-xr-- 1 root wheel 91, 2 Apr 13 16:46 s64
/dev/vinum/sd:
total 0
brwxr-xr-- 1 root wheel 25, 0x20000002 Apr 13 16:46 s64.p0.s0
brwxr-xr-- 1 root wheel 25, 0x20100002 Apr 13 16:46 s64.p0.s1
brwxr-xr-- 1 root wheel 25, 0x20200002 Apr 13 16:46 s64.p0.s2
brwxr-xr-- 1 root wheel 25, 0x20300002 Apr 13 16:46 s64.p0.s3
/dev/vinum/vol:
total 1
brwxr-xr-- 1 root wheel 25, 2 Apr 13 16:46 s64
drwxr-xr-x 3 root wheel 512 Apr 13 16:46 s64.plex
/dev/vinum/vol/s64.plex:
total 1
brwxr-xr-- 1 root wheel 25, 0x10000002 Apr 13 16:46 s64.p0
drwxr-xr-x 2 root wheel 512 Apr 13 16:46 s64.p0.sd
/dev/vinum/vol/s64.plex/s64.p0.sd:
total 0
brwxr-xr-- 1 root wheel 25, 0x20000002 Apr 13 16:46 s64.p0.s0
brwxr-xr-- 1 root wheel 25, 0x20100002 Apr 13 16:46 s64.p0.s1
brwxr-xr-- 1 root wheel 25, 0x20200002 Apr 13 16:46 s64.p0.s2
brwxr-xr-- 1 root wheel 25, 0x20300002 Apr 13 16:46 s64.p0.s3Benché sia raccomandato non allocare nomi specifici a plex e
sottodischi, i drive di Vinum devono avere un nome. Questo permette di
spostare un disco in una differente locazione e continuare a riconoscerlo
automaticamente. I nomi di drive possono essere lunghi fino a 32
caratteri.
- Creare i filesystem
+ Creare i file systemI volumi appaiono al sistema identici ai dischi, con un'eccezione.
Differentemente dai dischi UNIX™, Vinum non partiziona i volumi,
che quindi non contengono una tabella delle partizioni. Questo ha reso
necessario modificare alcuni programmi di utilità del disco, tra
- cui newfs, che prcedentemente cercava di interpretare
- l'ultima lettera di un volume Vinum come un identificatore di
- partizione. Ad esempio un disco potrebbe avere un nome come
- /dev/wd0a o /dev/da2h.
+ cui &man.newfs.8;, che prcedentemente cercava di interpretare l'ultima
+ lettera di un volume Vinum come un identificatore di partizione.
+ Ad esempio un disco potrebbe avere un nome come
+ /dev/ad0a o /dev/da2h.
Questi nomi rappresentano la prima partizione
(a) del primo (0) disco IDE
- (wd) e l'ottava partizione
+ (ad) e l'ottava partizione
(h) del terzo (2) disco SCSI
(da), rispettivamente. Al contrario un volume
Vinum potrebbe essere chiamato
/dev/vinum/concat, un nome che non ha alcuna
relazione con nomi di partizione.Normalmente &man.newfs.8; interpreta il nome del disco e si lamenta
se non riesce a comprenderlo. Per esempio:&prompt.root; newfs /dev/vinum/concat
newfs: /dev/vinum/concat: can't figure out file system partition
- Per poter creare un filesystem su questo volume usa &man.newfs.8;
- con l'opzione -v:
+ Per poter creare un file system su questo volume usa &man.newfs.8;
+ con l'opzione :&prompt.root; newfs -v /dev/vinum/concatConfigurare VinumIl kernel GENERIC non contiene Vinum.
È possibile creare un kernel speciale che lo contenga, ma questo
non è raccomandato: il metodo standard per lanciare Vinum è
come modulo del kernel (kld). Non è neanche
necessario usare &man.kldload.8; per Vinum: quando lanci &man.vinum.8; il
programma controlla se il modulo è stato caricato e, in caso non
sia caricato, lo carica automaticamente.AvvioVinum immagazzina le informazioni sulla configurazione dei dischi
essenzialmente nella stessa forma dei file di configurazione. Quando
legge il database di configurazione Vinum riconosce un numero di
parole chiave che non sono permesse nei file di configurazione, ad
esempio un file di configurazione del disco potrebbe contenere il
seguente testo:volume myvol state up
volume bigraid state down
plex name myvol.p0 state up org concat vol myvol
plex name myvol.p1 state up org concat vol myvol
plex name myvol.p2 state init org striped 512b vol myvol
plex name bigraid.p0 state initializing org raid5 512b vol bigraid
sd name myvol.p0.s0 drive a plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 0b
sd name myvol.p0.s1 drive b plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 1048576b
sd name myvol.p1.s0 drive c plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 0b
sd name myvol.p1.s1 drive d plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 1048576b
sd name myvol.p2.s0 drive a plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 0b
sd name myvol.p2.s1 drive b plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 524288b
sd name myvol.p2.s2 drive c plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1048576b
sd name myvol.p2.s3 drive d plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1572864b
sd name bigraid.p0.s0 drive a plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 0b
sd name bigraid.p0.s1 drive b plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 4194304b
sd name bigraid.p0.s2 drive c plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 8388608b
sd name bigraid.p0.s3 drive d plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 12582912b
sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 16777216bLe ovvie differenze sono qua la presenza di informazioni esplicite
sulle locazioni e sulla nomenclatura (entrambe permesse, ma scoraggiate,
all'utente) e le informazioni sugli stati (che non sono disponibili
all'utente). Vinum non immagazzina informazioni sui drive tra le
informazioni della configurazione: trova i drive scandendo le partizioni
dei dischi configurati alla ricerca di un'etichetta Vinum. Questo
permette a Vinum di identificare i drive correttamente anche se gli
è stato assegnato un differente codice identificativo di drive
UNIX™.Avvio automaticoPer poter lanciare Vinum automaticamente all'avvio del sistema
assicuratevi che le seguenti linee siano nel vostro
/etc/rc.conf:start_vinum="YES" # set to YES to start vinumSe non hai un file /etc/rc.conf, creane uno
con questo contenuto. Questo ordinerà al sistema di caricare
il Vinum kld all'avvio, inizializzando ogni oggetto
menzionato nella configurazione. Questo viene fatto prima del mount
- dei filesystem quindi è possibile fare automaticamente
- &man.fsck.8; e mount dei filesystem su volumi Vinum.
+ dei file system quindi è possibile fare automaticamente
+ &man.fsck.8; e mount dei file system su volumi Vinum.
Quando esegui Vinum con il comando vinum start
Vinum legge il database di configurazione da uno dei drive Vinum. In
circostanze normali ogni drive contiene una copia identica del
database di configurazione quindi non conta da quale disco viene
letto. Dopo un crash, tuttavia, Vinum deve determinare quale drive
è stato aggiornato più recentemente e leggere la
configurazione da questo drive. Quindi aggiorna la configurazione, se
necessario, sui drive progressivamente più vecchi.
diff --git a/it_IT.ISO8859-15/books/handbook/vinum/vinum-concat.pic b/it_IT.ISO8859-15/books/handbook/vinum/vinum-concat.pic
deleted file mode 100644
index ab31b2a7ea..0000000000
--- a/it_IT.ISO8859-15/books/handbook/vinum/vinum-concat.pic
+++ /dev/null
@@ -1,78 +0,0 @@
-.\" $FreeBSD$
-.PS
-h = .3i
-dh = .02i
-dw = .8i
-down
-[
- [
- boxht = h; boxwid = dw
-.\"
-.\" ORIG: box invis "\f(CW0\fP"
-.\" box invis "\f(CW1\fP"
-.\" box invis "\f(CW2\fP"
-.\" box invis "\f(CW3\fP"
-.\" box invis "\f(CW4\fP"
-.\" box invis "\f(CW5\fP"
-
-.\" A: box dotted at ORIG.e+(.4,0) ht h "\f(CW0\fP"
-move right 1i; down
- A: box dotted ht h "\f(CW0\fP"
- B: box dotted ht h "\f(CW1\fP"
- C: box dotted ht h "\f(CW2\fP"
- D: box dotted ht h "\f(CW3\fP"
- E: box dotted ht h "\f(CW4\fP"
- F: box dotted ht h "\f(CW5\fP"
- box ht h * 6 at C.s
-
- A1: box dotted at A+(dw*1.6,0) ht h "\f(CW6\fP"
- B1: box dotted ht h "\f(CW7\fP"
- C1: box dotted ht h "\f(CW8\fP"
- D1: box dotted ht h "\f(CW9\fP"
- box ht h * 4 at C1.n
-
- A2: box dotted at A1+(dw*1.6,0) "\f(CW10\fP"
- F2: box dotted ht h "\f(CW11\fP"
- box ht h * 2 at A2.s
-
- A3: box dotted at A2+(dw*1.6,0) ht h "\f(CW12\fP"
- B3: box dotted ht h "\f(CW13\fP"
- C3: box dotted ht h "\f(CW14\fP"
- D3: box dotted ht h "\f(CW15\fP"
- E3: box dotted ht h "\f(CW16\fP"
- F3: box dotted ht h "\f(CW17\fP"
- box ht h * 6 at C3.s
-
-.\" "Offset" at ORIG.n+(0,.2i)
-"Disk 1" at A.n+(0,.2i)
-"Disk 2" at A1.n+(0,.2i)
-"Disk 3" at A2.n+(0,.2i)
-"Disk 4" at A3.n+(0,.2i)
-
-
-.\" arrow from A.e+(-.07,-.04) to B.e+(-.07,.02)
-.\" arrow from B.e+(-.07,-.04) to C.e+(-.07,.02)
-.\" arrow from C.e+(-.07,-.04) to D.e+(-.07,.02)
-.\" arrow from D.e+(-.07,-.04) to E.e+(-.07,.02)
-.\" arrow from E.e+(-.07,-.04) to F.e+(-.07,.02)
-
-.\" line from F.e right .1i; arc radius .1i; line to A1.w-(.3i,.1i); arc cw radius .1i; arrow to A1.w
-
-.\" arrow from A1.e+(-.07,-.04) to B1.e+(-.07,.02)
-.\" arrow from B1.e+(-.07,-.04) to C1.e+(-.07,.02)
-.\" arrow from C1.e+(-.07,-.04) to D1.e+(-.07,.02)
-
-.\" line from D1.e right .1i; arc radius .1i; line to A2.w-(.3i,.1i); arc cw radius .1i; arrow to A2.w
-
-.\" arrow from A2.e+(-.07,-.04) to F2.e+(-.07,.02)
-
-.\" line from F2.e right .1i; arc radius .1i; line to A3.w-(.3i,.1i); arc cw radius .1i; arrow to A3.w
-
-.\" arrow from A3.e+(-.07,-.04) to B3.e+(-.07,.02)
-.\" arrow from B3.e+(-.07,-.04) to C3.e+(-.07,.02)
-.\" arrow from C3.e+(-.07,-.04) to D3.e+(-.07,.02)
-.\" arrow from D3.e+(-.07,-.04) to E3.e+(-.07,.02)
-.\" arrow from E3.e+(-.07,-.04) to F3.e+(-.07,.02)
- ]
-]
-.PE
diff --git a/it_IT.ISO8859-15/books/handbook/vinum/vinum-mirrored-vol.pic b/it_IT.ISO8859-15/books/handbook/vinum/vinum-mirrored-vol.pic
deleted file mode 100644
index cc997a0b8d..0000000000
--- a/it_IT.ISO8859-15/books/handbook/vinum/vinum-mirrored-vol.pic
+++ /dev/null
@@ -1,25 +0,0 @@
-.\" $FreeBSD$
-.PS
-move right 1i
-T: ellipse ht .3i wid 4i
- line from T.e down 4i
- line from T.w down 4i
-B: arc rad 10i to T.e+(0,-4)
-
-P1: S1: box ht 3i wid 1i "Subdisk 1" above "\s-2\f(CWmirror.p0.s0\fP\s0" below with .c at T.c+(-1,-2)
- "Plex 1" at S1.s+(0,-.3)
- move down .17i; "\s-2\f(CWmirror.p0\fP\s0"
-P2: S3: box ht 3i wid 1i "Subdisk 2" above "\s-2\f(CWmirror.p1.s0\fP\s0" below with .c at T.c+(1,-2)
- "Plex 2" at S3.s+(0,-.3)
- move down .17i; "\s-2\f(CWmirror.p1\fP\s0"
-
-"\s-2\&0 MB\s0" at S1.ne+(.5,0)
-"\s-2\&512 MB\s0" at S1.se+(.5,0)
-
-A: arrow from S1.ne+(.1,0) to S1.se+(.1,0)
- arrow from S1.se+(.1,0) to S1.ne+(.1,0)
-
- "\s-2volume" ljust at A.n+(.1,-.63)
- "address" ljust at A.n+(.1,-.8)
- "space\s0" ljust at A.n+(.1,-.97)
-.PE
diff --git a/it_IT.ISO8859-15/books/handbook/vinum/vinum-raid10-vol.pic b/it_IT.ISO8859-15/books/handbook/vinum/vinum-raid10-vol.pic
deleted file mode 100644
index cfe25cd077..0000000000
--- a/it_IT.ISO8859-15/books/handbook/vinum/vinum-raid10-vol.pic
+++ /dev/null
@@ -1,108 +0,0 @@
-.\" $FreeBSD$
-.PS
-move right 1i
-T: ellipse ht .3i wid 4i
- line from T.e down 4i
- line from T.w down 4i
-B: arc rad 10i to T.e+(0,-4)
-
-P1: S1: box ht .6i wid 1i with .c at T.w+(1.3,-0.825)
- S2: box ht .6i wid 1i
- S3: box ht .6i wid 1i
- S4: box ht .6i wid 1i
- S5: box ht .6i wid 1i
- "Plex 1" at S5.s+(0,-.3)
- move down .17i; "\s-2\f(CWstriped.p0\fP\s0"
-
-P1: S11: box ht .6i wid 1i with .c at T.w+(3.3,-0.825)
- S12: box ht .6i wid 1i
- S13: box ht .6i wid 1i
- S14: box ht .6i wid 1i
- S15: box ht .6i wid 1i
- "Plex 2" at S15.s+(0,-.3)
- move down .17i; "\s-2\f(CWstriped.p1\fP\s0"
-
- "\f(CW\s-2.p0.s0\fP\s0" at S1.w-(.2,0) rjust
- "\f(CW\s-2.p0.s1\fP\s0" at S2.w-(.2,0) rjust
- "\f(CW\s-2.p0.s2\fP\s0" at S3.w-(.2,0) rjust
- "\f(CW\s-2.p0.s3\fP\s0" at S4.w-(.2,0) rjust
- "\f(CW\s-2.p0.s4\fP\s0" at S5.w-(.2,0) rjust
-
- "\f(CW\s-2.p1.s0\fP\s0" at S11.w-(.2,0) rjust
- "\f(CW\s-2.p1.s1\fP\s0" at S12.w-(.2,0) rjust
- "\f(CW\s-2.p1.s2\fP\s0" at S13.w-(.2,0) rjust
- "\f(CW\s-2.p1.s3\fP\s0" at S14.w-(.2,0) rjust
- "\f(CW\s-2.p1.s4\fP\s0" at S15.w-(.2,0) rjust
-
-.\" Stripes
- box filled .1 wid 1i ht .1i at S1.n+(0, -.05)
- box filled .2 wid 1i ht .1i at S1.n+(0, -.15)
- box filled .3 wid 1i ht .1i at S1.n+(0, -.25)
- box filled .4 wid 1i ht .1i at S1.n+(0, -.35)
- box filled .5 wid 1i ht .1i at S1.n+(0, -.45)
- box filled .6 wid 1i ht .1i at S1.n+(0, -.55)
-
- box filled .1 wid 1i ht .1i at S2.n+(0, -.05)
- box filled .2 wid 1i ht .1i at S2.n+(0, -.15)
- box filled .3 wid 1i ht .1i at S2.n+(0, -.25)
- box filled .4 wid 1i ht .1i at S2.n+(0, -.35)
- box filled .5 wid 1i ht .1i at S2.n+(0, -.45)
- box filled .6 wid 1i ht .1i at S2.n+(0, -.55)
-
- box filled .1 wid 1i ht .1i at S3.n+(0, -.05)
- box filled .2 wid 1i ht .1i at S3.n+(0, -.15)
- box filled .3 wid 1i ht .1i at S3.n+(0, -.25)
- box filled .4 wid 1i ht .1i at S3.n+(0, -.35)
- box filled .5 wid 1i ht .1i at S3.n+(0, -.45)
- box filled .6 wid 1i ht .1i at S3.n+(0, -.55)
-
- box filled .1 wid 1i ht .1i at S4.n+(0, -.05)
- box filled .2 wid 1i ht .1i at S4.n+(0, -.15)
- box filled .3 wid 1i ht .1i at S4.n+(0, -.25)
- box filled .4 wid 1i ht .1i at S4.n+(0, -.35)
- box filled .5 wid 1i ht .1i at S4.n+(0, -.45)
- box filled .6 wid 1i ht .1i at S4.n+(0, -.55)
-
- box filled .1 wid 1i ht .1i at S5.n+(0, -.05)
- box filled .2 wid 1i ht .1i at S5.n+(0, -.15)
- box filled .3 wid 1i ht .1i at S5.n+(0, -.25)
- box filled .4 wid 1i ht .1i at S5.n+(0, -.35)
- box filled .5 wid 1i ht .1i at S5.n+(0, -.45)
- box filled .6 wid 1i ht .1i at S5.n+(0, -.55)
-
- box filled .1 wid 1i ht .1i at S11.n+(0, -.05)
- box filled .2 wid 1i ht .1i at S11.n+(0, -.15)
- box filled .3 wid 1i ht .1i at S11.n+(0, -.25)
- box filled .4 wid 1i ht .1i at S11.n+(0, -.35)
- box filled .5 wid 1i ht .1i at S11.n+(0, -.45)
- box filled .6 wid 1i ht .1i at S11.n+(0, -.55)
-
- box filled .1 wid 1i ht .1i at S12.n+(0, -.05)
- box filled .2 wid 1i ht .1i at S12.n+(0, -.15)
- box filled .3 wid 1i ht .1i at S12.n+(0, -.25)
- box filled .4 wid 1i ht .1i at S12.n+(0, -.35)
- box filled .5 wid 1i ht .1i at S12.n+(0, -.45)
- box filled .6 wid 1i ht .1i at S12.n+(0, -.55)
-
- box filled .1 wid 1i ht .1i at S13.n+(0, -.05)
- box filled .2 wid 1i ht .1i at S13.n+(0, -.15)
- box filled .3 wid 1i ht .1i at S13.n+(0, -.25)
- box filled .4 wid 1i ht .1i at S13.n+(0, -.35)
- box filled .5 wid 1i ht .1i at S13.n+(0, -.45)
- box filled .6 wid 1i ht .1i at S13.n+(0, -.55)
-
- box filled .1 wid 1i ht .1i at S14.n+(0, -.05)
- box filled .2 wid 1i ht .1i at S14.n+(0, -.15)
- box filled .3 wid 1i ht .1i at S14.n+(0, -.25)
- box filled .4 wid 1i ht .1i at S14.n+(0, -.35)
- box filled .5 wid 1i ht .1i at S14.n+(0, -.45)
- box filled .6 wid 1i ht .1i at S14.n+(0, -.55)
-
- box filled .1 wid 1i ht .1i at S15.n+(0, -.05)
- box filled .2 wid 1i ht .1i at S15.n+(0, -.15)
- box filled .3 wid 1i ht .1i at S15.n+(0, -.25)
- box filled .4 wid 1i ht .1i at S15.n+(0, -.35)
- box filled .5 wid 1i ht .1i at S15.n+(0, -.45)
- box filled .6 wid 1i ht .1i at S15.n+(0, -.55)
-
-.PE
diff --git a/it_IT.ISO8859-15/books/handbook/vinum/vinum-raid5-org.pic b/it_IT.ISO8859-15/books/handbook/vinum/vinum-raid5-org.pic
deleted file mode 100644
index 8852975aec..0000000000
--- a/it_IT.ISO8859-15/books/handbook/vinum/vinum-raid5-org.pic
+++ /dev/null
@@ -1,84 +0,0 @@
-.\" $FreeBSD$
-.PS
-h = .3i
-dh = .02i
-dw = .8i
-down
-[
- [
- boxht = h; boxwid = dw
-
-.\" ORIG: box invis "\f(CW0\fP"
-.\" box invis "\f(CW1\fP"
-.\" box invis "\f(CW2\fP"
-.\" box invis "\f(CW3\fP"
-.\" box invis "\f(CW4\fP"
-.\" box invis "\f(CW5\fP"
-.\"
-.\"
-move right 1i; down
- A: box ht h "\f(CW0\fP"
- B: box ht h "\f(CW3\fP"
- C: box ht h "\f(CW6\fP"
- D: box ht h "Parity" filled 0.2
- E: box ht h "\f(CW12\fP"
- F: box ht h "\f(CW15\fP"
-
- A1: box at A+(dw*1.6,0) ht h "\f(CW1\fP"
- B1: box ht h "\f(CW4\fP"
- C1: box ht h "Parity" filled 0.2
- D1: box ht h "\f(CW9\fP"
- E1: box ht h "\f(CW13\fP"
- F1: box ht h "\f(CW16\fP"
-
- A2: box at A1+(dw*1.6,0) ht h "\f(CW2\fP"
- B2: box ht h "Parity" filled 0.2
- C2: box ht h "\f(CW7\fP"
- D2: box ht h "\f(CW10\fP"
- E2: box ht h "\f(CW14\fP"
- F2: box ht h "Parity" filled 0.2
-
- A3: box at A2+(dw*1.6,0) ht h "Parity" filled 0.2
- B3: box ht h "\f(CW5\fP"
- C3: box ht h "\f(CW8\fP"
- D3: box ht h "\f(CW11\fP"
- E3: box ht h "Parity" filled 0.2
- F3: box ht h "\f(CW17\fP"
-
-.\" "Offset" at ORIG.n+(0,.2i)
-"Disk 1" at A.n+(0,.2i)
-"Disk 2" at A1.n+(0,.2i)
-"Disk 3" at A2.n+(0,.2i)
-"Disk 4" at A3.n+(0,.2i)
-
-.\" arrow from A.e to A1.w
-.\" arrow from B.e to B1.w
-.\" arrow from C.e to C1.w
-.\" arrow from D.e to D1.w
-.\" arrow from E.e to E1.w
-.\" arrow from F.e to F1.w
-.\"
-.\" arrow from A1.e to A2.w
-.\" arrow from B1.e to B2.w
-.\" arrow from C1.e to C2.w
-.\" arrow from D1.e to D2.w
-.\" arrow from E1.e to E2.w
-.\" arrow from F1.e to F2.w
-.\"
-.\" arrow from A2.e to A3.w
-.\" arrow from B2.e to B3.w
-.\" arrow from C2.e to C3.w
-.\" arrow from D2.e to D3.w
-.\" arrow from E2.e to E3.w
-.\" arrow from F2.e to F3.w
-.\"
-.\" arrow right .2i from A3.e
-.\" arrow right .2i from B3.e
-.\" arrow right .2i from C3.e
-.\" arrow right .2i from D3.e
-.\" arrow right .2i from E3.e
-.\" arrow right .2i from F3.e
- ]
-]
-.PE
-.Figure-heading "RAID-5 organization"
diff --git a/it_IT.ISO8859-15/books/handbook/vinum/vinum-simple-vol.pic b/it_IT.ISO8859-15/books/handbook/vinum/vinum-simple-vol.pic
deleted file mode 100644
index 59385c7149..0000000000
--- a/it_IT.ISO8859-15/books/handbook/vinum/vinum-simple-vol.pic
+++ /dev/null
@@ -1,21 +0,0 @@
-.\" $FreeBSD$
-.PS
-move right 1i
-T: ellipse ht .3i wid 4i
- line from T.e down 4i
- line from T.w down 4i
-B: arc rad 10i to T.e+(0,-4)
-
-P1: S1: box ht 3i wid 1i "Subdisk" above "\s-2\f(CWmyvol.p0.s0\fP\s0" below with .c at T.w+(2,-1.95)
- "Plex 1" at S1.s+(0,-.3)
- move down .17i; "\s-2\f(CWmyvol.p0\fP\s0"
-
-"\s-2\&0 MB\s0" at S1.ne+(.5,0)
-"\s-2\&512 MB\s0" at S1.se+(.5,0)
-
-A: arrow from S1.ne+(.1,0) to S1.se+(.1,0)
-
- "\s-2volume" ljust at A.n+(.1,-.63)
- "address" ljust at A.n+(.1,-.8)
- "space\s0" ljust at A.n+(.1,-.97)
-.PE
diff --git a/it_IT.ISO8859-15/books/handbook/vinum/vinum-striped-vol.pic b/it_IT.ISO8859-15/books/handbook/vinum/vinum-striped-vol.pic
deleted file mode 100644
index 0014a576a3..0000000000
--- a/it_IT.ISO8859-15/books/handbook/vinum/vinum-striped-vol.pic
+++ /dev/null
@@ -1,62 +0,0 @@
-.\" $FreeBSD$
-.PS
-move right 1i
-T: ellipse ht .3i wid 4i
- line from T.e down 4i
- line from T.w down 4i
-B: arc rad 10i to T.e+(0,-4)
-
-P1: S1: box ht .7i wid 1i with .c at T.w+(2,-0.825)
- S2: box ht .7i wid 1i
- S3: box ht .7i wid 1i
- S4: box ht .7i wid 1i
- "Plex 1" at S4.s+(0,-.3)
- move down .17i; "\s-2\f(CWstriped.p0\fP\s0"
-
-"\s-2\&0 MB\s0" at S1.ne+(.5,0)
-"\s-2\&512 MB\s0" at S4.se+(.5,0)
-
-A: arrow from S1.ne+(.1,0) to S4.se+(.1,0)
-
- "\s-2volume" ljust at A.n+(.1,-.63)
- "address" ljust at A.n+(.1,-.8)
- "space\s0" ljust at A.n+(.1,-.97)
- "\f(CW\s-2striped.p0.s0\fP\s0" at S1.w-(.2,0) rjust
- "\f(CW\s-2striped.p0.s1\fP\s0" at S2.w-(.2,0) rjust
- "\f(CW\s-2striped.p0.s2\fP\s0" at S3.w-(.2,0) rjust
- "\f(CW\s-2striped.p0.s3\fP\s0" at S4.w-(.2,0) rjust
-
-.\" Stripes
- box filled .1 wid 1i ht .1i at S1.n+(0, -.05)
- box filled .2 wid 1i ht .1i at S1.n+(0, -.15)
- box filled .3 wid 1i ht .1i at S1.n+(0, -.25)
- box filled .4 wid 1i ht .1i at S1.n+(0, -.35)
- box filled .5 wid 1i ht .1i at S1.n+(0, -.45)
- box filled .6 wid 1i ht .1i at S1.n+(0, -.55)
- box filled .7 wid 1i ht .1i at S1.n+(0, -.65)
-
- box filled .1 wid 1i ht .1i at S2.n+(0, -.05)
- box filled .2 wid 1i ht .1i at S2.n+(0, -.15)
- box filled .3 wid 1i ht .1i at S2.n+(0, -.25)
- box filled .4 wid 1i ht .1i at S2.n+(0, -.35)
- box filled .5 wid 1i ht .1i at S2.n+(0, -.45)
- box filled .6 wid 1i ht .1i at S2.n+(0, -.55)
- box filled .7 wid 1i ht .1i at S2.n+(0, -.65)
-
- box filled .1 wid 1i ht .1i at S3.n+(0, -.05)
- box filled .2 wid 1i ht .1i at S3.n+(0, -.15)
- box filled .3 wid 1i ht .1i at S3.n+(0, -.25)
- box filled .4 wid 1i ht .1i at S3.n+(0, -.35)
- box filled .5 wid 1i ht .1i at S3.n+(0, -.45)
- box filled .6 wid 1i ht .1i at S3.n+(0, -.55)
- box filled .7 wid 1i ht .1i at S3.n+(0, -.65)
-
- box filled .1 wid 1i ht .1i at S4.n+(0, -.05)
- box filled .2 wid 1i ht .1i at S4.n+(0, -.15)
- box filled .3 wid 1i ht .1i at S4.n+(0, -.25)
- box filled .4 wid 1i ht .1i at S4.n+(0, -.35)
- box filled .5 wid 1i ht .1i at S4.n+(0, -.45)
- box filled .6 wid 1i ht .1i at S4.n+(0, -.55)
- box filled .7 wid 1i ht .1i at S4.n+(0, -.65)
-
-.PE
diff --git a/it_IT.ISO8859-15/books/handbook/vinum/vinum-striped.pic b/it_IT.ISO8859-15/books/handbook/vinum/vinum-striped.pic
deleted file mode 100644
index 7563fabfee..0000000000
--- a/it_IT.ISO8859-15/books/handbook/vinum/vinum-striped.pic
+++ /dev/null
@@ -1,84 +0,0 @@
-.\" $FreeBSD$
-.PS
-h = .3i
-dh = .02i
-dw = .8i
-down
-[
- [
- boxht = h; boxwid = dw
-
-.\" ORIG: box invis "\f(CW0\fP"
-.\" box invis "\f(CW1\fP"
-.\" box invis "\f(CW2\fP"
-.\" box invis "\f(CW3\fP"
-.\" box invis "\f(CW4\fP"
-.\" box invis "\f(CW5\fP"
-.\"
-.\" A: box at ORIG.e+(.4,0) ht h "\f(CW0\fP"
-move right 1i; down
- A: box ht h "\f(CW0\fP"
- B: box ht h "\f(CW4\fP"
- C: box ht h "\f(CW8\fP"
- D: box ht h "\f(CW12\fP"
- E: box ht h "\f(CW16\fP"
- F: box ht h "\f(CW20\fP"
-
- A1: box at A+(dw*1.6,0) ht h "\f(CW1\fP"
- B1: box ht h "\f(CW5\fP"
- C1: box ht h "\f(CW9\fP"
- D1: box ht h "\f(CW13\fP"
- E1: box ht h "\f(CW17\fP"
- F1: box ht h "\f(CW21\fP"
-
- A2: box at A1+(dw*1.6,0) ht h "\f(CW2\fP"
- B2: box ht h "\f(CW6\fP"
- C2: box ht h "\f(CW10\fP"
- D2: box ht h "\f(CW14\fP"
- E2: box ht h "\f(CW18\fP"
- F2: box ht h "\f(CW22\fP"
-
- A3: box at A2+(dw*1.6,0) ht h "\f(CW3\fP"
- B3: box ht h "\f(CW7\fP"
- C3: box ht h "\f(CW11\fP"
- D3: box ht h "\f(CW15\fP"
- E3: box ht h "\f(CW19\fP"
- F3: box ht h "\f(CW23\fP"
-
-.\" "Offset" at ORIG.n+(0,.2i)
-"Disk 1" at A.n+(0,.2i)
-"Disk 2" at A1.n+(0,.2i)
-"Disk 3" at A2.n+(0,.2i)
-"Disk 4" at A3.n+(0,.2i)
-
-.\"
-.\" arrow from A.e to A1.w
-.\" arrow from B.e to B1.w
-.\" arrow from C.e to C1.w
-.\" arrow from D.e to D1.w
-.\" arrow from E.e to E1.w
-.\" arrow from F.e to F1.w
-.\"
-.\" arrow from A1.e to A2.w
-.\" arrow from B1.e to B2.w
-.\" arrow from C1.e to C2.w
-.\" arrow from D1.e to D2.w
-.\" arrow from E1.e to E2.w
-.\" arrow from F1.e to F2.w
-.\"
-.\" arrow from A2.e to A3.w
-.\" arrow from B2.e to B3.w
-.\" arrow from C2.e to C3.w
-.\" arrow from D2.e to D3.w
-.\" arrow from E2.e to E3.w
-.\" arrow from F2.e to F3.w
-.\"
-.\" arrow right .2i from A3.e
-.\" arrow right .2i from B3.e
-.\" arrow right .2i from C3.e
-.\" arrow right .2i from D3.e
-.\" arrow right .2i from E3.e
-.\" arrow right .2i from F3.e
- ]
-]
-.PE