Um resumo de sistemas de arquivos distribuídos
Capacidade de armazenar dados e meta dados
Resiliência para falhas de nós únicos
Flexibilidade expandir ou reduzir a rede a qualquer momento
Ser capaz de correr muito Memória baixa servidores
UMA sistema de arquivos distribuído , geralmente, fornece um idealmente POSIX interface de sistema de arquivos compatível. Esta é a maior parte de sua definição porque construir um cluster de nós que mantém dados de uma forma distribuída pode ser alcançado de muitas maneiras diferentes, mas construir um que forneça acesso a um utilizável a interface do sistema de arquivos é desafiadora. Um sistema de arquivos de arquivos geralmente é assumido como locale, como tal, muitos aplicativos assumem acesso rápido a ele, desconsiderando possíveis problemas de latência que podem surgir em um sistema de arquivos apoiado por dados remotos. Muito poucos aplicativos distinguem entre sistemas de arquivos locais e remotos.
Trocar um sistema de arquivos por um distribuído pode ser considerado uma forma de compatibilidade com versões anteriores ... no caso de você desejar implementar um aplicativo em um ambiente de nuvem que dependa do acesso ao sistema de arquivos para sua camada de dados, a nuvem deve fornecer uma interface de sistema de arquivos que possa se replicar arbitrariamente nas máquinas. No entanto, em um único caso de usuário, também pode ser considerado uma forma de reduzir a sobrecarga de gerenciamento ... em vez de rastrear backups de dados de cada servidor que você executa, você pode rastrear a integridade do sistema de arquivos baseado em rede e agendar backups nele.
Se você não precisa de acesso estrito à semântica dos sistemas de arquivos, uma interface de armazenamento de objetos distribuídos é mais simples e portátil e universal como um sistema de arquivos, com menos carga de sincronicidade na rede, uma vez que um armazenamento de objeto em si, não contém metadados. Alguns softwares de armazenamento de objetos oferecem uma interface de sistema de arquivos integrada.
Uma vez que nosso objetivo é não big data, ignoramos soluções como HDFS.
OpenAFS : este não é um sistema de arquivos devidamente distribuído, uma vez que é federado o que significa que as falhas de um único nó podem causar interrupções.
MinFS : MinFS é um driver de fusível para MinIO, que é um armazenamento de objeto distribuído direto com codificação de eliminação, mas não parece ser barato em recursos.
xtreemefs : XtreemeFS atinge resiliência com equivalente a RAID0 na rede
Glusterfs: fácil de configurar, mas desempenho ruim
ceph : mais difícil de configurar (e gerenciar), mas com desempenho muito bom (e ajustável)
lagarto : desempenho decente, baixo consumo de memória inicial, mas alto sob carga pesada
orangefs : pegada mínima, módulo do kernel e módulo do fusor, aguardando na v3 por metadados assíncronos
Beegfs : pegada baixa, módulo do kernel (mas módulo do fusor sem manutenção), melhor desempenho
algas marinhas : armazenamento de objetos facilmente plugável com módulo de fusor
Aqui, alguns resultados de benchmark em uma tabela, eles não cobrem todos os sistemas de arquivos e podem estar desatualizados neste ponto, e nof2fs
o cache de resultados pode ter escapado :)
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
Aqui estão os dados de benchmarks
Os botões sysctl foram ajustados para o rendimento máximo, mas eles devem ser indiscutivelmente inúteis e provavelmente distorcem os benchmarks, uma vez que em uma rede heterogênea esses botões nem sempre são aplicados e, de qualquer forma, são dependente da rede , então, mesmo se eles forem aplicados, pode haver outros gargalos no local.
Comparações adicionais, da wikipedia, de algas marinhas.