描述
扩展属性是与文件和目录相关的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"