分散式檔案系統的對比
本文對常用的分散式檔案系統進行一個簡要的對比,設計的分散式檔案系統有: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
下載節點容器映象
1
|
|
建立元資料目錄
1
|
|
建立節點容器例項
1 2 3 4 5 6 7 8 9 10 |
|
組建叢集
1
|
|
1 2 |
|
建立卷
冗餘卷 (replica)
1
|
|
條帶卷 (stripe)
1
|
|
糾刪碼卷 (disperse)
1
|
|
- 由於這些容器例項的/mnt與/在同一個分割槽,故需要指定force引數。
- 建立卷時,目錄/mnt/v{1,2,3}將被gluster自動建立,前提是父目錄 (/mnt)已存在
掛載卷
通過FUSE掛載
1
|
|