zoukankan      html  css  js  c++  java
  • linux文件系统拓展属性

    在研究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文件存储的云服务

  • 相关阅读:
    20165214 第八周学习任务
    20165214 实验二 Java面向对象程序设计
    20165214 结队编程项目-四则运算
    20165214 第七周学习任务
    20165214 第六周学习任务
    20165214 实验一 Java开发环境的熟悉
    20165313 《Java程序设计》第八周学习总结
    结对编程-四则运算
    2017-2018-2 20165313实验二《Java面向对象程序设计》
    20165313 《Java程序设计》第七周学习总结
  • 原文地址:https://www.cnblogs.com/langren1992/p/5326612.html
Copyright © 2011-2022 走看看