I file system possono estendersi su più dischi fisici. Potresti avere familiarità con il concetto di "partizioni", in cui un supporto fisico è suddiviso in più volumi logici, ad es. un disco rigido in un'installazione tipica di Windows potrebbe avere una partizione C:
e D:
. Tuttavia, questo non deve essere una mappatura 1: n e alcuni file system possono gestire n: m mappature tra unità e volumi / file system.
La motivazione principale per un livello di astrazione tra volumi logici e dischi fisici non è la potenziale maggiore capacità di archiviazione, ma maggiore flessibilità e migliore tolleranza d'errore, specialmente in un'impostazione del server: quando un disco rigido si guasta, voglio che il server continui in esecuzione senza interruzioni o tempi di inattività, anche quando sostituisco il disco guasto. Questa tolleranza di errore implica che gli stessi dati vengano replicati su più dischi rigidi (ad esempio in una configurazione RAID-6); la possibilità di eseguire l'hot-swap di un'unità richiede che le applicazioni non siano consapevoli dei dischi fisici (ad esempio, utilizzano solo il file system, non accedono direttamente al dispositivo).
Questa funzionalità può essere fornita dai controller del disco hardware che si presentano al sistema operativo come un singolo disco, ma in realtà contengono più unità. Tuttavia, ci sono anche approcci software. Su Linux, è possibile utilizzare Logical Volume Manager per implementare partizioni multi-drive, spostare partizioni tra le unità o per unità hot-swap. Il file system ZFS è stato creato per supportare enormi quantità di dati e include una gestione sofisticata di grandi pool di unità fisiche. Un file system ZFS è distribuito su tutti i dischi nel suo pool e può supportare lo swapping a caldo se in una configurazione RAID adeguata.
Ad esempio, ho configurato un server con un pool ZFS da ~ 1TB su dischi 10 × 150 GB. Il livello RAID scelto può resistere a due guasti del disco e uno dei dischi è un hot spare che verrà utilizzato per ripristinare il pool fino a quando i dischi guasti possono essere scambiati. Ovviamente, questo potrebbe essere scalato con dischi più grandi. Per esempio. con 20 dischi da 2 TB, li configurerei in un pool da 30 TB.
Il livello RAID scelto ha implicazioni sulle prestazioni. Poiché un file è tipicamente distribuito su più dischi, la sua lettura può utilizzare la larghezza di banda combinata di tutte le unità. Tuttavia, le prestazioni in scrittura vengono ridotte quando lo stesso file viene scritto su più unità per la tolleranza agli errori.
Con tecniche come RAID o Storage Area Networks, c'è molto che puoi fare per espandere la capacità di archiviazione di un sistema. Tuttavia, a un certo punto i dati possono diventare troppo grandi per essere gestiti su un singolo sistema, ad es. se si ha un throughput troppo elevato o se è necessario un livello di sistema piuttosto che una tolleranza ai guasti a livello del disco. In uno scenario del genere, è necessaria un'architettura software distribuita diversa per aumentare ulteriormente, anche se i problemi relativi alla coerenza dei dati si presentano quando si hanno più sistemi responsabili degli stessi dati.