我們知道,檔案系統是負責儲存和管理檔案內容和元資料的軟體系統,本地檔案系統是將檔案內容和元資料都儲存在本地伺服器上,而分布式檔案系統是通過網路將這些資料儲存在多個遠端伺服器上。通過分布式檔案系統提供的介面,使用者可以透明地操作儲存在網路上的檔案。在大資料(big data)日益盛行的今天,分布式檔案系統是其必不可少的儲存單元。
相對於傳統的檔案系統,分布式檔案系統具有很多優勢。首先,由於不受本地儲存空間的限制,它可以通過動態增刪儲存伺服器來實現高伸縮性;第二,資料可以在多台伺服器上進行冗餘備份,提高了分割槽容忍性,避免了單點失效,提高了可靠性和可用性;第三,支援大規模資料訪問,由於每個使用者讀寫資料只需要在特定的幾台儲存伺服器上進行,所以總的工作負載被分散到所有的儲存伺服器上,不會存在單點效能瓶頸。此外,分布式檔案系統也能提供多使用者/組的訪問控制、儲存配額和檔案加密等特性。
從分布式檔案系統的架構來看,我們大致可以將其分為三類:客戶-伺服器架構、主從式集群架構和對等式集群架構。客戶-伺服器架構最早出現,它通過網路實現了檔案系統客戶端與檔案儲存和管理的分離,其典型代表是sun公司開發的nfs檔案系統,也是目前使用最廣泛的分布式檔案系統之一。主從式集群架構是客戶-伺服器架構的增強,它實現了客戶端、元資料儲存和管理與檔案內容儲存和管理三者的分離,主節點負責維護和管理檔案系統的元資料和管理,比如命名空間和儲存節點,若干個從節點負責維護和管理檔案內容,客戶端與主節點通訊獲取需要訪問檔案的相關資訊,比如儲存檔案內容的從節點的聯絡位址,然後客戶端和相關從節點通訊,訪問檔案具體內容,這類架構的典型代表是gfs,稍後我們還將對它進行重點剖析。對等式集群架構中,沒有了主節點,每個節點都參與管理和儲存資料,節點的底層採用了分布式雜湊p2p儲存系統,實現了資料儲存持久化,節點還維護了相應的操作日誌,通過查詢所有節點的操作日誌實現了讀資料的一致性,在節點上寫資料是通過追加方式記錄在自己的操作日誌上,這樣就避免了使用全域性鎖,這類架構的代表是由麻省理工大學開發的ivy分布式檔案系統。
我們將從分布式檔案系統的元件按照功能劃分為:介面(客戶端)、檔案內容儲存及管理和元資料儲存及管理三個方面來介紹。
分布式檔案系統提供的介面既可以是和伺服器端本地檔案系統相容的,也可以是不相容的。目前,主流的作業系統基本都採用了抽象的檔案系統介面,分布式檔案系統只要定義了這些抽象檔案系統所要求的介面操作,就能夠實現和本地檔案系統的相容,比如nfs就能夠掛載到linux的vfs檔案系統上,使用者就可以像訪問本地檔案系統一樣來訪問網路檔案系統。當然,採用私有介面的也不少,通常是命令列、應用程式設計介面開發包或者web服務,比如gfs和hdfs採用了應用程式設計介面和命令列,而amazon s3採用了web服務介面。
檔案內容儲存及管理包括檔案內容的儲存和校驗,向負責元資料儲存及管理的節點匯報節點資訊和儲存資訊,以及和客戶端通訊實現對檔案內容的讀寫操作。通常,負責檔案內容儲存及管理的節點會將檔案塊儲存在自己本地的資料持久化層中,但也可能將其儲存在網路上,同時它還需要負責對檔案塊生成校驗值,用來檢測檔案塊是否損壞,這在建立在普通pc架構上的分布式檔案系統尤其重要,因為底層硬體隨時可能發生故障。此外,負責檔案內容儲存及管理的節點還需要定期向元資料節點匯報自己的負載量,剩餘儲存空間,以及儲存的檔案塊資訊等,元資料節點根據蒐集到的資訊來分配新的儲存任務和平衡節點間的儲存負載。在多數時間裡,客戶端讀寫檔案內容都是和儲存節點進行互動的,在對檔案內容進行操作之前,客戶端只需要從元資料節點獲取檔名和相應的儲存節點,然後直接和儲存節點進行資料傳輸。
最後,讓我們來了解一些其他知名的分布式檔案系統。lustre是乙個開源的分布式檔案系統,它採用了集群式架構,被廣泛應用在高效能計算領域。frangipani是乙個伸縮性很好的高效能分布式檔案系統,該系統採用了兩層的服務體系架構:底層是乙個分布式儲存服務,該服務能夠自動管理可伸縮、高可用的虛擬磁碟;在這個分布式儲存服務上層執行著frangipani分布式檔案系統。jetfile是乙個基於p2p的組播技術、支援在internet這樣的異構環境中分享檔案的分布式檔案系統。ceph是乙個高效能並且可靠的分布式檔案系統,它通過把資料和對資料的管理在最大程度上分開來獲取極佳的i/o效能。一些網際網路公司也根據自己應用的特點,開發了適合自己的大規模分布式檔案系統,比如facebook haystack,它非常適合儲存海量檔案。
[宣告: 內容摘自《雲計算寶典》一書,本博主是該內容的創作人員]
雲計算DHT分布式儲存
因為dht包含多種儲存模式,因為學習需要,這裡暫時只講解chord,這個也是相對比較簡單的 首先使用的hash格式資料 key是關鍵字,用來作為尋找節點,即通過k hash key 然後查詢k來找出儲存節點資訊表 value是包含了資料儲存的具體節點資訊,例如ip等 接下來是看是如何查詢的 1 有以...
檔案上傳(分布式儲存)
分布式儲存客戶端 com.github.tobato groupid fastdfs client artifactid 1.26 6 version dependency fdfs so timeout 10501 connect timeout 601 thumb image 縮圖生成引數 wi...
分布式檔案儲存 FastDFS
7 fastdfs 和其他檔案儲存的簡單對比 寫操作 客戶端先是訪問tracker伺服器,由tracker伺服器幫我們尋找要寫入的卷 volume 一對主從備份為乙個卷,裡面可以有多台伺服器 然後返回可操作的storage server,這時客戶端訪問返回的storage server 進行寫操作 ...