集中式存儲
所謂集中式系統就是指由一台或多台主計算機組成中心節點,數據集中存儲於這個中心節點中,並且整個系統的所有業務單元都集中
部署在這個中心節點上,系統所有的功能均由其集中處理。也就是說,集中式系統中,每個終端或客戶端僅僅負責 數據的錄入和
輸出,而數據的存儲與控制處理完全交由主機來完成。
集中式系統最大的特點就是部署結構簡單,由於集中式系統往往基於底層性能卓越的大型主機,因此無需考慮如何對服務進行多個節
點的部署,也就不用考慮多個節點之間的分布式協作問題。
分布式存儲
分布式系統如何定義?這里引用一下Distributed Systems Concepts and Design(Third Edition)中的一句話:"A distributed system is one in which components located at networked computers communicate and coordinate their actions only by passing messages"。從這句話里面
我們可以看到幾個重點:
1、組件分布在網絡計算機上
2、組件之間僅僅通過消息傳遞來通信並協調行動
嚴格講,同一個分布式系統中的計算機在空間部署上是可以隨意分布的,這些計算機可能被放在不同的機櫃上,也可能在不同的機房中
甚至分布在不同的城市。無論如何,一個標准的分布式系統在沒有任何特定業務邏輯約束的情況下,都會有以下幾個特征:
1)、分布性
分布式系統中的多台計算機都會在空間上隨意分布,同時,及其的分布情況也會隨時變動
2)、對等性
分布式系統中的計算機沒有主/從之分,既沒有控制整個系統的主機,也沒有被控制的從機,組成分布式系統的所有節點都是對等的。副
本(Replica)是分布式系統最常見的概念之一,指的是分布式系統對數據和服務提供的一種冗余方式。在 常見的分布式系統中,為了對
外提高可用的服務,我們往往會對數據和服務進行副本處理。數據副本是指在不同的節點上持久化同一份數據,當某一個節點上存儲的
數據丟失時,可以從副本上讀取到該數據,這是解決分布式系統數據丟失問題最為有效的手段。另一類副本是服務副本,指多個節點提
供同樣的服務,每個節點都有 能力接收來自外部的請求並進行相應的處理
3)、並發性
在一個計算機網絡中,程序運行過程中的並發性操作是非常常見的行為,例如同一個分布式系統的多個節點,可能會並發地操作一些共享
的資源,諸如數據庫或分布式存儲等,如何准確並高效地協調分布式並發操作也成為了分布式系統架構與設計中最大的挑戰之一
4)、缺乏全局時鍾
一個典型的分布式系統是由一系列空間上隨意分布的多個進程組成的,具有明顯的分布性,這些進程之間通過交換消息來進行相互通信。
因此,在分布式系統中,很難定義兩個事件究竟誰先誰后,原因就是因為分布式系統缺乏一個全局的時鍾控制序列
5)、故障總是會發生
組成分布式系統的所有計算機,都有可能發生任何形式的故障。
一個被大量工程實踐過的黃金定理是:任何在設計階段考慮到的異常情況一定會在系統實際運行中發生,並且,在系統實際運行中還會遇到很多在設計時未考慮到的異常故障。所以,除非需求指標允許,在系統設計時不能放過任何異常情況
6)、處理單點故障
在整個分布式系統中,如果某個角色或者功能只有某台單機在支撐,那么這個節點稱為單點,其發生的故障稱為單點故障,也就是通常說的
SPoF(Single Point of Failure),避免單點故障的關鍵就是把這個功能從單機實現變為集群實現,當然,這種變化一般會比較困難,否則就
不會有單點問題了。如果不能把單點變為集群實現,那么一般還有兩種選擇:
(1)給這個單點做好備份,能夠在出現問題時進行恢復,並且盡量做到自動恢復
(2)降低單點故障的影響范圍
以下來自百度:
分布式存儲是一種數據存儲技術,通過網絡使用企業中的每台機器上的磁盤空間,並將這些分散的存儲資源構成一個虛擬的存儲設備,
數據分散的存儲在企業的各個角落.
分布式系統的意義
從單機單用戶到單機多用戶,再到現在的網絡時代,應用系統發生了很多的變化。而分布式系統依然是目前很熱門的討論話題,那么,分布
式系統給我們帶來了什么,或者說是為什么要有分布式系統呢?從三方面考慮:
1、升級單機處理能力的性價比越來越低
摩爾定律:當價格不變時,每隔18個月,集成電路上可容納的晶體管數目會增加一倍,性能也將提升一倍。這個定律告訴我們,隨着時間
的推移,單位成本的支出所能購買的計算機能力在提升。不過,如果我們把時間固定下來 ,也就是固定在某個具體時間點來購買單顆不同
型號的處理器,那么所購買的處理器性能越高,所要付出的成本就越高,性價比就越低。那么,也就是說在一個確定的時間點,通過更換
硬件做垂直擴展的方式來提升性能會越來越不划算
2、單機處理能力存在瓶頸
某個固定時間點,單顆處理器有自己的性能瓶頸,也就說即使願意花更多的錢去買計算能力也買不到了
3、出於穩定性和可用性的考慮
如果采用單擊系統,那么在這台機器正常的時候一切OK,一旦出問題,那么系統就完全不能用了。當然,可以考慮做容災備份等方案,而
這些方案就會讓系統演變為分布式系統了,傳統的網絡存儲系統采用集中的存儲服務器存放所有數據,存儲服務器成為系統性能的瓶頸,也是可靠性和安全性的焦點,不能滿足大規模存儲應用的需要。分布式網絡存儲系統采用可擴展的系統結構,利用多台存儲服務器分擔存儲負荷,利用位置服務器定位存儲信息,它不但提高了系統的可靠性、可用性和存取效率,還易於擴展。
主流分布式存儲對比
普通存儲方案:DAS(IDE/SATA/SAS/SCSI等塊)、NAS(NFS、CIFS、SAMBA等文件系統)、SAN(FibreChannel, iSCSI, FoE存儲網絡塊),Openfiler、FreeNas(ZFS快照復制)
由於生產環境中往往由於對存儲數據量很大,而SAN存儲價格又比較昂貴,因此大多會選擇分布式存儲來解決以下問題:
1. 海量數據存儲問題
2. 數據高可用問題(冗余備份)問題
3. 較高的讀寫性能和負載均衡問題
4. 支持多平台多語言問題
5. 高並發問題
主流分布式存儲對比:

主流分布式存儲介紹
開源協議說明
GPL: 不允許修改后和衍生的代碼做為閉源的商業軟件發布和銷售,修改后該軟件產品必須也采用GPL協議;
GPLV2:修改文本的整體就必須按照GPL流通,不僅該修改文本的源碼必須向社會公開,而且對於這種修改文本的流通不准許附加
修改者自己作出的限制;
GPLV3:要求用戶公布修改的源代碼,還要求公布相關硬件;
LGPL:更寬松的GPL
TFS
TFS(Taobao File System)是由淘寶開發的一個分布式文件系統,其內部經過特殊的優化處理,適用於海量的小文件存儲,目前
已經對外開源;
TFS采用自有的文件系統格式存儲,因此需要專用的API接口去訪問,目前官方提供的客戶端版本有:C++/JAVA/PHP。
特性
1)在TFS文件系統中,NameServer負責管理文件元數據,通過HA機制實現主備熱切換,由於所有元數據都是在內存中,其處理效
率非常高效,系統架構也非常簡單,管理也很方便;
2)TFS的DataServer作為分部署數據存儲節點,同時也具備負載均衡和冗余備份的功能,由於采用自有的文件系統,對小文件會采
取合並策略,減少數據碎片,從而提升IO性能;
3)TFS將元數據信息(BlockID、FileID)直接映射至文件名中,這一設計大大降低了存儲元數據的內存空間;
優點
1)針對小文件量身定做,隨機IO性能比較高;
2)支持在線擴容機制,增強系統的可擴展性;
3)實現了軟RAID,增強系統的並發處理能力及數據容錯恢復能力;
4)支持主備熱切換,提升系統的可用性;
5)支持主從集群部署,其中從集群主要提供讀/備功能;
缺點
1)TFS只對小文件做優化,不適合大文件的存儲;
2)不支持POSIX通用接口訪問,通用性較低;
3)不支持自定義目錄結構,及文件權限控制;
4)通過API下載,存在單點的性能瓶頸;
5)官方文檔非常少,學習成本高;
應用場景
1)多集群部署的應用
2)存儲后基本不做改動
3)海量小型文件
根據目前官方提供的材料,對單個集群節點,存儲節點在1000台以內可以良好工作,如存儲節點擴大可能會出現NameServer的性能
瓶頸,目前淘寶線上部署容量已達到1800TB規模(2009年數據)
FastDFS
FastDFS是國人開發的一款分布式文件系統,目前社區比較活躍。系統中存在三種節點:Client、Tracker、Storage,在底
層存儲上通過邏輯的分組概念,使得通過在同組內配置多個Storage,從而實現軟RAID10,提升並發IO的性能、簡單負載均衡及數據的
冗余備份;同時通過線性的添加新的邏輯存儲組,從容實現存儲容量的線性擴容。
文件下載上,除了支持通過API方式,目前還提供了apache和nginx的插件支持,同時也可以不使用對應的插件,直接以Web靜態資源
方式對外提供下載。
目前FastDFS(V4.x)代碼量大概6w多行,內部的網絡模型使用比較成熟的libevent三方庫,具備高並發的處理能力。
特性
1)在上述介紹中Tracker服務器是整個系統的核心樞紐,其完成了訪問調度(負載均衡),監控管理Storage服務器,由此可見Tracker
的作用至關重要,也就增加了系統的單點故障,為此FastDFS支持多個備用的Tracker,雖然實際測試發現備用Tracker運行不是非常
完美,但還是能保證系統可用。
2)在文件同步上,只有同組的Storage才做同步,由文件所在的源Storage服務器push至其它Storage服務器,目前同步是采用Binlog方式
實現,由於目前底層對同步后的文件不做正確性校驗,因此這種同步方式僅適用單個集群點的局部內部網絡,如果在公網上使用,
肯定會出現損壞文件的情況,需要自行添加文件校驗機制。
3)支持主從文件,非常適合存在關聯關系的圖片,在存儲方式上,FastDFS在主從文件ID上做取巧,完成了關聯關系的存儲。
優點
1)系統無需支持POSIX(可移植操作系統),降低了系統的復雜度,處理效率更高
2)支持在線擴容機制,增強系統的可擴展性
3)實現了軟RAID,增強系統的並發處理能力及數據容錯恢復能力
4)支持主從文件,支持自定義擴展名
5)主備Tracker服務,增強系統的可用性
缺點
1)不支持斷點續傳,對大文件將是噩夢(FastDFS不適合大文件存儲)
2)不支持POSIX通用接口訪問,通用性較低
3)對跨公網的文件同步,存在較大延遲,需要應用做相應的容錯策略
4)同步機制不支持文件正確性校驗,降低了系統的可用性
5)通過API下載,存在單點的性能瓶頸
應用場景
1)單集群部署的應用
2)存儲后基本不做改動
3)小中型文件根據
目前官方提供的材料,現有的使用FastDFS系統存儲容量已經達到900T,物理機器已經達到100台(50個組)
MooseFS
MooseFS是一個高可用的故障容錯分布式文件系統,它支持通過FUSE方式將文件掛載操作,同時其提供的web管理界面非常方便
查看當前的文件存儲狀態。
特性
1)從下圖中我們可以看到MooseFS文件系統由四部分組成:Managing Server 、Data Server 、Metadata Backup Server 及Client
2)其中所有的元數據都是由Managing Server管理,為了提高整個系統的可用性,MetadataBackup Server記錄文件元數據操作日
志,用於數據的及時恢復
3)Data Server可以分布式部署,存儲的數據是以塊的方式分布至各存儲節點的,因此提升了系統的整體性能,同時Data Server
提供了冗余備份的能力,提升系統的可靠性
4)Client通過FUSE方式掛載,提供了類似POSIX的訪問方式,從而降低了Client端的開發難度,增強系統的通用性
元數據服務器(master):負責各個數據存儲服務器的管理,文件讀寫調度,文件空間回收以及恢復
元數據日志服務器(metalogger):負責備份master服務器的變化日志文件,以便於在master server出問題的時候接替其進行工作
數據存儲服務器(chunkserver):數據實際存儲的地方,由多個物理服務器組成,負責連接管理服務器,聽從管理服務器調度,提
供存儲空間,並為客戶提供數據傳輸;多節點拷貝;在數據存儲目錄,看不見實際的數據
優點
1)部署安裝非常簡單,管理方便
2)支持在線擴容機制,增強系統的可擴展性
3)實現了軟RAID,增強系統的 並發處理能力及數據容錯恢復能力
4)數據恢復比較容易,增強系統的可用性5)有回收站功能,方便業務定制
缺點
1)存在單點性能瓶頸及單點故障
2)MFS Master節點很消耗內存
3)對於小於64KB的文件,存儲利用率較低
應用場景
1)單集群部署的應用
2)中、大型文件
GlusterFS
GlusterFS是Red Hat旗下的一款開源分布式文件系統,它具備高擴展、高可用及高性能等特性,由於其無元數據服務器的設計,
使其真正實現了線性的擴展能力,使存儲總容量可輕松達到PB級別,支持數千客戶端並發訪問;對跨集群,其強大的Geo-Replication
可以實現集群間數據鏡像,而且是支持鏈式復制,這非常適用於垮集群的應用場景
特性
1)目前GlusterFS支持FUSE方式掛載,可以通過標准的NFS/SMB/CIFS協議像訪問本體文件一樣訪問文件系統,同時其也支持
HTTP/FTP/GlusterFS訪問,同時最新版本支持接入Amazon的AWS系統
2)GlusterFS系統通過基於SSH的命令行管理界面,可以遠程添加、刪除存儲節點,也可以監控當前存儲節點的使用狀態
3)GlusterFS支持集群節點中存儲虛擬卷的擴容動態擴容;同時在分布式冗余模式下,具備自愈管理功能,在Geo冗余模式下,文件
支持斷點續傳、異步傳輸及增量傳送等特點
優點
1)系統支持POSIX(可移植操作系統),支持FUSE掛載通過多種協議訪問,通用性比較高
2)支持在線擴容機制,增強系統的可擴展性
3)實現了軟RAID,增強系統的 並發處理能力及數據容錯恢復能力
4)強大的命令行管理,降低學習、部署成本
5)支持整個集群鏡像拷貝,方便根據業務壓力,增加集群節點
6)官方資料文檔專業化,該文件系統由Red Hat企業級做維護,版本質量有保障
缺點
1)通用性越強,其跨越的層次就越多,影響其IO處理效率
2)頻繁讀寫下,會產生垃圾文件,占用磁盤空間
應用場景
1)多集群部署的應用
2)中大型文件根據目前官方提供的材料,現有的使用GlusterFS系統存儲容量可輕松達到PB
術語:
brick:分配到卷上的文件系統塊;
client:掛載卷,並對外提供服務;
server:實際文件存儲的地方;
subvolume:被轉換過的文件系統塊;
volume:最終轉換后的文件系統卷。
Ceph
Ceph是一個可以按對象/塊/文件方式存儲的開源分布式文件系統,其設計之初,就將單點故障作為首先要解決的問題,
因此該系統具備高可用性、高性能及可擴展等特點。該文件系統支持目前還處於試驗階段的高性能文件系統BTRFS(B-Tree
文件系統),同時支持按OSD方式存儲,因此其性能是很卓越的, 因為該系統處於試商用階段,需謹慎引入到生產環境
特性
1)Ceph底層存儲是基於RADOS(可靠的、自動的分布式對象存儲),它提供了LIBRADOS/RADOSGW/RBD/CEPHFS方式
訪問底層的存儲系統
2)通過FUSE,Ceph支持類似的POSIX訪問方式;Ceph分布式系統中最關鍵的MDS節點是可以部署多台,無單點故障的
問題,且處理性能大大提升
3)Ceph通過使用CRUSH算法動態完成文件inode number到object number的轉換,從而避免再存儲文件metadata信息,
增強系統的靈活性
優點
1)支持對象存儲(OSD)集群,通過CRUSH算法,完成文件動態定位, 處理效率更高
2)支持通過FUSE方式掛載,降低客戶端的開發成本,通用性高
3)支持分布式的MDS/MON,無單點故障
4)強大的容錯處理和自愈能力
5)支持在線擴容和冗余備份,增強系統的可靠性
缺點
1)目前處於試驗階段,系統穩定性有待考究
應用場景
1)全網分布式部署的應用
2)對實時性、可靠性要求比較高. 官方宣傳,存儲容量可輕松達到PB級別
參考:
http://ceph.com/