5.2. Ceph 文件系统子卷
作为存储管理员,您可以创建、列出、获取绝对路径、获取元数据,以及移除 Ceph 文件系统 (CephFS) 子卷。
您还可以为 CephFS 子卷授权 Ceph 客户端用户。此外,您也可以创建、列出和删除这些子卷的快照。CephFS 子卷是独立 Ceph 文件系统目录树的抽象。
本节描述了如何:
5.2.1. 创建文件系统子卷
这部分论述了如何创建 Ceph 文件系统 (CephFS) 子卷。
在创建子卷时,您可以指定其子卷组、数据池布局、uid、gid、八进制数字文件模式和大小(以字节为单位)。可以通过指定'--namespace-isolated' 选项,在单独的 RADOS 命名空间中创建子卷。默认情况下,子卷在默认子卷组中创建,使用八进制文件模式 '755'、子卷组的 uid、子卷组 gid、其父目录的数据池布局和无大小限制。
先决条件
- 部署的 Ceph 文件系统正常工作的 Red Hat Ceph Storage 存储群集。
- 至少对 Ceph 监控器具有读取访问权限。
- Ceph 管理器节点上的读写功能。
流程
创建 CephFS 子卷:
语法
ceph fs subvolume create VOLUME_NAME SUBVOLUME_NAME [--size SIZE_IN_BYTES --group_name SUBVOLUME_GROUP_NAME --pool_layout DATA_POOL_NAME --uid _UID --gid GID --mode OCTAL_MODE] [--namespace-isolated]
示例
[root@mon ~]# ceph fs subvolume create cephfs sub0 --group_name subgroup0 --namespace-isolated
即使子卷已存在,命令也会成功。
5.2.2. 列出文件系统子卷
本节介绍列出 Ceph 文件系统 (CephFS) 子卷的步骤。
先决条件
- 部署的 Ceph 文件系统正常工作的 Red Hat Ceph Storage 存储群集。
- 至少对 Ceph 监控器具有读取访问权限。
- Ceph 管理器节点上的读写功能。
- CephFS 子卷。
流程
列出 CephFS 子卷:
语法
ceph fs subvolume ls VOLUME_NAME [--group_name SUBVOLUME_GROUP_NAME]
示例
[root@mon ~]# ceph fs subvolume ls cephfs --group_name subgroup0
5.2.3. 为文件系统子卷授权 Ceph 客户端用户
Red Hat Ceph Storage 集群使用 cephx
进行身份验证,这默认是启用的。要将 cephx
与 Ceph 文件系统(CephFS)子卷搭配使用,请在 Ceph 监控节点上创建具有正确授权功能的用户,并在挂载 Ceph 文件系统的节点中提供其密钥。您可以使用 authorize
命令授权用户访问 CephFS 子卷。
先决条件
- 部署的 CephFS 正常工作的 Red Hat Ceph Storage 集群。
- 至少对 Ceph 监控器具有读取访问权限。
- Ceph 管理器节点上的读写功能。
- 创建了一个 CephFS 卷。
流程
创建 CephFS 子卷:
语法
ceph fs subvolume create VOLUME_NAME SUBVOLUME_NAME [--size SIZE_IN_BYTES --group_name SUBVOLUME_GROUP_NAME --pool_layout DATA_POOL_NAME --uid _UID --gid GID --mode OCTAL_MODE] [--namespace-isolated]
示例
[root@mon ~]# ceph fs subvolume create cephfs sub0 --group_name subgroup0 --namespace-isolated
即使子卷已存在,命令也会成功。
授权 Ceph 客户端用户,对 CephFS 子卷具有读取或写入访问权限:
语法
ceph fs subvolume authorize VOLUME_NAME SUBVOLUME_NAME AUTH_ID [--group_name=GROUP_NAME] [--access_level=ACCESS_LEVEL]
ACCESS_LEVEL
可以是r
或rw
,AUTH_ID
是 Ceph 客户端用户,它是一个字符串。示例
[root@mon ~]# ceph fs subvolume authorize cephfs sub0 guest --group_name=subgroup0 --access_level=rw
在本例中,"client.guest"被授权访问子卷组
subgroup0
中的子卷sub0
。
其它资源
- 请参阅 Red Hat Ceph Storage 配置指南中的 Ceph 身份验证配置部分。
- 请参阅 Red Hat Ceph Storage Ceph 文件系统指南中的创建文件系统卷 部分。
5.2.4. 为文件系统子卷验证 Ceph 客户端用户
您可以使用 deauthorize
命令取消授权用户访问 Ceph 文件系统(CephFS)子卷。
先决条件
- 部署的 Ceph 文件系统正常工作的 Red Hat Ceph Storage 存储群集。
- 至少对 Ceph 监控器具有读取访问权限。
- Ceph 管理器节点上的读写功能。
- 已创建 CephFS 卷和子卷。
- Ceph 客户端用户有权访问 CephFS 子卷。
流程
取消授权 Ceph 客户端用户对 CephFS 子卷的访问权限:
语法
ceph fs subvolume deauthorize VOLUME_NAME SUBVOLUME_NAME AUTH_ID [--group_name=GROUP_NAME]
AUTH_ID
是 Ceph 客户端用户,它是一个字符串。示例
[root@mon ~]# ceph fs subvolume deauthorize cephfs sub0 guest --group_name=subgroup0
在本例中,"client.guest"被取消授权访问子卷组
subgroup0
中的子卷sub0
。
其它资源
- 请参阅 Red Hat Ceph Storage Ceph 文件系统指南中的为文件系统子卷授权 Ceph 客户端用户。
5.2.5. 列出用于文件系统子卷的 Ceph 客户端用户
您可以使用 authorized_list
命令列出用户对 Ceph 文件系统(CephFS)子卷的访问。
先决条件
- 部署的 Ceph 文件系统正常工作的 Red Hat Ceph Storage 存储群集。
- 至少对 Ceph 监控器具有读取访问权限。
- Ceph 管理器节点上的读写功能。
- 已创建 CephFS 卷和子卷。
- Ceph 客户端用户有权访问 CephFS 子卷。
流程
列出 Ceph 客户端用户对 CephFS 子卷的访问权限:
语法
ceph fs subvolume authorized_list VOLUME_NAME SUBVOLUME_NAME [--group_name=GROUP_NAME]
示例
[root@mon ~]# ceph fs subvolume authorized_list cephfs sub0 --group_name=subgroup0 [ { "guest": "rw" } ]
其它资源
- 请参阅 Red Hat Ceph Storage Ceph 文件系统指南中的为文件系统子卷授权 Ceph 客户端用户。
5.2.6. 从文件系统子卷驱除 Ceph 客户端用户
您可以使用基于 _AUTH_ID
和挂载的子卷,使用 evict
命令从 Ceph 文件系统(CephFS)子卷驱除 Ceph 客户端用户。
先决条件
- 部署的 Ceph 文件系统正常工作的 Red Hat Ceph Storage 存储群集。
- 至少对 Ceph 监控器具有读取访问权限。
- Ceph 管理器节点上的读写功能。
- 已创建 CephFS 卷和子卷。
- Ceph 客户端用户有权访问 CephFS 子卷。
流程
从 CephFS 子卷驱除 Ceph 客户端用户:
语法
ceph fs subvolume evict VOLUME_NAME SUBVOLUME_NAME AUTH_ID [--group_name=GROUP_NAME]
AUTH_ID
是 Ceph 客户端用户,它是一个字符串。示例
[root@mon ~]# ceph fs subvolume evict cephfs sub0 guest --group_name=subgroup0
在本例中,'client.guest' 会从子卷组
subgroup0
中驱除。
其它资源
- 请参阅 Red Hat Ceph Storage Ceph 文件系统指南中的为文件系统子卷授权 Ceph 客户端用户。
5.2.7. 重新定义文件系统子卷大小
本节介绍调整 Ceph 文件系统 (CephFS) 子卷大小的步骤。
ceph fs subvolume resize
命令使用 new_size
指定的大小来调整子卷配额的大小。--no_shrink
标志可防止子卷缩小到子卷的当前使用大小下方。通过将 new_size
设置为 inf
或 infinite
来将子卷重新设置为一个无限的大小。
先决条件
- 部署的 Ceph 文件系统正常工作的 Red Hat Ceph Storage 存储群集。
- 至少对 Ceph 监控器具有读取访问权限。
- Ceph 管理器节点上的读写功能。
- CephFS 子卷。
流程
重新定义 CephFS 子卷大小:
语法
ceph fs subvolume resize VOLUME_NAME SUBVOLUME_NAME_ NEW_SIZE [--group_name SUBVOLUME_GROUP_NAME] [--no_shrink]
示例
[root@mon ~]# ceph fs subvolume resize cephfs sub0 1024000000 --group_name subgroup0 --no_shrink
5.2.8. 获取文件系统子卷的绝对路径
本节介绍如何获取 Ceph 文件系统 (CephFS) 子卷的绝对路径。
先决条件
- 部署的 Ceph 文件系统正常工作的 Red Hat Ceph Storage 存储群集。
- 至少对 Ceph 监控器具有读取访问权限。
- Ceph 管理器节点上的读写功能。
- CephFS 子卷。
流程
获取 CephFS 子卷的绝对路径:
语法
ceph fs subvolume getpath VOLUME_NAME SUBVOLUME_NAME [--group_name SUBVOLUME_GROUP_NAME]
示例
[root@mon ~]# ceph fs subvolume getpath cephfs sub0 --group_name subgroup0 /volumes/subgroup0/sub0/c10cc8b8-851d-477f-99f2-1139d944f691
5.2.9. 获取文件系统子卷的元数据
本节介绍如何获取 Ceph 文件系统 (CephFS) 子卷的元数据。
先决条件
- 部署的 Ceph 文件系统正常工作的 Red Hat Ceph Storage 存储群集。
- 至少对 Ceph 监控器具有读取访问权限。
- Ceph 管理器节点上的读写功能。
- CephFS 子卷。
流程
获取 CephFS 子卷的元数据:
语法
ceph fs subvolume info VOLUME_NAME SUBVOLUME_NAME [--group_name SUBVOLUME_GROUP_NAME]
示例
[root@mon ~]# ceph fs subvolume info cephfs sub0 --group_name subgroup0
输出示例
{ "atime": "2020-09-08 09:27:15", "bytes_pcent": "undefined", "bytes_quota": "infinite", "bytes_used": 0, "created_at": "2020-09-08 09:27:15", "ctime": "2020-09-08 09:27:15", "data_pool": "cephfs_data", "features": [ "snapshot-clone", "snapshot-autoprotect", "snapshot-retention" ], "gid": 0, "mode": 16877, "mon_addrs": [ "10.8.128.22:6789", "10.8.128.23:6789", "10.8.128.24:6789" ], "mtime": "2020-09-08 09:27:15", "path": "/volumes/subgroup0/sub0/6d01a68a-e981-4ebe-84ca-96b660879173", "pool_namespace": "", "state": "complete", "type": "subvolume", "uid": 0 }
输出格式是 json,包含以下字段:
- atime :访问子卷路径的时间,格式为 "YYYY-MM-DD HH:MM:SS"。
- mtime :修改子卷路径的时间,格式为"YYYY-MM-DD HH:MM:SS"。
- ctime :更改子卷路径的时间,格式为 "YYYY-MM-DD HH:MM:SS"。
- UID :子卷路径的 uid。
- GID :子卷路径的 gid。
- mode :子卷路径的模式。
- mon_addrs :监控地址列表。
- bytes_pcent :如果设置了配额,则以百分比为单位使用的配额,否则会显示"undefined"。
- bytes_quota :如果设置了配额,则配额大小以字节为单位,否则会显示"infinite"。
- bytes_used :子卷的当前使用大小(以字节为单位)。
- created_at :创建子卷的时间,格式为 "YYYY-MM-DD HH:MM:SS"。
- data_pool :子卷所属的数据池。
- path :子卷的绝对路径。
- type:子卷类型指示它是克隆还是子卷。
- pool_namespace :子卷的 RADOS 命名空间。
- features: 子卷支持的功能,如 snapshot-clone"、"snapshot-autoprotect" 或 "snapshot-retention"。
- State :子卷的当前状态,如 "complete" 或 "snapshot-retained"
5.2.10. 创建文件系统子卷的快照
本节介绍如何创建 Ceph 文件系统 (CephFS) 子卷的快照。
先决条件
- 部署的 Ceph 文件系统正常工作的 Red Hat Ceph Storage 存储群集。
- 至少对 Ceph 监控器具有读取访问权限。
- Ceph 管理器节点上的读写功能。
- CephFS 子卷。
-
除了读取 (
r
) 和写入 (w
) 功能外,客户端还需要文件系统的目录路径上的s
标志。
流程
验证目录中是否设置了
s
标记:语法
ceph auth get CLIENT_NAME
示例
client.0 key: AQAz7EVWygILFRAAdIcuJ12opU/JKyfFmxhuaw== caps: [mds] allow rw, allow rws path=/bar 1 caps: [mon] allow r caps: [osd] allow rw tag cephfs data=cephfs_a 2
创建 Ceph 文件系统子卷的快照:
语法
ceph fs subvolume snapshot create VOLUME_NAME _SUBVOLUME_NAME _SNAP_NAME [--group_name GROUP_NAME]
示例
[root@mon ~]# ceph fs subvolume snapshot create cephfs sub0 snap0 --group_name subgroup0
5.2.11. 从快照克隆子卷
可以通过克隆子卷快照来创建子卷。这是一个异步操作,涉及将快照中的数据复制到子卷。
先决条件
- 部署的 Ceph 文件系统正常工作的 Red Hat Ceph Storage 存储群集。
- 至少对 Ceph 监控器具有读取访问权限。
- Ceph 管理器节点上的读写功能。
要创建或删除快照,除了读写功能外,客户端还需要文件系统中目录路径上的
s
标志。语法
CLIENT_NAME key: AQAz7EVWygILFRAAdIcuJ12opU/JKyfFmxhuaw== caps: [mds] allow rw, allow rws path=DIRECTORY_PATH caps: [mon] allow r caps: [osd] allow rw tag cephfs data=DIRECTORY_NAME
在以下示例中,
client.0
可以在文件系统cephfs_a
的bar
目录中创建或删除快照。示例
client.0 key: AQAz7EVWygILFRAAdIcuJ12opU/JKyfFmxhuaw== caps: [mds] allow rw, allow rws path=/bar caps: [mon] allow r caps: [osd] allow rw tag cephfs data=cephfs_a
流程
创建 Ceph 文件系统 (CephFS) 卷:
语法
ceph fs volume create VOLUME_NAME
示例
[root@mon ~]# ceph fs volume create cephfs
这将创建 CephFS 文件系统、其数据和元数据池。
创建子卷组。默认情况下,使用八进制文件模式 '755' 创建子卷组,以及其父目录的数据池布局。
语法
ceph fs subvolumegroup create VOLUME_NAME GROUP_NAME [--pool_layout DATA_POOL_NAME --uid UID --gid GID --mode OCTAL_MODE]
示例
[root@mon ~]# ceph fs subvolumegroup create cephfs subgroup0
创建子卷。默认情况下,子卷在默认子卷组中创建,使用八进制文件模式 '755'、子卷组的 uid、子卷组 gid、其父目录的数据池布局和无大小限制。
语法
ceph fs subvolume create VOLUME_NAME SUBVOLUME_NAME [--size SIZE_IN_BYTES --group_name SUBVOLUME_GROUP_NAME --pool_layout DATA_POOL_NAME --uid _UID --gid GID --mode OCTAL_MODE]
示例
[root@mon ~]# ceph fs subvolume create cephfs sub0 --group_name subgroup0
创建子卷的快照:
语法
ceph fs subvolume snapshot create VOLUME_NAME _SUBVOLUME_NAME SNAP_NAME [--group_name SUBVOLUME_GROUP_NAME]
示例
[root@mon ~]# ceph fs subvolume snapshot create cephfs sub0 snap0 --group_name subgroup0
启动克隆操作:
注意默认情况下,克隆的子卷会在默认组中创建。
如果源子卷和目标克隆位于默认组中,请运行以下命令:
语法
ceph fs subvolume snapshot clone VOLUME_NAME SUBVOLUME_NAME SNAP_NAME TARGET_SUBVOLUME_NAME
示例
[root@mon ~]# ceph fs subvolume snapshot clone cephfs sub0 snap0 clone0
如果源子卷位于非默认组中,请使用以下命令指定源子卷组:
语法
ceph fs subvolume snapshot clone VOLUME_NAME SUBVOLUME_NAME SNAP_NAME TARGET_SUBVOLUME_NAME --group_name SUBVOLUME_GROUP_NAME
示例
[root@mon ~]# ceph fs subvolume snapshot clone cephfs sub0 snap0 clone0 --group_name subgroup0
如果目标克隆到非默认组中,请使用以下命令指定目标组:
语法
ceph fs subvolume snapshot clone VOLUME_NAME SUBVOLUME_NAME SNAP_NAME TARGET_SUBVOLUME_NAME --target_group_name _SUBVOLUME_GROUP_NAME
示例
[root@mon ~]# ceph fs subvolume snapshot clone cephfs sub0 snap0 clone0 --target_group_name subgroup1
检查克隆操作的状态:
语法
ceph fs clone status VOLUME_NAME CLONE_NAME [--group_name TARGET_GROUP_NAME]
示例
[root@mon ~]# ceph fs clone status cephfs clone0 --group_name subgroup1 { "status": { "state": "complete" } }
其它资源
- 如需了解更多详细信息,请参阅 Red Hat Ceph Storage Administration Guide 中的 Managing Ceph users 章节。
5.2.12. 列出文件系统子卷的快照
本节提供列出 Ceph 文件系统 (CephFS) 子卷快照的步骤。
先决条件
- 部署的 Ceph 文件系统正常工作的 Red Hat Ceph Storage 存储群集。
- 至少对 Ceph 监控器具有读取访问权限。
- Ceph 管理器节点上的读写功能。
- CephFS 子卷。
- 子卷的快照。
流程
列出 CephFS 子卷的快照:
语法
ceph fs subvolume snapshot ls VOLUME_NAME SUBVOLUME_NAME [--group_name SUBVOLUME_GROUP_NAME]
示例
[root@mon ~]# ceph fs subvolume snapshot ls cephfs sub0 --group_name subgroup0
5.2.13. 获取文件系统子卷快照的元数据
本节提供获取 Ceph 文件系统 (CephFS) 子卷快照元数据的步骤。
先决条件
- 部署的 CephFS 正常工作的 Red Hat Ceph Storage 集群。
- 至少对 Ceph 监控器具有读取访问权限。
- Ceph 管理器节点上的读写功能。
- CephFS 子卷。
- 子卷的快照。
流程
获取 CephFS 子卷的快照元数据:
语法
ceph fs subvolume snapshot info VOLUME_NAME SUBVOLUME_NAME SNAP_NAME [--group_name SUBVOLUME_GROUP_NAME]
示例
[root@mon ~]# ceph fs subvolume snapshot info cephfs sub0 snap0 --group_name subgroup0
输出示例
{ "created_at": "2021-09-08 06:18:47.330682", "data_pool": "cephfs_data", "has_pending_clones": "no", "size": 0 }
输出格式为 json,包含以下字段:
- created_at :创建快照的时间,格式为 "YYYY-MM-DD HH:MM:SS:ffff"。
- data_pool :快照所属的数据池。
- has_pending_clones: "yes" 如果快照克隆正在进行中,否则为"no"。
- size :快照大小,以字节为单位.
5.2.14. 删除文件系统子卷
本节介绍删除 Ceph 文件系统 (CephFS) 子卷的步骤。
ceph fs subvolume rm
命令会在两个步骤中删除子卷及其内容。首先,它会将子卷移到回收文件夹中,然后异步清除其内容。
可以使用 --retain-snapshots
选项删除子卷的现有快照。如果保留快照,则所有不涉及保留快照的操作的子卷将被视为空。保留的快照可用作克隆源来重新创建子卷,或克隆到较新的子卷。
先决条件
- 部署的 Ceph 文件系统正常工作的 Red Hat Ceph Storage 存储群集。
- 至少对 Ceph 监控器具有读取访问权限。
- Ceph 管理器节点上的读写功能。
- CephFS 子卷。
流程
删除 CephFS 子卷:
语法
ceph fs subvolume rm VOLUME_NAME SUBVOLUME_NAME [--group_name SUBVOLUME_GROUP_NAME] [--force] [--retain-snapshots]
示例
[root@mon ~]# ceph fs subvolume rm cephfs sub0 --group_name subgroup0 --retain snapshots
从保留的快照重新创建子卷:
语法
ceph fs subvolume snapshot clone VOLUME_NAME DELETED_SUBVOLUME RETAINED_SNAPSHOT NEW_SUBVOLUME --group_name SUBVOLUME_GROUP_NAME --target_group_name SUBVOLUME_TARGET_GROUP_NAME
*NEW_SUBVOLUME - 可以是之前删除的同一子卷,也可以克隆到新子卷中。
示例
ceph fs subvolume snapshot clone cephfs sub0 snap0 sub1 --group_name subgroup0 --target_group_name subgroup0
5.2.15. 删除文件系统子卷的快照
本节提供删除 Ceph 文件系统 (CephFS) 子卷组快照的步骤。
使用 --force
标志时,命令可以成功,否则如果快照不存在,则会失败。
先决条件
- 部署的 Ceph 文件系统正常工作的 Red Hat Ceph Storage 存储群集。
- 至少对 Ceph 监控器具有读取访问权限。
- Ceph 管理器节点上的读写功能。
- Ceph 文件系统卷.
- 子卷组的快照。
流程
移除 CephFS 子卷的快照:
语法
ceph fs subvolume snapshot rm VOLUME_NAME SUBVOLUME_NAME _SNAP_NAME [--group_name GROUP_NAME --force]
示例
[root@mon ~]# ceph fs subvolume snapshot rm cephfs sub0 snap0 --group_name subgroup0 --force