分布式檔案系統(Distributed File System,DFS)
一、什麼是分布式檔案系統
1、檔案系統的定義:
硬碟是計算機最主要的儲存設備,資料按扇區存放在硬碟上。硬碟屬于硬體,使用者無法直接對其進行操作,由作業系統幫我們管理。檔案系統是作業系統用于明确儲存設備或分區上的檔案的方法和資料結構;即在儲存設備上組織檔案的方法。作業系統中負責管理和存儲檔案資訊的軟體機構稱為檔案管理系統,簡稱檔案系統。檔案系統由三部分組成:檔案系統的接口,對對象操縱和管理的軟體集合,對象及屬性。從系統角度來看,檔案系統是對檔案儲存設備的空間進行組織和配置設定,負責檔案存儲并對存入的檔案進行保護和檢索的系統。通俗地說,檔案系統就是一個軟體,它負責為使用者建立檔案,存入、讀出、修改、轉儲檔案,控制檔案的存取,當使用者不再使用時撤銷檔案等。
2、一般檔案系統:
在我們日常生活工作中,自己使用的電腦上都會安裝作業系統,比如Windows。我們經常進行的操作如建立檔案夾、建立檔案、删除檔案等等,都是檔案系統在幫助我們工作,Windows檔案系統有FATFS、VFATFS、NTFS等。除了Windows外,Linux也有ext、vfs等等檔案系統,像這種一台計算機,單個存儲節點、一個作業系統,一個具體的檔案系統的場景稱之為一般檔案系統。

3、分布式檔案系統:
分布式檔案系統中的資料存儲在多台機器上,這些專門用來存儲資料的機器稱之為存儲節點,由多個節點構成分布式叢集,節點上的小的分布式檔案系統組合成總的分布式檔案系統,由主伺服器對總的檔案系統進行管理。使用者任意通路某一台主機,都能擷取到自己想要的目标檔案。
4、一般檔案系統與分布式檔案系統的比較:
一般檔案系統 | 分布式檔案系統 | |
---|---|---|
存儲方式 | 集中存儲在一台機器 | 分散地存儲在多台機器 |
通路方式 | 系統總線IO | 網絡IO |
特點 | 系統級别的檔案系統,資料集中存放在一台機器,對資料的通路,修改和删除比較友善快速,存儲伺服器成為系統性能的瓶頸,伸縮性較差,擴充有限 | 應用級别的檔案系統,分布式網絡存儲系統采用可擴充的系統結構,利用多台存儲伺服器分擔存儲負荷,利用位置伺服器定位存儲資訊,它不但提高了系統的可靠性、可用性和存取效率,還易于擴充 |
适用場景 | 小資料量的存儲 | 海量資料的存儲 |
設計目标 | 高性能、可用性 | 高性能、可伸縮性、可靠性以及可用性 |
二、常見的分布式檔案系統
常見的分布式檔案系統有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自适用于不同的領域。它們都不是系統級的分布式檔案系統,而是應用級的分布式檔案存儲服務。
1、GFS(Google File System)
Google GFS檔案系統,一個面向大規模資料密集型應用的、可伸縮的分布式檔案系統。GFS雖然運作在廉價的普遍硬體裝置上,但是它依然了提供災難備援的能力,為大量客戶機提供了高性能的服務。GFS是一個為Google内部設計的大資料分布式存儲架構,由2003年Google發表的論文提出,遺憾的是Google并沒有将其開源,但是基于GFS的設計理念,誕生了很多優秀的開源類GFS檔案系統。
2、HDFS(Hadoop Distributed File System)
HDFS是Hadoop(Apache開源項目)的專用檔案系統, Hadoop是一個大資料計算架構,它允許使用簡單的程式設計模型跨計算機叢集分布式處理大型資料集,是Google發表的MapReduce算法的實作,HDFS是GFS的開源實作。
3、Ceph
Ceph是加州大學Santa Cruz分校的Sage Weil(DreamHost的聯合創始人)專為博士論文設計的新一代自由軟體分布式檔案系統,并使用Ceph完成了他的論文。Ceph的主要目标是設計成基于POSIX的沒有單點故障的分布式檔案系統,使資料能容錯和無縫的複制。與其它分布式檔案系統相比,ceph 性能最高,因為其使用C++編寫而成。 由于 ceph 使用 btrfs 檔案系統, 而btrfs 檔案系統需要 Linux 2.6.34 以上的核心才支援。自2007年畢業之後,Sage開始全職投入到Ceph開 發之中,使其能适用于生産環境,經過十幾年的發展,Ceph已經趨向于成熟。
4、Lustre
Lustre是一個開源、分布式并行檔案系統軟體平台,具有高可擴充、高性能、高可用等特點。Lustre的構造目标是為大規模計算系統提供一個全局一緻的POSIX相容的命名空間,這些計算系統包括了世界上包含最強大的高性能計算系統。它支援數百PB資料存儲空間,支援數百GB/s乃至數TB/s并發聚合帶寬。
5、GridFS
GridFS 是MongDB的分布式存儲系統,用于存儲和恢複那些超過16M(BSON檔案限制)的檔案(如:圖檔、音頻、視訊等)。GridFS 也是檔案存儲的一種方式,但是它是存儲在MonoDB的集合中。GridFS 可以更好的存儲大于16M的檔案。GridFS 會将大檔案對象分割成多個小的chunk(檔案片段),一般為256k/個,每個chunk将作為MongoDB的一個文檔(document)被存儲在chunks集合中。GridFS 用兩個集合來存儲一個檔案:fs.files與fs.chunks。每個檔案的實際内容被存在chunks(二進制資料)中,和檔案有關的meta資料(filename,content_type,還有使用者自定義的屬性)将會被存在files集合中。
6、MogileFS
MogileFS是一個開源的分布式檔案存儲系統,是由LiveJournal旗下的Danga Interactive公司開發。目前使用MogileFS的公司非常多,如日本排名先前的幾個互聯公司以及國内的Yupoo(又拍)、digg、豆瓣、大衆點評、搜狗等,分别為所在的組織或公司管理着海量的圖檔。以大衆點評為例,使用者全部圖檔均有MogileFS存儲,資料量已經達到500TB以上
7、FastDFS(Fast Distributed File System)
FastDFS是一個開源的分布式檔案系統,由純C編寫,性能很高。她對檔案進行管理,功能包括:檔案存儲、檔案同步、檔案通路(檔案上傳、檔案下載下傳)等,解決了大容量存儲和負載均衡的問題。特别适合以檔案為載體的線上服務,如相冊網站、視訊網站等等。
8、TFS(Taobao File System)
TFS是一個高可擴充、高可用、高性能、面向網際網路服務的分布式檔案系統,主要針對海量的非結構化資料,它構築在普通的Linux機器叢集上,可為外部提供高可靠和高并發的存儲通路。TFS為淘寶提供海量小檔案存儲,通常檔案大小不超過1M,滿足了淘寶對小檔案存儲的需求,被廣泛地應用在淘寶各項應用中。它采用了HA架構和平滑擴容,保證了整個檔案系統的可用性和擴充性。同時扁平化的資料組織結構,可将檔案名映射到檔案的實體位址,簡化了檔案的通路流程,一定程度上為TFS提供了良好的讀寫性能。
三、下一代分布式檔案系統
1、預想
随着5G、AI、雲技術的快速普及和發展,資料的産生呈幾何級數增長,必然會帶來更大的挑戰,勢必會催生出下一代分布式檔案系統。會在解決最基本的資料存儲問題後,我認為分布式檔案系統需要解決的問題是如何針對目前系統架構缺點的改進,主要圍繞在資料的多元化存儲、更靈活的适用場景、系統的成本效益提升、更強的适用性和更友善的運維等方面。其實,對大資料的操作有90%是對中繼資料進行操作,HDFS的中繼資料存儲在記憶體,雖然性能高,但是記憶體的容量有限,系統支援的檔案數量較少。Ceph将中繼資料儲存在RADOS,IO操作多,路徑長,性能不理想。
資料存儲在記憶體,雖然性能高,但是記憶體的容量有限,系統支援的檔案數量較少。Ceph将中繼資料儲存在RADOS,IO操作多,路徑長,性能不理想。
人類的智慧是無限的,相信随着時間的發展,在不斷地實踐和改進後,“資料革命”必然會取得勝利,分布式檔案系統也必然會綻放更加絢麗的花!!