Una carrellata di file system distribuiti
Possibilità di memorizzare dati e metadati
Resilienza ai guasti dei singoli nodi
Flessibilità per espandere o ridurre la rete in qualsiasi momento
Poter correre molto poca memoria server
UN file system distribuito , generalmente, fornire a idealmente POSIX interfaccia del file system compatibile. Questa è la parte più importante della sua definizione perché costruire un cluster di nodi che contengono dati in modo distribuito può essere ottenuto in molti modi diversi, ma costruirne uno che fornisce accesso a un utilizzabile l'interfaccia del file system è impegnativa. Di solito si presume che un filesystem sia Locale e come tale, molte applicazioni presuppongono un accesso rapido ad esso, ignorando eventuali problemi di latenza che potrebbero sorgere su un file system supportato da dati remoti. Pochissime applicazioni distinguono tra file system locali e remoti.
Scambiare un file system con uno distribuito può essere considerato una forma di retrocompatibilità ...nel caso in cui si desideri distribuire un'applicazione in un ambiente cloud che si basa sull'accesso al file system per il suo livello dati, il cloud deve fornire un'interfaccia del file system che possa replicarsi arbitrariamente tra le macchine. Tuttavia, in un singolo caso utente, può anche essere considerato un modo per ridurre il sovraccarico di gestione... invece di tenere traccia dei backup dei dati da ogni singolo server in esecuzione, è possibile monitorare lo stato del file system basato sulla rete e pianificare i backup su di esso.
Se non hai bisogno di un accesso rigoroso alla semantica dei file system, un'interfaccia di archiviazione di oggetti distribuita è più semplice e come portatile e universale come file system, con meno carico di sincronicità sulla rete poiché uno storage di oggetti di per sé, non contiene metadati. Alcuni software di archiviazione oggetti offrono un'interfaccia del file system integrata.
Poiché il nostro obiettivo è non big data, ignoriamo soluzioni come HDFS.
OpenAFS : questo non è un file system distribuito correttamente, poiché lo è federato il che significa che i guasti di un singolo nodo possono causare interruzioni.
MinFS Nota: MinFS è un driver fusibile per MinIO, che è uno storage di oggetti distribuito semplice con codifica di cancellazione, ma non sembra essere economico in termini di risorse.
xtreemefs : XtreemeFS raggiunge la resilienza con l'equivalente di RAID0 sulla rete
glusterfs : facile da configurare ma prestazioni scarse
cefa : più difficile da configurare (e gestire) ma con prestazioni molto buone (e modificabili)
lucertola : prestazioni decenti, basso ingombro di memoria iniziale ma alto sotto carico pesante
arance : footprint minimo, sia modulo kernel che modulo fuser, in attesa su v3 per i metadati asincroni
beegfs : ingombro ridotto, modulo kernel (ma modulo fusore non mantenuto), prestazioni migliori
alghe marine : archiviazione di oggetti facilmente collegabile con modulo fusore
Qui alcuni risultati di benchmark in una tabella, non coprono tutti i file system e potrebbero essere obsoleti a questo punto, e nelf2fs
la memorizzazione nella cache dei risultati potrebbe essere sfuggita :)
FS
seq
rread
rrw
files
create
read
append
rename
delete
raw
78793
1.0409e6
89958
179483
17300.0
23550.0
14408.0
4677
5373
zfs
102121
1.3985e6
92391
198410
29180.0
4470.0
18980.0
4695
8468
f2fs
2.064e6
1.455e6
101674
184495
28320.0
10950.0
16890.0
4233
3912
xtreemefs
159310
29117
29468
1690
510.0
1190.0
520.0
274
330
glusterfs
178026
17222
18152
5681
4380.0
7620.0
3110.0
413
1076
beegfs
79934
103006
85983
24867
9830.0
12660.0
10470.0
2889
3588
orangefs
330781
54735
41611
5523
5120.0
7020.0
6130.0
638
1989
FS
seq
rread
rrw
files
create
read
append
raw
76
266440
22489
44870
4430
6028
3688
zfs
99
358000
23097
49602
7470
1146
4860
f2fs
2064
372524
25418
46123
7250
2803
4325
xtreemefs
155
7279
7366
422
131
306
134
glusterfs
173
4305
4537
1420
1123
1951
798
beegfs
78
25751
21495
6216
2518
3242
2682
orangefs
323
13683
10402
1380
1310
1979
1571
FS
CPU (Server)
CPU (Client)
RAM (Server)
RAM (Client)
xtreemefs
100
25
300
201
glusterfs
100
50
92
277
beegfs
80
80
42
31
orangefs
15
75
60
20
Ecco i dati dei benchmark
Le manopole sysctl sono state sintonizzate per il massimo throughput, ma dovrebbero essere probabilmente inutili e probabilmente distorcono i benchmark, poiché in una rete eterogenea quelle manopole non sono sempre applicate, e comunque sono dipendente dalla rete , quindi anche se vengono applicati, potrebbero esserci altri colli di bottiglia.
Ulteriori confronti, da wikipedia, da alghe.