1. 程式人生 > >各種分散式檔案系統的比較

各種分散式檔案系統的比較

適合做通用檔案系統的有 MooseFS,GlusterFS,Lustre。

MooseFS

支援FUSE,相對比較輕量級,對master伺服器有單點依賴,用perl編寫,效能相對較差,國內用的人比較多,易用,穩定,對小檔案很高效。

    + 支援檔案元資訊
    + mfsmount 很好用
    + 編譯依賴少,文件全,預設配置很好
    + mfshdd.cfg 加 * 的條目會被轉移到其它 chunk server,以便此 chunk server 安全退出
    + 不要求 chunk server 使用的檔案系統格式以及容量一致
    + 開發很活躍
    + 可以以非 root 使用者身份執行
    + 可以線上擴容
    + 支援回收站
    + 支援快照
    - master server
存在單點故障 - master server 很耗記憶體

MogileFS

Key-Value型元檔案系統,不支援FUSE,應用程式訪問它時需要API,主要用在web領域處理海量小圖片,效率相比mooseFS高很多,據說對於 Web 2.0 應用儲存圖片啥的很好。

不適合做通用檔案系統,適合儲存靜態只讀小檔案,比如圖片

GlusterFS

支援FUSE,比mooseFS龐大,感覺廣告宣傳做的比產品本身好。

    + 無單點故障問題
    + 支援回收站
    + 模組化堆疊式架構
    - 對檔案系統格式有要求,ext3/ext4/zfs 被正式支援,xfs/jfs 可能可以,reiserfs 經測試可以
- 需要以 root 使用者身份執行(用了 trusted xattr,mount 時加 user_xattr 選項是沒用的,官方說法是glusterfsd 需要建立不同屬主的檔案,所以必需 root 許可權) - 不能線上擴容(不 umount 時增加儲存節點),計劃在 3.1 裡實現 - 分佈儲存以檔案為單位,條帶化分佈儲存不成熟

GFS2

http://sourceware.org/cluster/wiki/DRBD_Cookbook
http://www.smop.co.uk/blog/index.php/2008/02/11/gfs-goodgrief-wheres-the-documentation-file-system/
http://wiki.debian.org/kristian_jerpetjoen
http://longvnit.com/blog/?p=941
http://blog.chinaunix.net/u1/53728/showart_1073271.html (基於紅帽RHEL5U2 GFS2+ISCSI+XEN+Cluster 的高可性解決方案)
http://www.yubo.org/blog/?p=27 (iscsi+clvm+gfs2+xen+Cluster)
http://linux.chinaunix.net/bbs/thread-777867-1-1.html

並不是 distributed file system, 而是 shared disk cluster file system,需要某種機制在機器
之間共享磁碟,以及加鎖機制,因此需要 drbd/iscsi/clvm/ddraid/gnbd 做磁碟共享,以及 dlm 做鎖管理)
- 依賴 Red Hat Cluster Suite (Debian: aptitude install redhat-cluster-suite, 圖形配置工具包
system-config-cluster, system-config-lvm)
- 適合不超過約 30 個節點左右的小型叢集,規模越大,dlm 的開銷越大,預設配置 8 個節點

OCFS2

GFS 的 Oracle 翻版,據說效能比 GFS2 好 (Debian: aptitude install ocfs2-tools, 圖形配置工具包 ocfs2console)
不支援 ACL、flock,只是為了 Oracle database 設計

OpenAFS/Coda

是很有特色的東西。

     + 成熟穩定
    + 開發活躍,支援 Unix/Linux/MacOS X/Windows
    - 效能不夠好

ceph

支援FUSE,客戶端已經進入了linux-2.6.34核心,也就是說可以像ext3/rasierFS一樣,選擇ceph為檔案系統。徹底的分散式,沒有單點依賴,用C編寫,效能較好。基於不成熟的btrfs,其本身也非常不成熟
  

Lustre

Oracle公司的企業級產品,非常龐大,對核心和ext3深度依賴
複雜,高效,適合大型叢集。

    * 適合大型叢集
    + 很高效能
    + 支援動態擴充套件
    - 需要對核心打補丁,深度依賴 Linux 核心和 ext3 檔案系統

PVFS2

http://blog.csdn.net/yfw418/archive/2007/07/06/1680930.aspx
搭配定製應用會很好,據說曙光的並行檔案系統就是基於 PVFS。  fastDFS:國人在mogileFS的基礎上進行改進的key-value型檔案系統,同樣不支援FUSE,提供比mogileFS更好的效能。

    * 高效能
    - 沒有鎖機制,不符合 POSIX 語意,需要應用的配合,不適合做通用檔案系統
      (See pvfs2-guide chaper 5:  PVFS2 User APIs and Semantics)
    - 靜態配置,不能動態擴充套件

Coda

    * 從伺服器複製檔案到本地,檔案讀寫是本地操作因此很高效
    * 檔案關閉後傳送到伺服器
    + 支援離線操作,連線後再同步到伺服器上
    - 快取基於檔案,不是基於資料塊,開啟檔案時需要等待從伺服器快取到本地完畢
    - 併發寫有版本衝突問題
    - 併發讀有極大的延遲,需要等某個 client 關閉檔案,比如不適合 tail -f some.log
    - 研究專案,不夠成熟,使用不廣

Hadoop HDFS

本地寫快取,夠一定大小 (64 MB) 時傳給伺服器
不適合通用檔案系統

FastDFS

- 只能通過 API 使用,不支援 fuse

NFS

  老牌網路檔案系統,具體不瞭解,反正NFS最近幾年沒發展,肯定不能用。
  

dCache

依賴 PostgreSQL

xtreemfs

* 服務端是 Java 實現的
- 效能不高

CloudStore (KosmosFS)

+ 被 Hadoop 作為分散式檔案系統後端之一
- 不支援檔案元資訊
- kfs_fuse 太慢,不可用
- 編譯依賴多,文件落後,指令碼簡陋
- 開發不活躍

NFSv4 Referrals

+ 簡單
- 沒有負載均衡,容錯

NFSv4.1 pNFS

- 沒有普及

spNFS

* pNFS 在 Linux 上的一個實現

GFarm