glusterfs,GNU cluster file system,創始人Anand Babu Periasamy,目标:代替開源Lustre和商業産品GPFS,glusterfs是什麼:
cloud storage;
分布式檔案系統(POSIX相容);
elasticity(flexibility adapt to growth/reduction,add,delete volumes&users without disruption);
無中心架構(無中繼資料server),eliminate metadata(improve file access speed);
scale out橫向擴充(容量、性能)、高性能、高可用,scale linearly(multiple dimentions(performance;capacity);aggregated resources);
叢集式NAS存儲系統;
采用異構的标準商業硬體、infiniband;
資源池(聚合存儲和記憶體);
全局統一命名空間;
自動複制和自動修複;
易于部署和使用,simplicity(ease of management,no complex kernel pathces,run in user space);
glusterfs是開源的分布式FS,具有強大的橫向擴充能力,支援數PB級存儲容量和處理數千用戶端,借助tcp/ip或infiniband RDMA将實體分布的存儲資源聚焦在一起,使用單一全局命名空間管理資料,基于可堆疊的使用者空間設計,可為各種不同的資料負載提供優異的性能;
優點(無中繼資料據服務設計,彈性hash,scale out;高性能,PB級容量,GB級吞吐量,數百叢集規模;使用者空間子產品化堆棧設計;高可用性,支援自動複制和自動修複;适合大檔案存儲);
不足(小檔案性能表現差;系統OPS表現差;複制存儲使用率低(HA和糾删碼方案))
2006年有此項目:
06-09年,glusterfs v1.0-3.0(分布式FS、自修複、同步副本、條帶、彈性hash算法);
10年,glusterfs v3.1(彈性雲能力);
11年,glusterfs v3.2(遠端複制、監控、quota、redhat 1.36億$收購);
12年,glusterfs v3.3(對象存儲、HDFS相容、主動自修複、細粒度鎖、複制優化);
13年,glusterfs v3.4(libfapi、quorum機制、虛拟機存儲優化、同步複制優化、POSIX ACL支援);
glusterfs架構優勢:軟體定義、無中心架構、全局統一命名空間、高性能、高可用、堆棧式使用者空間設計、彈性橫向擴充、高速網絡通信、資料自動修複
glusterfs高性能記錄32GBs(server-side,64 bricks with ib-verbs transport;client-side,cluster of 220 servers)
http://blog.csdn.net/liuaigui/
應用場景:
結構化和半結構化資料;非結構化資料存儲(檔案);歸檔、容災;虛拟機存儲;雲存儲;内容雲;大資料;
解決方案:
媒體/cdn;備份、歸檔、容災;海量資料共享;使用者home目錄;高性能計算;雲存儲
glusterfs彈性卷管理:
<a href="http://s5.51cto.com/wyfs02/M01/87/0A/wKiom1fSH4uRp6naAAIDHVB7M6Y166.jpg" target="_blank"></a>
彈性hash算法(無集中式中繼資料服務(消除性能瓶頸、提高可靠性);使用davies-meyer算法計算32bit hash值,輸入參數為檔案名;根據hash值在叢集中選擇子卷(存儲伺服器),進行檔案定位;對所選的子卷進行資料通路;例如brick1(00000000-3FFFFFFF),brick2(4FFFFFFF-7FFFFFFF),brick3(8FFFFFFF-BFFFFFFF));
采用hash算法定位檔案(基于路徑和檔案名;DHT,distributed hash table,一緻性hash);
彈性卷管理(檔案存儲在邏輯卷中;邏輯卷從實體存儲池中劃分;邏輯卷可線上進行擴容和縮減);
<a href="http://s1.51cto.com/wyfs02/M01/87/08/wKioL1fSH6Kh8xq5AAA6L2rTL94083.jpg" target="_blank"></a>
DHT(glusterfs彈性擴充的基礎;确定目标hash和brick之間的映射關系):
<a href="http://s3.51cto.com/wyfs02/M02/87/0A/wKiom1fSH6_BDSldAAA7oQxd1VU575.jpg" target="_blank"></a>
添加node後(最小化資料重配置設定;老資料配置設定模式不變,新資料分布到所有node上;執行rebalance(在非通路高峰時段操作),資料重新分布)
<a href="http://s5.51cto.com/wyfs02/M00/87/08/wKioL1fSH7ziwFT3AABHYuttmq8242.jpg" target="_blank"></a>
glusterfs總體架構:
<a href="http://s2.51cto.com/wyfs02/M02/87/08/wKioL1fSH9PzDdo4AAFcG6myN7E971.jpg" target="_blank"></a>
堆棧式軟體架構:
<a href="http://s3.51cto.com/wyfs02/M00/87/0A/wKiom1fSH-XSz4WZAAUFzRXNUgM788.jpg" target="_blank"></a>
全局統一命名空間(通過分布式FS将實體分散的存儲資源虛拟化成統一的存儲池):
<a href="http://s1.51cto.com/wyfs02/M02/87/0A/wKiom1fSH_jgXLF5AABW2LVd1RA459.jpg" target="_blank"></a>
<a href="http://s2.51cto.com/wyfs02/M01/87/0A/wKiom1fSIAeD4uS2AAEJlx2sEKU574.jpg" target="_blank"></a>
無集中中繼資料服務:
<a href="http://s1.51cto.com/wyfs02/M02/87/0A/wKiom1fSIBfCkUOuAABXJXIomEc420.jpg" target="_blank"></a>
基本概念:
brick(a file system mountpoint; a unit of storage used as a glusterfs building block);
translator(logic between the bits and the global namespace; layered to provide glusterfs functionality);
volume(bricks combined and passed through translators);
node/peer(server running the gluster daemon and sharing volumes);
<a href="http://s1.51cto.com/wyfs02/M00/87/0A/wKiom1fSICbS8vuXAAC4-0PxmbE553.jpg" target="_blank"></a>
glusterfs卷類型(基本卷、複合卷):
基本卷:
哈希卷(distributed volume,檔案通過hash算法在所有brick上分布,檔案級raid0,不具有容錯能力);
<a href="http://s4.51cto.com/wyfs02/M02/87/08/wKioL1fSIDKRNDlSAABjmzAmCOU103.jpg" target="_blank"></a>
複制卷(replicated volume,生産常用,檔案同步複制到多個brick上,檔案級raid1,具有容錯能力,w性能下降r性能提升);
<a href="http://s3.51cto.com/wyfs02/M00/87/0A/wKiom1fSIT_gl93yAABfm1QA8uw032.jpg" target="_blank"></a>
條帶卷(striped volume,不建議使用,單個檔案分布到多個brick上,支援超大檔案,類似raid0,rr方式round-robin,通常用于HPC(high performance compute)中的超大檔案(>10G的單個檔案)及高并發環境(多人同時通路同一個檔案));
<a href="http://s1.51cto.com/wyfs02/M01/87/09/wKioL1fSIVHD7nKbAABhvP0fQvM575.jpg" target="_blank"></a>
複合卷:
哈希複制卷(distributed replicated volume,生産常用,同時具有哈希卷和複制卷的特點);
<a href="http://s1.51cto.com/wyfs02/M02/87/0A/wKiom1fSIV_QhvaBAAB9HyGzJ2U126.jpg" target="_blank"></a>
哈希條帶卷(distributed striped volume);
<a href="http://s2.51cto.com/wyfs02/M00/87/0A/wKiom1fSIXTAnw12AAB8siauzu4848.jpg" target="_blank"></a>
複制條帶卷(replicated striped vlume);
<a href="http://s3.51cto.com/wyfs02/M00/87/09/wKioL1fSIY2iFsV3AAB4B03V1cg556.jpg" target="_blank"></a>
哈希複制條帶卷(distributed replicated striped volume);
<a href="http://s4.51cto.com/wyfs02/M00/87/0A/wKiom1fSIZ-zTyj6AACZg3riPyE346.jpg" target="_blank"></a>
glusterfs通路接口:
fuse architecture:
<a href="http://s2.51cto.com/wyfs02/M00/87/09/wKioL1fSId2AnuucAABScgfh7p4906.jpg" target="_blank"></a>
gluster資料流:
<a href="http://s5.51cto.com/wyfs02/M02/87/0A/wKiom1fSIerCZlUkAABZeB4aYkA977.jpg" target="_blank"></a>
fuse w,libgfapi通路:
<a href="http://s3.51cto.com/wyfs02/M02/87/09/wKioL1fSIfjgweGnAABX3qJiYyA256.jpg" target="_blank"></a>
libgfapi通路:
資料自修複:
按需同步進行-->完全人工掃描-->并發自動修複-->基于日志
鏡像檔案副本保持一緻性;
觸發時機(通路檔案目錄時);
判斷依據(擴充屬性);
腦殘問題(報錯或按規則處理);
容量LB:
rebalance後hash範圍均衡分布,如添加一node會全局都變動;
目标(優化資料分布,最小化資料遷移);
資料遷移自動化、智能化、并行化
檔案更名:
fileA-->fileB,原先的hash映射關系失效,大檔案難以實時遷移;
大量采用檔案符号連結,通路時解析重定向;
容量負載優先:
設定容量門檻值,優先選擇可用容量充足的brick;
hash目标brick上建立檔案符号連結,通路時重定向
glusterfs測試方法(功能性測試(廣義&狹義)、資料一緻性測試、POSIX語義相容性測試、部署方式測試、可用性測試、擴充性測試、穩定性測試、壓力測試、性能測試):
功能性測試(手動或測試腳本;glusterfs(建立、啟動、停止、删除卷操作,設定等);FS的功能性測試(fstest檔案控制與操作;系統API調用LTP;鎖應用locktest);
資料一緻性測試(測試存入與讀出的資料是否一緻,方法:md5加密、diff、編譯核心等)
POSIX語義測試(PCTS、LTP);
部署方式測試(測試不同場景下的系統部署方式,自動安裝配置,叢集規模,網絡、存儲等配置);
可用性測試(測試系統的高可用性,叢集中某些server或disk、network等錯誤情況下系統是否可用,管理是否簡單可靠,覆寫功能點(副本、自修複、管理服務));
擴充性測試(測試系統的彈性擴充功能;擴充系統後的性能影響;線性擴充能力);
穩定性測試(驗證系統在長時間運作下,是否正常,功能是否正常,使用LTP、iozone、postmark進行自動化測試);
壓力測試(驗證在大壓力下,系統運作及資源消耗情況,iozone、postmark工具進行自動化測試;top、iostat、sar等進行系統監控);
性能測試(系統在不同負載情況下的性能,iozone(帶寬)、postmark(ops)、fio(iops)、dd工具進行自動化測試;關鍵點(順序rw、随機rw、目錄操作(建立、删除、查找、更新)、大量小檔案rw、大檔案rw);主要衡量名額(iops随機小檔案随機rw能力、帶寬、大檔案連續rw能力);其它衡量名額(cpu使用率、iowait));
dd(大檔案,順序rw,帶寬,單程序,臨時檔案,手動記錄結果,無法重定向):
#dd if=/dev/zero of=/mnt/mountpoint/filebs=1M count=100 #(w)
#dd if=/mnt/mountpoint/file of=/dev/nullbs=1M #(r)
iozone(順序/随機rw,帶寬,多程序,臨時檔案可選留存,可自動生成excel表記錄結果值):
#iozone -t 1 -s 1g -r 128k -i 0 -i 1 -i 2-R -b /result.xls -F /mnt/mountpoint/file
-t(程序數);
-s(測試的檔案大小);
-r(檔案塊大小);
-i #(用來指定測試内容);
-R(産生excel格式的輸出日志);
-b(産生二進制的excel日志);
-F(指定測試的臨時檔案組);
-g(指定最大測試檔案大小);
postmark(ops,中繼資料操作(建立、r、w、附加、删除),小檔案,單程序,可重定向結果,無遺留臨時檔案,使用方法(配置檔案或CLI)):
常用參數:
set size min_size max_size(設定檔案大小的上下限)
set number XXX(設定并發檔案數)
set seed XXX(設定随機數種子)
set transactions XXX(設定事務數)
set location(設定工作目錄,要是已有目錄,預設目前目錄)
set subdirectory n n(為每個工作目錄下的子目錄個數)
set read n(設定rw塊大小)
set write n
fio(iops,中繼資料操作(建立、r、w、附加、删除),小檔案,多程序,可重定向結果,無遺留臨時檔案,使用方法(配置檔案或CLI)):
參數:
filename=/tmp/file(測試檔案名)
direct=1(測試過程繞過機器自帶的buffer)
rw=randrw(測試随機r和w的io)
bs=16k(單次io的塊檔案大小為16k)
bsrange=512-2048(同上,指定資料塊的大小範圍)
size=5g(測試檔案大小為5g)
numjobs=30(測試線程數)
runtime=1000(測試時間1000s,若不寫則寫完為止)
ioengine=sync(io引擎使用sync方式)
rwmixwrite=30(在混合rw的模式下,寫占30%)
其它性能測試:
FS(make、mount、umount、remount);
copy、recopy、remove(大檔案,>=4g);
extract、tar(linux核心源碼樹);
copy、recopy、remove(linux核心源碼樹);
list、find(linux核心源碼樹);
編譯linux核心;
create、copy、remove(海量檔案目錄,>=1000000)
FS分類:
分布式FS(c/s架構或網絡FS;資料不是本地直連方式);
叢集FS(分布式FS的一個子集;多node協同服務,不存在單點);
并行FS(支援MPI等并行應用;并發rw,所有node可同時rw同一個檔案);
産品:
商業:EMC的isilon;IBM的sonas;HP的X9000;huawei的oceanstor9000;blue whale的BWFS;loongcun的LoongStore;
開源:Lustre;glusterfs;ceph;moosefs;HDFS;fastDFS;TFS
moosefs:
moosefs是一個高容錯性的分布式FS,它能夠将資源分布存儲在幾台不同的實體媒體,對外隻提供給使用者一個通路接口;高可靠性(資料可被存儲于幾個不同的地方);可擴充性(可動态的添加server或disk來增加容量);高可控性(系統能設定删除檔案的時間間隔);可追溯性(能根據檔案的不同操作,r or w,生成檔案快照;
lustreFS:
LustreFS是一個基于對象存儲的開源分布式FS,提供與POSIX相容的FS接口;目前lustreFS最多可支援10w個client,1K個oss和2個MDS節點;實驗與應用已證明,lustreFS的性能和可擴充性都不錯;還擁有基于對象的智能化存儲、安全的認證機制、完善的容錯機制,而且實作了檔案鎖功能;SUN說lustre是目前全球具有最佳可擴充性的并行FS,現全球十大超級計算機中的6個以及top100中的40%的超級計算機都采用了這個系統;
lustre組成:
中繼資料存儲管理(MDS負責管理中繼資料,提供一個全局的命名空間,client可通過MDS讀取到儲存于MDT之上的中繼資料,在lustre中MDS可有2個,采用了active-standby的容錯機制,當其中一個MDS故障另一個MDS啟動服務接替,MDT隻能有1個,不同MDS之間共享通路同一個MDT);
檔案資料存儲與管理(OSS負責提供i/o服務,接受并服務來自網絡的請求,通過OSS,可通路到儲存在OST上的檔案資料,一個OSS對應2-8個OST,OST上的檔案資料是以分條的形式儲存的,檔案的分條可在一個OSS之中,也可儲存在多個OSS中,lustre的特色之一是其資料是基于對象的職能存儲的,與傳統的基于塊的存儲方式有所不同);
lustre系統通路入口(通過client來通路系統,client為挂載了lustreFS的任意node,client提供了linux下VFS與lustre系統之間的接口,通過client使用者可通路操作lustre系統中的檔案);
<a href="http://s4.51cto.com/wyfs02/M02/87/09/wKioL1fSIjyhP66dAAAqyAlXxn8456.jpg" target="_blank"></a>
ceph:
ceph是一個開源的分布式塊、對象和檔案統一存儲平台,sage weil專為其博士論文設計的新一代自由軟體分布式FS,2010年,linus torvalds将ceph client合并到2.6.34的kernel中;優點:中繼資料叢集、動态中繼資料分區、智能對象存儲系統、支援PB級存儲、高可靠性、支援複制、自動故障探測與修改、自适應滿足不同應用負載、大檔案和小檔案均表現好;不足:資料可用性更多依賴底層FS,btrfs,複制存儲使用率低,設計和實作太過複雜,管理也複雜,目前仍不成熟,不建議用于生産環境
開源并行FS比較(glusterfs VS moosefs VS lustre VS ceph):
比較次元
Glusterfs
Moosefs
Lustre
Ceph
成熟度
2005年釋出第一個GA版1.2.3,2013年GA版3.3.2,具有成熟的系統架構和完整的工程代碼
2008年釋出第一個開源版本v1.5,13年釋出GA版v1.6.27,穩定,比較成熟的開源DFS
2003釋出第一個版本lustre1.0,2013年釋出v2.4.0,相當成熟,在HPC領域占有絕大比例
2013年釋出v0.71,并已添加到linux kernel中作實驗核心,目前不成熟有較多bug,更新穩定都是實驗版
穩定性
較穩定,無重大bug,已有較多組織或機構應用于生産環境
較穩定,無重大bug
很穩定,在HPC領域應用很多
核心元件RADOS較穩定,每3個月更新一次穩定版,有部分企業用于生産環境
複雜度
簡單,無中繼資料服務,使用者空間實作,架構清晰,xlator樹形結構
簡單,使用者空間實作,代碼規模較小,高度子產品化
複雜度較高,依賴核心實作
較複雜,c++實作,功能較多
高性能
解除中繼資料瓶頸,并行化資料通路
中繼資料單點瓶頸
高性能,HPC領域表現卓越
資料分布均衡,并行化度高
擴充性
彈性hash代替中繼資料服務,線性擴充,可輕松擴充到數百PB量級,支援動态擴容
可增加存儲server,不能增加MDS
高擴充性,容量可達數百PB,可在不打斷任何操作的情況下,通過增加新的OSS來實作動态擴充
高擴充性,支援10-1000台server,支援TB到PB的擴充,當元件發生變化時(添加或删除),自動進行資料的重分布
可用性
多中繼資料服務設計,資料分布提供三種方式的分割:AFR、DHT、stripe,支援自動複制和自動修複
中繼資料+日志伺服器,保障中繼資料server,運作時中繼資料放記憶體,可設定副本
中繼資料叢集,可部署主備切換工作方式,無副本設計,OSS之間可利用共享存儲實作自動故障恢複
中繼資料叢集,沒有單點故障,多資料副本,自動管理、自動修複,monitor監控叢集中所有節點狀态,且可有多個monitor保證可靠性
可管理性
部署簡單,易于管理和維護,使用底層FS,ext3/zfs,用戶端負載增加;提供管理工具,如卷的擴容、資料LB、目錄配額及相關監控等
部署簡單,提供web gui監控界面,中繼資料恢複,檔案恢複,資源回收筒功能,快照
部署複雜,需更新kernel等,提供管理工具,如設定目錄stripe
部署較複雜,提供工具對叢集進行監控管理,包括叢集狀态,各元件狀态等
研發成本
使用者空間實作,子產品化堆棧式架構
使用者空間實作,小規模
高,核心空間實作,且代碼規模大
較高,代碼規模大,功能多
适用性
适用以檔案為對象的存儲體系,适合大檔案存儲
小規模叢集,中繼資料瓶頸,記憶體消耗大
大檔案,HPC領域
NAS相容
支援NFS、CIFS、HTTP、FTP、gluster原生協定,與POSIX标準相容
支援CIFS、NFS,支援标準POSIX接口
采用指數
本文轉自 chaijowin 51CTO部落格,原文連結:http://blog.51cto.com/jowin/1850982,如需轉載請自行聯系原作者