4.3. Ceph 文件系统子卷
作为存储管理员,您可以创建、列出、获取绝对路径、获取元数据,以及移除 Ceph 文件系统 (CephFS) 子卷。此外,您也可以创建、列出和删除这些子卷的快照。CephFS 子卷是独立 Ceph 文件系统目录树的抽象。
本节描述了如何:
4.3.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
即使子卷已存在,命令也会成功。
4.3.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
4.3.3. 重新定义文件系统子卷大小
本节介绍调整 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
4.3.4. 获取文件系统子卷的绝对路径
本节介绍如何获取 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
4.3.5. 获取文件系统子卷的元数据
本节介绍如何获取 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
输出示例
# ceph fs subvolume info cephfs sub0 { "atime": "2023-07-14 08:52:46", "bytes_pcent": "0.00", "bytes_quota": 1024000000, "bytes_used": 0, "created_at": "2023-07-14 08:52:46", "ctime": "2023-07-14 08:53:54", "data_pool": "cephfs.cephfs.data", "features": [ "snapshot-clone", "snapshot-autoprotect", "snapshot-retention" ], "flavor": "2", "gid": 0, "mode": 16877, "mon_addrs": [ "10.0.208.172:6789", "10.0.211.197:6789", "10.0.209.212:6789" ], "mtime": "2023-07-14 08:52:46", "path": "/volumes/_nogroup/sub0/834c5cbc-f5db-4481-80a3-aca92ff0e7f3", "pool_namespace": "", "state": "complete", "type": "subvolume", "uid": 0 }
输出格式为 JSON,包含以下字段:
- atime :访问子卷路径的时间,格式为 "YYYY-MM-DD HH:MM:SS"。
- bytes_pcent :如果设置了配额,则以百分比为单位使用的配额,否则会显示"undefined"。
- bytes_quota :如果设置了配额,则配额大小以字节为单位,否则会显示"infinite"。
- bytes_used :子卷的当前使用大小(以字节为单位)。
- created_at :创建子卷的时间,格式为 "YYYY-MM-DD HH:MM:SS"。
- ctime :更改子卷路径的时间,格式为 "YYYY-MM-DD HH:MM:SS"。
- data_pool :子卷所属的数据池。
- features: 子卷支持的功能,如 snapshot-clone"、"snapshot-autoprotect" 或 "snapshot-retention"。
-
类别 :子卷版本,
1
代表版本一,或 2 (版本2
)。 - GID: 子卷路径的组 ID。
- mode :子卷路径的模式。
- mon_addrs :监控地址列表。
- mtime :修改子卷路径的时间,格式为"YYYY-MM-DD HH:MM:SS"。
- path :子卷的绝对路径。
- pool_namespace :子卷的 RADOS 命名空间。
- State :子卷的当前状态,如 "complete" 或 "snapshot-retained"。
- 类型 :子卷类型指示它是克隆还是子卷。
- uid :子卷路径的用户 ID。
4.3.6. 创建文件系统子卷的快照
本节介绍如何创建 Ceph 文件系统 (CephFS) 子卷的快照。
先决条件
- 部署的 Ceph 文件系统正常工作的 Red Hat Ceph Storage 存储群集。
- 至少对 Ceph 监控器具有读取访问权限。
- Ceph 管理器节点上的读写功能。
- CephFS 子卷。
-
除了读取 (
r
) 和写入 (w
) 功能外,客户端还需要文件系统的目录路径上的s
标志。
流程
验证目录中是否设置了
s
标记:语法
ceph auth get CLIENT_NAME
示例
[root@mon ~]# ceph auth get client.0 [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
4.3.7. 从快照克隆子卷
可以通过克隆子卷快照来创建子卷。这是一个异步操作,涉及将快照中的数据复制到子卷。
对于非常大的数据集,克隆效率较低。
先决条件
- 部署的 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_CLONE_NAME
示例
[root@mon ~]# ceph fs subvolume snapshot clone cephfs sub0 snap0 clone0
如果源子卷位于非默认组中,请使用以下命令指定源子卷组:
语法
ceph fs subvolume snapshot clone VOLUME_NAME SUBVOLUME_NAME SNAP_NAME TARGET_CLONE_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_CLONE_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 章节。
4.3.8. 列出文件系统子卷的快照
本节提供列出 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
4.3.9. 获取文件系统子卷快照的元数据
本节提供获取 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": "2022-05-09 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 :快照大小,以字节为单位.
4.3.10. 删除文件系统子卷
本节介绍删除 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 可以是之前删除的同一子卷,也可以克隆到新子卷中。
示例
[root@mon ~]# ceph fs subvolume snapshot clone cephfs sub0 snap0 sub1 --group_name subgroup0 --target_group_name subgroup0
4.3.11. 删除文件系统子卷的快照
本节提供删除 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
其它资源
- 请参阅 Red Hat Ceph Storage Administration Guide 中的 Managing Ceph users 章节。