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

  • 相关阅读:
    Java中的File类
    scala语法
    Spark核心原理
    资源调度器
    YARN工作机制
    MapReduce原理和工作过程
    序列化
    Hbase(2)表的设计和Rowkey等的设计
    Hbase(1)架构和工作原理
    Exception in thread "main" java.lang.NoSuchMethodError: io.netty.buffer.PooledByteBufAllocator.metric()Lio/netty/buffer/PooledByteBufAllocatorMetric;
  • 原文地址:https://www.cnblogs.com/langren1992/p/5326612.html
Copyright © 2011-2022 走看看