当前位置: 首页 > news >正文

clob存base64文件存不进去_cephfs:文件的扩展属性xattr

默认扩展属性

在cephfs中,文件/目录有两个默认的扩展属性:layout和parent,该扩展属性并不是InodeStoreBase中的xattrs。为了不和InodeStoreBase中的扩展属性混淆,我把这两个属性称为默认扩展属性,可以通过命令查看默认扩展属性:

元数据池:cephfs_metadata
数据池:cephfs_data

查看目录test_dir( inode号为0x100000f3677)的默认扩展属性

rados listxattr 100000f3677.00000000 -p cephfs_metadata

600144d746380643b64b1a60775ce2eb.png

查看文件test_file(inode号为0x100000f3a68)的默认扩展属性

rados listxattr 100000f3a68.00000000 -p cephfs_metadata

7b71e309fbbffbd8b7feb02522d67a31.png

目录的默认扩展属性存于元数据池中,文件的默认扩展属性存于数据池中。

这里得注意,即使是空文件,也会在数据池中存有该文件对象。

默认扩展属性内容

通过命令查看默认扩展属性内容,查看test_dir的默认扩展属性

rados getxattr 100000f3677.00000000 layout -p cephfs_metadata
rados getxattr 100000f3677.00000000 parent -p cephfs_metadata

结果查出来的都有乱码,直接看代码CInode::store_backtrace,去看具体存的内容

void CInode::store_backtrace(MDSInternalContextBase *fin, int op_prio)
{
  ...
  const int64_t pool = get_backtrace_pool();
  inode_backtrace_t bt;
  build_backtrace(pool, bt);
  bufferlist parent_bl;
  using ceph::encode;
  encode(bt, parent_bl);

  ObjectOperation op;
  op.priority = op_prio;
  op.create(false);
  op.setxattr("parent", parent_bl);

  bufferlist layout_bl;
  encode(inode.layout, layout_bl, mdcache->mds->mdsmap->get_up_features());
  op.setxattr("layout", layout_bl);
  ...
}

parent里面的内容在CInode::build_backtrace中填充

void CInode::build_backtrace(int64_t pool, inode_backtrace_t& bt)
{
  bt.ino = inode.ino;
  bt.ancestors.clear();
  bt.pool = pool;
  CInode *in = this;
  CDentry *pdn = get_parent_dn();
  while (pdn) {
    CInode *diri = pdn->get_dir()->get_inode();
    bt.ancestors.push_back(inode_backpointer_t(diri->ino(), pdn->get_name(), in->inode.version));
    in = diri;
    pdn = in->get_parent_dn();
  }
  ...
}

可见parent中存的是自己祖先目录的inode号和目录名。

比如"test_file"文件
路径/test/test1/test_file
"/"根目录的inode号:0x1,"test"的inode号为:0x10000000001,"test1"的inode号为:0x1000000002
那么inode_backtrace_t 中的ancestors存的就是[0x1000000002/test_file, 0x10000000001/test1, 0x1/test]

layout里面的内容存的就是inode.layout,即file_layout_t结构体,可以通过另外的方式去查看layout的值

getfattr -n ceph.file.layoput /test/test1/test_file

结果如图

d40e2142a4063ef02f11ee864c879daf.png

...

相关文章:

  • 山地车中轴进水表现_求山地自行车各部位上油的方法。特别是中轴和花鼓
  • matlab建立ar时间序列模型_请教matlab下建立AR模型的问题(附代码)
  • jpg图片使用pil的resize后_Python Pillow 和 cv2 图片 resize 速度的比较
  • 小白学vb还是python_小白学 Python(6):基础运算符(下)
  • qt 表格中插入一行_表格中插入列,如何不影响其他表格,1.3%的人还不会?
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • l4168升级固件出错如何恢复_苹果 iOS 13 / iPadOS 官方测试版固件 IPSW 下载升级降级与恢复教程...
  • 时序约束优先级_如何写出时序收敛的代码
  • 移动端布局三种视口_移动端布局适配
  • 柱形图无数据可选中_让领导看呆!Excel多层柱形图来了
  • ios 监听一个控制器的属性_iOS控制器间跳转
  • 语言中日期间的天数怎么计算_计算员工工龄,这个问题千万要注意
  • springboot过滤字段_springboot实现拦截器之验证登录示例
  • python计算机入门书籍_计算机学习--摘自python 入门书 侯爵
  • 如何卸载更换MySQL版本_mysql卸载(win10 适用于想更换版本的)
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 自己简单写的 事件订阅机制
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • js操作时间(持续更新)
  • Laravel 实践之路: 数据库迁移与数据填充
  • MaxCompute访问TableStore(OTS) 数据
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Vim Clutch | 面向脚踏板编程……
  • 高度不固定时垂直居中
  • 基于axios的vue插件,让http请求更简单
  • 坑!为什么View.startAnimation不起作用?
  • 入手阿里云新服务器的部署NODE
  • 一文看透浏览器架构
  • 中文输入法与React文本输入框的问题与解决方案
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (11)MATLAB PCA+SVM 人脸识别
  • (33)STM32——485实验笔记
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (Java)【深基9.例1】选举学生会
  • (蓝桥杯每日一题)love
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (转)http协议
  • (转)memcache、redis缓存
  • .bat批处理(一):@echo off
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .net FrameWork简介,数组,枚举
  • .net 按比例显示图片的缩略图
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .net中应用SQL缓存(实例使用)
  • ??eclipse的安装配置问题!??
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @JoinTable会自动删除关联表的数据
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • []FET-430SIM508 研究日志 11.3.31
  • [AI]文心一言出圈的同时,NLP处理下的ChatGPT-4.5最新资讯
  • [AX]AX2012 SSRS报表Drill through action