在專案的資料存盤中,結構化資料通常采用關系型資料庫,非結構化資料(檔案)的存盤就有很多種方式,服務器本地存盤、Nas掛載、ftp等等,今天就來盤點一下,分布式檔案存盤系統,
一、分布式存盤簡介
1、什么是分布式存盤
在開始介紹分布式存盤之前,先了解一下,非分布式的存盤方案,
在單機時代,將檔案直接存盤在服務部署的服務器上——
- 直連存盤(DAS):存盤和資料直連,拓展性、靈活性差,
為了擴展,將檔案和服務分離,通過網路連接——
- 中心化存盤(NAS、SAN):設備型別豐富,通過網路互連,具有一定的拓展性,但是受到控制器能力限制,拓展能力有限,同時,設備到了生命周期要進行更換,資料遷移需要耗費大量的時間和精力,

分布式存盤:通過網路使用企業中的每臺機器上的磁盤空間,并將這些分散的存盤資源構成一個虛擬的存盤設備,資料分散的存盤在企業的各個角落,

2、分布式存盤的優勢
可擴展:分布式存盤系統可以擴展到數百甚至數千個這樣的集群大小,并且系統的整體性能可以線性增長,
高可用性:在分布式檔案系統中,高可用性包含兩層,一是整個檔案系統的可用性,二是資料的完整和一致性
低成本:分布式存盤系統的自動容錯和自動負載平衡允許在成本較低服務器上構建分布式存盤系統,此外,線性可擴展性還能夠增加和降低服務器的成本,
彈性存盤: 可以根據業務需要靈活地增加或縮減資料存盤以及增刪存盤池中的資源,而不需要中斷系統運行
二、主流分布式檔案存盤系統
目前主流的分布式檔案系統有:GFS、HDFS、Ceph、Lustre、MogileFS、MooseFS、FastDFS、TFS、GridFS等,
1、GFS(Google File System)
? Google公司為了滿足本公司需求而開發的基于Linux的專有分布式檔案系統,盡管Google公布了該系統的一些技術細節,但Google并沒有將該系統的軟體部分作為開源軟體發布,
2、HDFS(Hadoop Distributed File System)
? HDFS(Hadoop Distributed File System)是 Hadoop 專案的一個子專案,是 Hadoop 的核心組件之一, Hadoop 非常適于存盤大型資料 (比如 TB 和 PB),其就是使用 HDFS 作為存盤系統. HDFS 使用多臺計算機存盤檔案,并且提供統一的訪問介面,像是訪問一個普通檔案系統一樣使用分布式檔案系統,

3、TFS(Taobao FileSystem)
? TFS是一個高可擴展、高可用、高性能、面向互聯網服務的分布式檔案系統,主要針對海量的非結構化資料,它構筑在普通的Linux機器 集群上,可為外部提供高可靠和高并發的存盤訪問,TFS為淘寶提供海量小檔案存盤,通常檔案大小不超過1M,滿足了淘寶對小檔案存盤的需求,被廣泛地應用在淘寶各項應用中,它采用了HA架構和平滑擴容,保證了整個檔案系統的可用性和擴展性,同時扁平化的資料組織結構,可將檔案名映射到檔案的物理地址,簡化 了檔案的訪問流程,一定程度上為TFS提供了良好的讀寫性能,
4、Lustre
Lustre是一個大規模的、安全可靠的,具備高可用性的集群檔案系統,它是由SUN公司開發和維護的,該專案主要的目的就是開發下一代的集群檔案系統,可以支持超過10000個節點,數以PB的資料量存盤系統,目前Lustre已經運用在一些領域,例如HP SFS產品等,
5、 MooseFS
MooseFS是一款相對小眾的分布式檔案系統,不需要修改上層應用介面即可直接使用,支持FUSE的操作方式,部署簡單并提供Web界面的方式進行管理與監控,同其他分布式作業系統一樣,支持在線擴容,并進行橫向擴展,MooseFS還具有可找回誤操作洗掉的檔案,相當于一個回收站,方便業務進行定制;同時MooseFS對于海量小檔案的讀寫要比大檔案讀寫的效率高的多,
但MooseFS的缺點同樣明顯,MFS的主備架構情況類似于MySQL的主從復制,從可以擴展,主卻不容易擴展,短期的對策就是按照業務來做切分,隨著MFS體系架構中存盤檔案的總數上升,Master Server對記憶體的需求量會不斷增大,并且對于其單點問題官方自帶的是把資料資訊從Master Server同步到Metalogger Server上,Master Server一旦出問題Metalogger Server可以恢復升級為Master Server,但是需要恢復時間,目前,也可以通過第三方的高可用方案(heartbeat+drbd+moosefs)來解決 Master Server 的單點問題,
6、MogileFS
由memcahed的開發公司danga一款perl開發的產品,目前國內使用mogielFS的有圖片托管網站yupoo等,MogileFS是一套高效的檔案自動備份組件,由Six Apart開發,廣泛應用在包括LiveJournal等web2.0站點上,
7. FastDFS
是一款類似Google FS的開源分布式檔案系統,是純C語言開發的,FastDFS是一個開源的輕量級分布式檔案系統,它對檔案進行管理,功能包括:檔案存盤、檔案同步、檔案訪問(檔案上傳、檔案下載)等,解決了大容量存盤和負載均衡的問題,特別適合以檔案為載體的在線服務,如相冊網站、視頻網站等等,
8、GlusterFS
開源分布式橫向擴展檔案系統,可以根據存盤需求快速調配存盤,內含豐富的自動故障轉移功能,且擯棄集中元資料服務器的思想,適用于資料密集型任務的可擴展網路檔案系統,具有可擴展性、高性能、高可用性等特點,gluster于2011年10月7日被Red Hat收購,
9、 GridFS
MongoDB是知名的NoSQL資料庫,GridFS是MongoDB的一個內置功能,它提供一組檔案操作的API以利用MongoDB存盤檔案,GridFS的基本原理是將檔案保存在兩個Collection中,一個保存檔案索引,一個保存檔案內容,檔案內容按一定大小分成若干塊,每一塊存在一個Document中,這種方法不僅提供了檔案存盤,還提供了對檔案相關的一些附加屬性(比如MD5值,檔案名等等)的存盤,檔案在GridFS中會按4MB為單位進行分塊存盤,

三、分布式檔案系統的對比
1、整體對比
| 檔案系統 | 開發者 | 開發語言 | 開源協議 | 易用性 | 適用場景 | 特性 | 缺點 |
|---|---|---|---|---|---|---|---|
| GFS | 不開源 | ||||||
| HDFS | Apache | Java | Apache | 安裝簡單,官方檔案專業化 | 存盤非常大的檔案 | 大資料批量讀寫,吞吐量高;一次寫入,多次讀取,順序讀寫 | 難以滿足毫秒級別的低延時資料訪問;不支持多用戶并發寫相同檔案;不適用于大量小檔案 |
| Ceph | 加州大學圣克魯茲分校Sage Weil | C++ | LGPL | 安裝簡單,官方檔案專業化 | 單集群的大中小檔案 | 分布式,沒有單點依賴,用C撰寫,性能較好 | 基于不成熟的btrfs,自身也不夠成熟穩定,不推薦在生產環境使用 |
| TFS | Alibaba | C++ | GPL V2 | 安裝復雜,官方檔案少 | 跨集群的小檔案 | 針對小檔案量身定做,隨機IO性能比較高;實作了軟RAID,增強系統的并發處理能力及資料容錯恢復能力;支持主備熱倒換,提升系統的可用性;支持主從集群部署,從集群主要提供讀/備功能 | 不適合大檔案的存盤;不支持POSIX,通用性較低;不支持自定義目錄結構與檔案權限控制;通過API下載,存在單點的性能瓶頸;官方檔案少,學習成本高 |
| Lustre | SUN | C | GPL | 復雜,而且嚴重依賴內核,需要重新編譯內核 | 大檔案讀寫 | 企業級產品,非常龐大,對內核和ext3深度依賴 | |
| MooseFS | Core Sp. z o.o. | C | GPL V3 | 安裝簡單,官方檔案多,且提供Web界面的方式進行管理與監控 | 大量小檔案讀寫 | 比較輕量級,用perl撰寫,國內用的人比較多 | 對master服務器有單點依賴,性能相對較差 |
| MogileFS | Danga Interactive | Perl | GPL | 主要用在web領域處理海量小圖片 | key-value型元檔案系統;效率相比mooseFS高很多 | 不支持FUSE | |
| FastDFS | 國內開發者余慶 | C | GPL V3 | 安裝簡單,社區相對活躍 | 單集群的中小檔案 | 系統無需支持POSIX,降低了系統的復雜度,處理效率更高;實作了軟RAID,增強系統的并發處理能力及資料容錯恢復能力;支持主從檔案,支持自定義擴展名;主備Tracker服務,增強系統的可用性 | 不支持斷點續傳,不適合大檔案存盤;不支持POSIX,通用性較低;對跨公網的檔案同步,存在較大延遲,需要應用做相應的容錯策略;同步機制不支持檔案正確性校驗;通過API下載,存在單點的性能瓶頸 |
| GlusterFS | Z RESEARCH | C | GPL V3 | 安裝簡單,官方檔案專業化 | 適合大檔案,小檔案性能還存在很大優化空間 | 無元資料服務器,堆疊式架構(基本功能模塊可以進行堆疊式組合,實作強大功能),具有線性橫向擴展能力;比mooseFS龐大 | 由于沒有元資料服務器,因此增加了客戶端的負載,占用相當的CPU和記憶體;但遍歷檔案目錄時,則實作較為復雜和低效,需要搜索所有的存盤節點,不建議使用較深的路徑 |
| GridFS | MongoDB | C++ | 安裝簡單 | 通常用來處理大檔案(超過16M) | 可以訪問部分檔案,而不用向記憶體中加載全部檔案,從而保持高性能;檔案和元資料自動同步 |
2、 特性對比
| 檔案系統 | 資料存盤方式 | 集群節點通訊協議 | 專用元資料存盤點 | 在線擴容 | 冗余備份 | 單點故障 | 跨集群同步 | FUSE掛載 | 訪問介面 |
|---|---|---|---|---|---|---|---|---|---|
| HDFS | 檔案 | 私有協議(TCP) | 占用MDS | 支持 | 存在 | 不支持 | 支持 | 不支持POSIX | |
| Ceph | 物件/檔案/塊 | 私有協議(TCP) | 占用MDS | 支持 | 支持 | 存在 | 不支持 | 支持 | POSIX |
| Lustre | 物件 | 私有協議(TCP)/ RDAM(遠程直接訪問記憶體) | 雙MDS | 支持 | 不支持 | 存在 | 未知 | 支持 | POSIX/MPI |
| MooseFS | 塊 | 私有協議(TCP) | 占用MFS | 支持 | 支持 | 存在 | 不支持 | 支持 | POSIX |
| MogileFS | 檔案 | HTTP | 占用DB | 支持 | 不支持 | 存在 | 不支持 | 不支持 | 不支持POSIX |
| FastDFS | 檔案/塊 | 私有協議(TCP) | 無 | 支持 | 支持 | 不存在 | 部分支持 | 不支持 | 不支持POSIX |
| GlusterFS | 檔案/塊 | 私有協議(TCP)/RDAM(遠程直接訪問記憶體) | 無 | 支持 | 支持 | 不存在 | 支持 | 支持 | POSIX |
| TFS | 檔案 | 私有協議(TCP) | 占用NS | 支持 | 支持 | 存在 | 支持 | 未知 | 不支持POSIX |
什么是POSIX?
POSIX表示可移植作業系統介面(Portable Operating System Interface of UNIX,縮寫為 POSIX ),也就是Unix下應用程式共同遵循的一種規范,支持POSIX的應用程式意味著在各個Unix系統間提供了跨平臺運行的支持,
四、選型參考
-
適合做通用檔案系統的有:Ceph,Lustre,MooseFS,GlusterFS;
-
適合做小檔案存盤的檔案系統有:Ceph,MooseFS,MogileFS,FastDFS,TFS;
-
適合做大檔案存盤的檔案系統有:HDFS,Ceph,Lustre,GlusterFS,GridFS;
-
輕量級檔案系統有:MooseFS,FastDFS;
-
簡單易用,用戶數量活躍的檔案系統有:MooseFS,MogileFS,FastDFS,GlusterFS;
-
支持FUSE掛載的檔案系統有:HDFS,Ceph,Lustre,MooseFS,GlusterFS,
參考:
【1】:分布式檔案系統對比與選型參考
【2】:只知道HDFS和GFS?你其實并不懂分布式檔案系統
【3】:分布式存盤主流框架
【4】:如果要設計個分布式檔案系統,該從哪些方面考慮?
【5】: 常見分布式檔案存盤介紹、選型比較、架構設計
【6】:分布式檔案系統對比與選型參考
【7】:中小企業存盤:DAS、NAS和SAN的選擇
【8】:從DAS到分布式存盤,存盤形式總結
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/258159.html
標籤:其他
上一篇:單片機事件架構
