4.8. 使用文件和目录
作为存储管理员,您可以控制文件或目录数据如何映射到对象。
本节描述了如何:
4.8.1. 先决条件 复制链接链接已复制到粘贴板!
-
安装
attr软件包。
4.8.2. 文件和目录布局概述 复制链接链接已复制到粘贴板!
本节介绍 Ceph 文件系统上下文中的文件和目录布局。
文件或目录的布局控制其内容如何映射到 Ceph RADOS 对象。目录布局主要用于为该目录中的新文件设置继承布局。
要查看和设置文件或目录布局,请使用虚拟扩展属性或扩展文件属性 (xattrs)。布局属性的名称取决于文件是常规文件还是目录:
-
常规文件布局属性称为
ceph.file.layout。 -
目录布局属性称为
ceph.dir.layout。
File and Directory Layout 字段 列出了您可以在文件和目录上设置的可用布局字段。
布局继承
在创建文件时,文件会继承其父目录的布局。但是,随后对父目录布局的更改不会影响子级。如果目录没有设置任何布局,文件将使用目录结构中的布局从最接近的目录继承布局。
其它资源
- 详情请查看 Layouts Inheritance。
4.8.3. 设置文件和目录布局字段 复制链接链接已复制到粘贴板!
使用 setfattr 命令设置文件或目录上的布局字段。
当您修改文件的布局字段时,该文件必须为空,否则会出现错误。
先决条件
- 节点的根级别访问权限。
流程
修改文件或目录中的布局字段:
语法
setfattr -n ceph.TYPE.layout.FIELD -v VALUE PATH替换:
-
TYPE,
file或dir。 - FIELD,字段的名称。
- VALUE,字段的新值 。
- 带有到文件或目录路径的 PATH。
示例
[root@fs ~]# setfattr -n ceph.file.layout.stripe_unit -v 1048576 test-
TYPE,
其它资源
- 如需了解更多详细信息,请参见 Red Hat Ceph Storage 的文件和目录布局概述部分中的表格。
-
请参阅
setfattr(1)手册页。
4.8.4. 查看文件和目录布局字段 复制链接链接已复制到粘贴板!
要使用 getfattr 命令查看文件或目录的布局字段:
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 对存储集群中所有节点的根级别访问权限。
流程
以单一字符串形式查看文件或目录中的布局字段:
语法
getfattr -n ceph.TYPE.layout PATH- 替换
- 带有到文件或目录路径的 PATH。
-
TYPE,
file或dir。
示例
[root@mon ~] getfattr -n ceph.dir.layout /home/test ceph.dir.layout="stripe_unit=4194304 stripe_count=2 object_size=4194304 pool=cephfs_data"
在设置目录之前,该目录不具有明确的布局。因此,尝试在没有首先设置的情况下查看布局会失败,因为没有更改。
其它资源
-
getfattr(1)手册页面。 - 有关更多信息,请参阅 Red Hat Ceph Storage 文件系统指南中的设置文件和目录布局字段 部分。
4.8.5. 查看单个布局字段 复制链接链接已复制到粘贴板!
使用 getfattr 命令查看文件或目录的个别布局字段。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 对存储集群中所有节点的根级别访问权限。
流程
查看文件或目录中的单个布局字段:
语法
getfattr -n ceph.TYPE.layout.FIELD _PATH- 替换
-
TYPE,
file或dir。 - FIELD,字段的名称。
- 带有到文件或目录路径的 PATH。
-
TYPE,
示例
[root@mon ~] getfattr -n ceph.file.layout.pool test ceph.file.layout.pool="cephfs_data"注意pool字段中的池按照名称来指示。不过,新建的池可以通过 ID 来指示。
其它资源
-
getfattr(1)手册页面。 - 如需更多信息,请参阅文件和目录布局字段。
4.8.6. 删除目录布局 复制链接链接已复制到粘贴板!
使用 setfattr 命令从目录中移除布局。
设置文件布局时,您无法更改或删除该文件。
先决条件
- 具有布局的目录。
流程
从目录中删除布局:
语法
setfattr -x ceph.dir.layout DIRECTORY_PATH示例
[user@client ~]$ setfattr -x ceph.dir.layout /home/cephfs删除
pool_namespace字段:语法
setfattr -x ceph.dir.layout.pool_namespace DIRECTORY_PATH示例
[user@client ~]$ setfattr -x ceph.dir.layout.pool_namespace /home/cephfs注意pool_namespace字段是唯一可以单独删除的字段。
其它资源
-
setfattr(1)手册页