主頁 > 服務器技術 > Linux 文件系統擴展屬性 — Extended Attributes/xattr

Linux 文件系統擴展屬性 — Extended Attributes/xattr

PDF版本

在研究GlusterFS中,發現GlusterFS使用了文件系統的Extended Attributes,中文可以稱之為文件系統擴展屬性。由于資料比較少,中文資料更少,因此把記錄幾點Extended Attributes的備忘,供參考學習。

EA的詳細介紹,參考LinuxQuestion網站的介紹:
http://wiki.linuxquestions.org..s

大體的意思就是,EA是目前流行的POSIX系統中文件系統具有的一項特殊功能,可以給文件、文件夾添加額外的key/value的鍵對值,鍵和值都是字符串并且有一定長度的限制。

常用到的命令如下:setfattr、getfattr、attr。
setfattr可以設置EA,getfattr可以獲取EA,attr是一個綜合命令,可以設置、獲取、刪除、列舉所有等操作。

注意,這個擴展屬性不是我們常說的lsattr、chattr中對文件操作的屬性,這里的EA是完全的自定義屬性。

在使用EA中,我們自定義的屬性名稱最好使用上命名空間,如user、root、system等,比如Linux中ACL中使用的鍵值為:system.posix_acl_access

注意,在大多系統中,使用setfattr設置EA的時候,我們必須使用user作為命名空間前綴,否則會返回如下錯誤 setfattr xxx Operation not supported 的錯誤!

舉例如下:
設置EA屬性

setfattr -n user.foo -v bar test-file

獲取EA屬性

getfattr -n user.foo test-file

刪除EA屬性

setfattr -x user.foo test-file

列舉所有EA屬性

attr -lq test-file

注意,在列舉出的屬性中,沒有顯示默認的命名空間,所以你必須知道該屬性命名空間,參加下面的方法獲取全名屬性。

列舉所有EA屬性

getfattr -d -m ".*"  test-file

至此,我們談一下關于GlusterFS中經常遇到的一個問題,在添加或者替換某個brick的時候,經常會遇到如下錯誤提示:
a prefix of it is already part of a volume
常常讓我們無法使用一個已有的目錄作為brick,我們可以新建一個brick,還有一種做法就是刪除掉這個目錄的Extended Attribute(EA),這些EA是由Gluster添加的,命名空間是trusted。

for i in `attr -lq .`; do setfattr -x trusted.$i .; done

請參考:
使用GlusterFS做為Drupal文件存儲的云服務


聲明: 本站所有文章歡迎轉載,所有文章未說明,均屬于原創,轉載均請注明出處。
本文有效鏈接: http://www.vczhtn.live/2013/02/linux-extended-attributes/
版權所有: Drupal與高性能網站架構 http://www.vczhtn.live


, , , ,

發表評論

電子郵件地址不會被公開。 必填項已用 * 標注


× 八 = 40

您可以使用這些 HTML 標簽和屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

引用:0

下面所列的是引用到本博客的鏈接
Linux 文件系統擴展屬性 — Extended Attributes/xattr 來自 Drupal與高性能網站架構
頂部
安徽福彩15选5走势图