Bootstrap

linux文件系统扩展属性在ceph中的应用

描述

扩展属性是与文件和目录相关的key-value对,用来提供文件系统的一些附加功能,例如ACL。对文件或是目录拥有读权限的用户可以看到其扩展属性。扩展属性所需的空间被计算在文件属主的磁盘配额上。目前在Linux上支持扩展属性的文件系统有:ext2,ext3,ext4,XFS,JFS,reiserfs。

在ceph中,不管是块设备、对象存储、文件存储最后都转化成了底层的对象object,这个object包含3个元素data,xattr,omap。

data:是保存对象的数据;

xattr:是保存对象的扩展属性,属性是一个key/value值对。

omap:由于受到文件系统的限制,key/value对的个数和每个value的大小都进行了限制。如果要设置的对象的key/value不能存储在文件的扩展属性中,还存在另外一种方式保存omap,omap实际上是保存到了key/vaule值对的数据库levelDB中,在这里value的值限制要比xattr中小的多。

 

操作

在cephfs目录下创建文件test.txt
# touch test.txt


设置扩展特性
# setfattr -n user.abc -v 123 test.txt   (-n指定key-v指定value)


显示扩展特性
# getfattr -n user.abc test.txt
# file: test.txt
user.abc="123"

 

 

#通过扩展属性查看目录或者文件对应的存储池

#文件

[root@myhost1 tttest]# getfattr -n ceph.file.layout t1.txt

# file: t1.txt

ceph.file.layout="stripe_unit=4194304 stripe_count=1 object_size=4194304 pool=pool01"

 

#目录

[root@myhost1 ttest]# getfattr -n ceph.dir.layout test

# file: test

ceph.dir.layout="stripe_unit=4194304 stripe_count=2 object_size=4194304 pool=pool01"

 

 

;