您好,登錄后才能下訂單哦!
這篇文章主要介紹“GlusterFS擴展屬性是什么”,在日常操作中,相信很多人在GlusterFS擴展屬性是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”GlusterFS擴展屬性是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
擴展屬性是現代文件系統普遍支持,而又不容易被用戶發現的特性。
Glusterfs中DHT,AFT, stripe都廣泛使用了擴展屬性即xattr。
xattr是一個key-value結構, 包括一個字符串key, 和一個二進制的value。我們有get/set/list xattr方法來操作它們。
在glusterfs中廣泛使用了這樣一個小伎倆: 當set/get xattr的時候,會觸發gluster server的相關操作。例如:DHT中的 reblance代碼使用了一個特定的attr來觸發重新計算DHT layout的操作。
下面著重討論 DHT中的trusted.glusterfs.dht xattr和 AFR中的trusted.glusterfs.afr.* xattr
DHT功能的核心是一致性哈希(consistent hashing)。文件存放的地點取決于文件名的哈希值, 每個brick都有一個哈希值區間,文件名的哈希值的落在某brick的哈希值區間,文件就存放在該birck上。
而目錄有點不一樣,目錄在每個brick上都有。但是每個目錄的xattr trusted.glusterfs.dht都不一樣。因為它們所具有的哈希區間不同。
當lookup目錄的時候,我們需要收集這些xattr, 組成一個table。同時需要注意區間之間存在的空隙和重疊的問題。
不難發現,這種方法有嚴重的擴展性(scalability)問題, 每當添加/刪除一個brick的時候,我們就要重新計算xattr中存放的哈希區間。
然而, AFR在使用attr方面,比DHT更加復雜。
比如一個叫test1的afr卷,由test1-client-0和test1-client-1兩個brick組成。 那么test1-client-0上的文件就會具有名為 trusted.afr.test1-client-1的xattr.
這是因為AFR的目的就是為了從failure中恢復。所以在一個brick上的操作會在其他所有brick上的xattr中記錄,這樣當副本數目多余2個時候很浪費。:-/
在xattr中存放的是“等待操作的counter”,
操作分為三種類型:
數據操作– mostly writes but also e.g. truncates
元數據操作– e.g. chmod/chown/chgrp, and xattrs (yes, this gets recursive)
文件操作 – create, delete, rename, etc.
每次文件系統操作執行前,都會首先對counter加1。
執行完成后,再對counter 減一。
正常情況下,counter應該回到0。入如果有節點中途出了問題,counter不是0,那么我們就可以知道這個節點out of date, 并啟動self-heal修復它。
那么可想而知,最嚴重的情況是 AFR兩個副本節點的counter都不是0, 我們將這種特殊情況稱為 "split brain"。 這時系統很難或者說幾乎不可能自己恢復正常。
到此,關于“GlusterFS擴展屬性是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。