主页 > 服务器技术 > 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.drupal001.com/2013/02/linux-extended-attributes/
版权所有: Drupal与高性能网站架构 http://www.drupal001.com


, , , ,

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注


五 + = 8

您可以使用这些 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与高性能网站架构
顶部