Per 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 contenente 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 sono 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.
I 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.
Vinum 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.
Vinum implementa sia la concatenazione che lo striping al livello di plex:
Un plex concatenato usa 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.
La versione di Vinum distribuita con FreeBSD 9.1 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”): ovvero situazioni 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 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 Tabella 20-1 riassume vantaggi e svantaggi di ogni tipo di organizzazione dei plex.
Tabella 20-1. Organizzazione dei Plex Vinum
Tipo di plex | Sottodischi minimi | Sottodischi aggiungibili | Dimensioni forzatamente uguali | Applicazione |
---|---|---|---|---|
concatenato | 1 | sì | no | Immagazzinamento di grandi moli di dati con la massima flessibilità e prestazioni moderate |
striping | 2 | no | sì | Alte prestazioni in casi di accessi altamente concorrenti |
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>.