分布式文件系統、集群文件系統、并行文件系統,這三種概念很容易混淆,實際中大家也經常不加區分地使用??偸怯腥藛柶疬@三者的區別和聯系,其實它們之間在概念上的確有交叉重疊的地方,但是也存在顯著不同之處。
分布式文件系統
自然地,“分布式”是重點,它是相對與本地文件系統而言的。分布式文件系統通常指C/S架構或網絡文件系統,用戶數據沒有直接連接到本地主機,而是存儲在遠程存儲服務器上。NFS/CIFS是最為常見的分布式文件系統,這就是我們說的NAS系統。分布式文件系統中,存儲服務器的節點數可能是1個(如傳統NAS),也可以有多個(如集群NAS)。對于單個節點的分布式文件系統來說,存在單點故障和性能瓶頸問題。除了NAS以外,典型的分布式文件系統還有AFS,以及下面將要介紹的集群文件系統(如Lustre, GlusterFS, PVFS2等)。
集群文件系統
“集群”主要分為高性能集群HPC(High Performance Cluster)、高可用集群HAC(High Availablity Cluster)和負載均衡集群LBC(Load Balancing Cluster)。集群文件系統是指協同多個節點提供高性能、高可用或負載均衡的文件系統,它是分布式文件系統的一個子集,消除了單點故障和性能瓶問題。對于客戶端來說集群是透明的,它看到是一個單一的全局命名空間,用戶文件訪問請求被分散到所有集群上進行處理。此外,可擴展性(包括Scale-Up和Scale-Out)、可靠性、易管理等也是集群文件系統追求的目標。在元數據管理方面,可以采用專用的服務器,也可以采用服務器集群,或者采用完全對等分布的無專用元數據服務器架構。目前典型的集群文件系統有SONAS, ISILON, IBRIX, NetAPP-GX, Lustre, PVFS2, GlusterFS, Google File System, LoongStore, CZSS等。
并行文件系統
這種文件系統能夠支持并行應用,比如MPI。在并行文件系統環境下,所有客戶端可以在同一時間并發讀寫同一個文件。并發讀,大部分文件系統都能夠實現。并發寫實現起來要復雜許多,既要保證數據一致性,又要最大限度提高并行性,因此在鎖機制方面需要特別設計,如細粒度的字節鎖。通常SAN共享文件系統都是并行文件系統,如GPFS、StorNext、GFS、BWFS,集群文件系統大多也是并行文件系統,如Lustre, Panasas等。
如何區分?
區分這三者的重點是“分布式”、“集群”、“并行”三個前綴關鍵字。簡單來說,非本地直連的、通過網絡連接的,這種為分布式文件系統;分布式文件系統中,服務器節點由多個組成的,這種為集群文件系統;支持并行應用(如MPI)的,這種為并行文件系統。在上面所舉的例子中也可以看出,這三個概念之間具有重疊之處,比如Lustre,它既是分布式文件系統,也是集群和并行文件系統。但是,它們也有不同之處。集群文件系統是分布式文件系統,但反之則不成立,比如NAS、AFS。SAN文件系統是并行文件系統,但可能不是集群文件系統,如StorNext。GFS、HDFS之類,它們是集群文件系統,但可能不是并行文件系統。實際中,三者概念搞理清后,分析清楚文件系統的特征,應該還是容易正確地為其劃分類別的。