本文对常用的分布式文件系统进行一个简要的对比,设计的分布式文件系统有:HSFS,IRODS,Ceph,ClusterFs,Lustre,MooseFS.
架构
Lustre把metadata存储到单节点sever的硬盘。客户端的rps(client request per second)受到metadata server的限制。HDFS 和MooseFS也面临相同的问题,不过他们是把metadata存储到内存。iRODS采用面向中心的架构设计,用数据库来管理和存储metadata.这三种面向中心的架构设计,都会受到metadata server的限制,无论是放到硬盘,内存还是数据库,metadata是单机的。GlusterFS把metadata和数据存储到一起,可以快速增加sever进行水平的扩张,可以接受大量的客户端请求。Ceph为了处理客户端大量的请求,需要增加metadata或data sever,这样系统扩张更加复杂。
表 1:概要对比
HDFS | iRODS | Ceph | GlusterFS | Lustre | |
---|---|---|---|---|---|
Architecture | Centralized | Centralized | Distributed | Decentralized | Centralized |
Naming | Index | Database | CRUSH | EHA | Index |
API | CLI, FUSE REST, API | CLI, FUSE API | FUSE, mount REST | FUSE, mount | FUSE |
Fault detection | Fully connect | P2P | Fully connect | Detected | Manually |
System availability | No failover | No failover | High | High | Failover |
Data availability | Replication | Replication | Replication | RAID-like | No |
Placement strategy | Auto | Manual | Auto | Manual | No |
Replication | Async. | Sync | Sync | Sync | RAID-like |
Cache consistency | WORM, lease | Lock | Lock | No | Lock |
Load balancing | Auto | Manual | Manual | Manual | N |
表 2 :I/O 性能
HDFS | iRODS | Ceph | GlusterFS | Lustre | MooseFS | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Input/Output | I | O | I | O | I | O | I | O | I | O | I | O |
1 × 20GB | 407s | 401s | 520s | 500s | 419s | 382s | 341s | 403s | 374s | 415s | 448s | 385s |
1000 × 1MB | 72s | 17s | 86s | 23s | 76s | 21s | 59s | 18s | 66s | 5s | 68s | 4s |
注意:红色代表性能好,绿色代表性能差。测试环境 grid5000平台,2个cluster.
结论
HDFS, MooseFS, iRODS and Lustre 更适合存储小文件, Ceph and GlusterFS对大小文件都适合。该测试除了iRODS,文件都是采用的分条(striping),striping能够提高大文件的性能,对于小文件没有明显的作用。测试结果依赖网络,但是这不影响得出下面的结论,gluster去中心化的架构,表现的要比其他架构更好。
想了解更多的测试结果和对比信息,请点击下面的链接:点击打开链接
下面附上docker安装glusterFS
下载节点容器镜像
创建元数据目录
创建节点容器实例
组建集群
创建卷
冗余卷 (replica)
条带卷 (stripe)
纠删码卷 (disperse)
- 由于这些容器实例的/mnt与/在同一个分区,故需要指定force参数。
- 创建卷时,目录/mnt/v{1,2,3}将被gluster自动创建,前提是父目录 (/mnt)已存在
挂载卷
通过FUSE挂载