日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GlusterFS架构与维护

發布時間:2023/12/31 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GlusterFS架构与维护 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

GlusterFS 外部架構

? ? GlusterFS總體架構與組成部分如圖2所示,它主要由存儲服務器(BrickServer)、客戶端以及NFS/Samba 存儲網關組成。不難發現,GlusterFS 架構中沒有元數據服務器組件,這是其最大的設計這點,對于提升整個系統的性能、可靠性和穩定性都有著決定性的意義。GlusterFS 支持TCP/IP 和InfiniBandRDMA 高速網絡互聯,客戶端可通過原生Glusterfs 協議訪問數據,其他沒有運行GlusterFS客戶端的終端可通過NFS/CIFS 標準協議通過存儲網關訪問數據。

GlusterFS內部架構

GlusterFS是模塊化堆棧式的架構設計,如上圖所示。模塊稱為Translator,是GlusterFS提供的一種強大機制,借助這種良好定義的接口可以高效簡便地擴展文件系統的功能。

1.服務端與客戶端模塊接口是兼容的,同一個translator可同時在兩邊加載。

2.GlusterFS中所有的功能都是通過translator實現,如Cluster, Storage,Performance, Protocol, Features等。

3.重點是GlusterFSClient端。

GlusterFS數據訪問流程

上圖是GlusterFS數據訪問的一個概要圖:

1.首先是在客戶端,用戶通過glusterfs的mount point 來讀寫數據。

2.用戶的這個操作被遞交給本地linux系統的VFS來處理。

3.VFS將數據遞交給FUSE內核文件系統,在啟動glusterfs客戶端以前,需要向系統注冊一個實際的文件系統FUSE,如上圖所示,該文件系統與ext3在同一個層次上面,ext3是對實際的磁片進行處理,而fuse文件系統則是將數據通過/dev/fuse這個設備文件遞交給了glusterfs client端。所以,我們可以將fuse文件系統理解為一個代理。

4.數據被fuse遞交給Glusterfs client 后,client對數據進行一些指定的處理(所謂的指定,是按照client配置文件來進行的一系列處理)

5.在glusterfsclient的處理末端,通過網路將數據遞交給Glusterfs Server,并且將數據寫入到服務器所控制的存儲設備上

技術特點

GlusterFS在技術實現上與傳統存儲系統或現有其他分布式文件系統有顯著不同之處,主要體現在如下幾個方面。

完全軟件實現(SoftwareOnly)

GlusterFS認為存儲是軟件問題,不能夠把用戶局限于使用特定的供應商或硬件配置來解決。GlusterFS采用開放式設計,廣泛支持工業標準的存儲、網絡和計算機設備,而非與定制化的專用硬件設備捆綁。對于商業客戶,GlusterFS可以以虛擬裝置的形式交付,也可以與虛擬機容器打包,或者是公有云中部署的映像。開源社區中,GlusterFS被大量部署在基于廉價閑置硬件的各種操作系統上,構成集中統一的虛擬存儲資源池。簡言之,GlusterFS是開放的全軟件實現,完全獨立于硬件和操作系統。

完整的存儲操作系統棧(CompleteStorage Operating System Stack)

GlusterFS不僅提供了一個分布式文件系統,而且還提供了許多其他重要的分布式功能,比如分布式內存管理、I/O調度、軟RAID和自我修復等。GlusterFS汲取了微內核架構的經驗教訓,借鑒了GNU/Hurd操作系統的設計思想,在用戶空間實現了完整的存儲操作系統棧。

用戶空間實現(User Space)

與傳統的文件系統不同,GlusterFS在用戶空間實現,這使得其安裝和升級特別簡便。另外,這也極大降低了普通用戶基于源碼修改GlusterFS的門檻,僅僅需要通用的C程序設計技能,而不需要特別的內核編程經驗。

模塊化堆棧式架構(ModularStackable Architecture)

GlusterFS采用模塊化、堆棧式的架構,可通過靈活的配置支持高度定制化的應用環境,比如大文件存儲、海量小文件存儲、云存儲、多傳輸協議應用等。每個功能以模塊形式實現,然后以積木方式進行簡單的組合,即可實現復雜的功能。比如,Replicate模塊可實現RAID1,Stripe模塊可實現RAID0,通過兩者的組合可實現RAID10和RAID01,同時獲得高性能和高可性。

原始數據格式存儲(DataStored in Native Formats)

GlusterFS無元數據服務設計(NoMetadata with the Elastic Hash Algorithm)以原始數據格式(如EXT3、EXT4、XFS、ZFS)儲存數據,并實現多種數據自動修復機制。因此,系統極具彈性,即使離線情形下文件也可以通過其他標準工具進行訪問。如果用戶需要從GlusterFS中遷移數據,不需要作任何修改仍然可以完全使用這些數據。

對Scale-Out存儲系統而言,最大的挑戰之一就是記錄數據邏輯與物理位置的映像關系,即數據元數據,可能還包括諸如屬性和訪問權限等信息。傳統分布式存儲系統使用集中式或分布式元數據服務來維護元數據,集中式元數據服務會導致單點故障和性能瓶頸問題,而分布式元數據服務存在性能負載和元數據同步一致性問題。特別是對于海量小文件的應用,元數據問題是個非常大的挑戰。

GlusterFS獨特地采用無元數據服務的設計,取而代之使用算法來定位文件,元數據和數據沒有分離而是一起存儲。集群中的所有存儲系統服務器都可以智能地對文件數據分片進行定位,僅僅根據文件名和路徑并運用算法即可,而不需要查詢索引或者其他服務器。這使得數據訪問完全并行化,從而實現真正的線性性能擴展。無元數據服務器極大提高了GlusterFS的性能、可靠性和穩定性。

一些設計與討論

無元數據服務器vs 元數據服務器

無元數據服務器設計的好處是沒有單點故障和性能瓶頸問題,可提高系統擴展性、性能、可靠性和穩定性。對于海量小文件應用,這種設計能夠有效解決元數據的難點問題。它的負面影響是,數據一致問題更加復雜,文件目錄遍歷操作效率低下,缺乏全局監控管理功能。同時也導致客戶端承擔了更多的職能,比如文件定位、名字空間緩存、邏輯卷視圖維護等等,這些都增加了客戶端的負載,占用相當的CPU 和內存。

用戶空間vs內核空間

用戶空間實現起來相對要簡單許多,對開發者技能要求較低,運行相對安全。用戶空間效率低,數據需要多次與內核空間交換,另外GlusterFS 借助FUSE 來實現標準文件系統接口,性能上又有所損耗。內核空間實現可以獲得很高的數據吞吐量,缺點是實現和調試非常困難,程序出錯經常會導致系統崩潰,安全性低。縱向擴展上,內核空間要優于用戶空間,GlusterFS 有橫向擴展能力來彌補。

堆棧式vs 非堆棧式

這有點像操作系統的微內核設計與單一內核設計之爭。GlusterFS 堆棧式設計思想源自GNU/Hurd 微內核操作系統,具有很強的系統擴展能力,系統設計實現復雜性降低很多,基本功能模塊的堆棧式組合就可以實現強大的功能。查看GlusterFS卷配置文件我們可以發現,translator 功能樹通常深達10層以上,一層一層進行調用,效率可見一斑。非堆棧式設計可看成類似Linux 的單一內核設計,系統調用通過中斷實現,非常高效。后者的問題是系統核心臃腫,實現和擴展復雜,出現問題調試困難。

原始存儲格式vs 私有存儲格式

GlusterFS使用原始格式存儲文件或數據分片,可以直接使用各種標準的工具進行訪問,數據互操作性好,遷移和數據管理非常方便。然而,數據安全成了問題,因為數據是以平凡的方式保存的,接觸數據的人可以直接復制和查看。這對很多應用顯然是不能接受的,比如云存儲系統,用戶特別關心數據安全,這也是影響公有云存儲發展的一個重要原因。私有存儲格式可以保證數據的安全性,即使泄露也是不可知的。GlusterFS 要實現自己的私有格式,在設計實現和數據管理上相對復雜一些,也會對性能產生一定影響。

大文件vs 小文件

GlusterFS 適合大文件還是小文件存儲?彈性哈希算法和Stripe 數據分布策略,移除了元數據依賴,優化了數據分布,提高數據訪問并行性,能夠大幅提高大文件存儲的性能。對于小文件,無元數據服務設計解決了元數據的問題。但GlusterFS 并沒有在I/O 方面作優化,在存儲服務器底層文件系統上仍然是大量小文件,本地文件系統元數據訪問是一個瓶頸,數據分布和并行性也無法充分發揮作用。因此,GlusterFS 適合存儲大文件,小文件性能較差,還存在很大優化空間。

可用性vs 存儲利用率

GlusterFS使用復制技術來提供數據高可用性,復制數量沒有限制,自動修復功能基于復制來實現。可用性與存儲利用率是一個矛盾體,可用性高存儲利用率就低,反之亦然。采用復制技術,存儲利用率為1/復制數,鏡像是50%,三路復制則只有33%。其實,可以有方法來同時提高可用性和存儲利用率,比如RAID5的利用率是(n-1)/n,RAID6是(n-2)/n,而糾刪碼技術可以提供更高的存儲利用率。但是,魚和熊掌不可得兼,它們都會對性能產生較大影響。

術語表:

Xlator=translator:glusterfs 模塊的代名詞

Brick :存儲目錄是Glusterfs 的基本存儲單元,由可信存儲池中服務器上對外

輸出的目錄表示。存儲目錄的格式由服務器和目錄的絕對路徑構成,具體如下:

SERVER:EXPORT.例如:myhostname:/exports/myexportdir/

Volume :卷是存儲目錄的邏輯組合。大部分gluster 管理操作是在卷上進行的。

Metadata:元數據關于數據的數據,用于描述文件、目錄等的相關信息。

FUSE=Filesystem inUserspace:?是一個內核模塊,允許用戶創建自己的文件系

統無需修改內核代碼。

Glusterd :?Glusterfs 后臺進程,運行在所有Glusterfs 節點上。

DistributeVolume:?分布式卷

ReplicateVolume:?副本卷

StripeVolume:?條帶卷

DistributeReplicate Volume:?分布式副本卷

DHT=Distribute HashTable

AFR=Automatic FileReplication

SAN =?Storage AreaNetwork: 存儲區域網絡是一種高速網絡或子網絡,提供在計算機與存儲之間的數據傳輸。

NAS = Network-attachedstorage:網絡附屬存儲是一種將分布、獨立的數據整合為大型、集中化管理的數據中心,以便于對不同主機和應用服務器進行訪問的技術。

RPC =Remote ProcedureCall:?遠程過程調用

XDR =eXtern DataRepresentation: RPC?傳遞數據的格式

CLI=Command LineInterface?控制臺

argp=Argument Parser

UUID=University?UnqiueIdentifier

SVC =service

CLNT =client

MGMT=management

cbks =?Call Backs

ctx =?context

lk =?lock

attr =?attribute

txn =?transaction

rb =?replace brick

worm =?write once , readmany

系統配額:

1、開啟/關閉系統配額

1 gluster?volume?quota?VOLNAME?enable/disable


2、設置(重置)目錄配額

1 2 gluster?volume?quota?VOLNAME?limit-usage?/img?limit-value gluster?volume?quota?img?limit-usage?/quota?10GB


設置img 卷下的quota 子目錄的限額為10GB。這個目錄是以系統掛載目錄為根目錄”/”,所以/quota 即客戶端掛載目錄下的子目錄quota

3、配額查看

1 2 gluster?volume?quota?VOLNAME?list gluster?volume?quota?VOLNAME?list


可以使用如上兩個命令進行系統卷的配額查看,第一個命令查看目的卷的所有配額設置,

第二個命令則是執行目錄進行查看。可以顯示配額大小及當前使用容量,若無使用容量(最小0KB)則說明設置的目錄可能是錯誤的(不存在)。

?地域復制:

1 gluster?volume?geo-replication?MASTER?SLAVE?start/status/stop

?//地域復制是系統提供的災備功能,能夠將系統的全部數據進行異步的增量備份到另外的磁盤中。

1 gluster?volume?geo-replication?img?192.168.10.8:/data1/brick1?start

如上,開始執行將img 卷的所有內容備份到10.8 下的/data1/brick1 中的task,需要注意的是,這個備份目標不能是系統中的Brick。

?平衡卷:

平衡布局是很有必要的,因為布局結構是靜態的,當新的bricks 加入現有卷,新創建的文件會分布到舊的bricks 中,所以需要平衡布局結構,使新加入的bricks 生效。布局平衡只是使

新布局生效,并不會在新的布局移動老的數據,如果你想在新布局生效后,重新平衡卷中的數據,還需要對卷中的數據進行平衡。

當你擴展或者縮小卷之后,需要重新在服務器直接重新平衡一下數據,重新平衡的操作被分

為兩個步驟:

1、Fix Layout

修改擴展或者縮小后的布局,以確保文件可以存儲到新增加的節點中。

2、Migrate Data

重新平衡數據在新加入bricks 節點之后。

* Fix Layout and Migrate Data

先重新修改布局然后移動現有的數據(重新平衡)

1 2 #?gluster?volume?rebalance?VOLNAME?fix-layout?start #?gluster?volume?rebalance?VOLNAME?migrate-data?start

也可以兩步合一步同時操作

1 2 3 #?gluster?volume?rebalance?VOLNAME?start #?gluster?volume?rebalance?VOLNAME?status?//你可以在在平衡過程中查看平衡信息 #??gluster?volume?rebalance?VOLNAME?stop?//你也可以暫停平衡,再次啟動平衡的時候會從上次暫停的地方繼續開始平衡。

I/O 信息查看:

Profile Command 提供接口查看一個卷中的每一個brick 的IO 信息

1 2 3 #gluster?volume?profile?VOLNAME?start?//啟動profiling,之后則可以進行IO?信息查看 #gluster?volume?profile?VOLNAME?info?//查看IO?信息,可以查看到每一個Brick?的IO?信息 #gluster?volume?profile?VOLNAME?stop?//查看結束之后關閉profiling?功能

Top監控:

Top command 允許你查看bricks 的性能例如:read, write, fileopen calls, file read calls, file,write calls,directory open calls, and directory real calls

所有的查看都可以設置top 數,默認100

1 2 3 4 5 6 7 #?gluster?volume?top?VOLNAME?open?[brick?BRICK-NAME]?[list-cnt?cnt]?//查看打開的fd #?gluster?volume?top?VOLNAME?read?[brick?BRICK-NAME]?[list-cnt?cnt]?//查看調用次數最多的讀調用 #?gluster?volume?top?VOLNAME?write?[brick?BRICK-NAME]?[list-cnt?cnt]?//查看調用次數最多的寫調用 #?gluster?volume?top?VOLNAME?opendir?[brick?BRICK-NAME]?[list-cnt?cnt]?//查看次數最多的目錄調用 #?gluster?volume?top?VOLNAME?readdir?[brick?BRICK-NAME]?[list-cnt?cnt]?//查看次數最多的目錄調用 #?gluster?volume?top?VOLNAME?read-perf?[bs?blk-size?count?count]?[brickBRICK-NAME]?[list-cnt?cnt]?//查看每個Brick?的讀性能 #?gluster?volume?top?VOLNAME?write-perf?[bs?blk-size?count?count]?[brickBRICK-NAME]?[list-cnt?cnt]?//查看每個Brick?的寫性能

性能優化配置選項:

1 2 3 4 5 6 7 8 9 gluster?volume?set?arch-img?cluster.min-free-disk?默認是10%?磁盤剩余告警 gluster?volume?set?arch-img?cluster.min-free-inodes?默認是5%?inodes?剩余告警 gluster?volume?set?img?performance.read-ahead-page-count?8?默認4,預讀取的數量 gluster?volume?set?img?performance.io-thread-count?16?默認16?io?操作的最大線程 gluster?volume?set?arch-img?network.ping-timeout?10?默認42s gluster?volume?set?arch-img?performance.cache-size?2GB?默認128M?或32MB, gluster?volume?set?arch-img?cluster.self-heal-daemon?on?開啟目錄索引的自動愈合進程 gluster?volume?set?arch-img?cluster.heal-timeout?300?自動愈合的檢測間隔,默認為600s?#3.4.2版本才有 gluster?volume?set?arch-img?performance.write-behind-window-size?256MB?#默認是1M?能提高寫性能單個文件后寫緩沖區的大小默認1M


本文轉自Jacken_yang 51CTO博客,原文鏈接:http://blog.51cto.com/linuxnote/1825533,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的GlusterFS架构与维护的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。