天天看點

V 10 glusterfs(1)

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)中的超大檔案(&gt;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通路:

資料自修複:

按需同步進行--&gt;完全人工掃描--&gt;并發自動修複--&gt;基于日志

鏡像檔案副本保持一緻性;

觸發時機(通路檔案目錄時);

判斷依據(擴充屬性);

腦殘問題(報錯或按規則處理);

容量LB:

rebalance後hash範圍均衡分布,如添加一node會全局都變動;

目标(優化資料分布,最小化資料遷移);

資料遷移自動化、智能化、并行化

檔案更名:

fileA--&gt;fileB,原先的hash映射關系失效,大檔案難以實時遷移;

大量采用檔案符号連結,通路時解析重定向;

容量負載優先:

設定容量門檻值,優先選擇可用容量充足的brick;

hash目标brick上建立檔案符号連結,通路時重定向

glusterfs測試方法(功能性測試(廣義&amp;狹義)、資料一緻性測試、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(大檔案,&gt;=4g);

extract、tar(linux核心源碼樹);

copy、recopy、remove(linux核心源碼樹);

list、find(linux核心源碼樹);

編譯linux核心;

create、copy、remove(海量檔案目錄,&gt;=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,如需轉載請自行聯系原作者

繼續閱讀