注意
本文档适用于 Ceph 开发版本。
Librbd (Python)
The rbd该 Python 模块为 RBD 图像提供类似文件的访问。
示例:创建并向镜像写入
要使用rbd,您必须首先连接到 RADOS 并打开一个 IO 上下文:
cluster = rados.Rados(conffile='my_ceph.conf')
cluster.connect()
ioctx = cluster.open_ioctx('mypool')
然后,您实例化一个 :class:rbd.RBD 对象,您使用它来创建图像:
rbd_inst = rbd.RBD()
size = 4 * 1024**3 # 4 GiB
rbd_inst.create(ioctx, 'myimage', size)
要在图像上执行 I/O,您实例化一个 :class:rbd.Image 对象:
image = rbd.Image(ioctx, 'myimage')
data = b'foo' * 200
image.write(data, 0)
这将 'foo' 写入图像的前 600 个字节。请注意,数据不能是 :type:unicode -Librbd不知道如何处理比 :c:type:char 更宽的字符。
最后,您将想要关闭图像、IO 上下文和到 RADOS 的连接:
image.close()
ioctx.close()
cluster.shutdown()
为了安全起见,每个调用都需要在一个单独的 :finally 块中:
cluster = rados.Rados(conffile='my_ceph_conf')
try:
cluster.connect()
ioctx = cluster.open_ioctx('my_pool')
try:
rbd_inst = rbd.RBD()
size = 4 * 1024**3 # 4 GiB
rbd_inst.create(ioctx, 'myimage', size)
image = rbd.Image(ioctx, 'myimage')
try:
data = b'foo' * 200
image.write(data, 0)
finally:
image.close()
finally:
ioctx.close()
finally:
cluster.shutdown()
这可能很繁琐,所以可以使用Rados
, Ioctx
, and
Image
类作为上下文管理器,自动关闭/关闭(请参阅PEP 343)。使用它们作为上下文管理器,上面的示例变为:
with rados.Rados(conffile='my_ceph.conf') as cluster:
with cluster.open_ioctx('mypool') as ioctx:
rbd_inst = rbd.RBD()
size = 4 * 1024**3 # 4 GiB
rbd_inst.create(ioctx, 'myimage', size)
with rbd.Image(ioctx, 'myimage') as image:
data = b'foo' * 200
image.write(data, 0)
API 参考
该模块是 librbd 的一个薄包装器。
它目前提供所有不使用回调的 librbd 同步方法。
librbd 的错误代码转换为继承自Error
的异常。几乎所有的方法都可能引发Error
(所有 rbd 异常的基类),除了为该方法文档化的那些。PermissionError
和IOError
, in addition to those documented for the
method.
- class rbd.Image(ioctx, name=无, 快照=无, read_only=False, image_id=无, _oncomplete=无)
该类表示一个 RBD 图像。它用于在图像上执行 I/O 并与快照交互。
Note: 如果图像已被删除,该类的任何方法都可能引发
ImageNotFound
。- close(self)
释放该图像对象使用的资源。
调用此方法后,不应使用此对象。
- require_not_closed(self)
检查 Image 是否未关闭
- Raises:
InvalidArgument
- class rbd.RBD
该类包装 librbd CRUD 函数。
- aio_open_image(self, oncomplete, ioctx, name=无, 快照=无, read_only=False, image_id=无)
异步打开给定快照处的图像。指定名称或 ID,否则
InvalidArgument
。oncomplete 将调用创建的 Image 对象以及完成:
oncomplete(completion, image)
如果指定了快照,图像将只读,除非
Image.set_snap()
被稍后调用。如果使用只读模式,对象的元数据(例如,哪些快照存在)可能会过时。有关更多详细信息,请参阅 C API。
Image
object (such as which snapshots exist) may become obsolete. See the C api for more details.要清理打开图像,应调用
Image.close()
或Image.aio_close()
。- 参数:
oncomplete (completion) -- 打开完成时要做什么
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池中的图像name (字符串) -- 图像的名称
快照 (字符串) -- 从哪个快照读取
read_only (bool) -- 是否以只读模式打开图像
image_id (字符串) -- 图像的 ID
- 返回:
Completion
- 完成对象
- clone(self, p_ioctx, p_name, p_snapshot, c_ioctx, c_name, features=无, order=无, stripe_unit=无, stripe_count=无, data_pool=无, clone_format=无)
将父 rbd 快照克隆到 COW 稀疏子图像中。
- 参数:
p_ioctx-- 表示父快照的父上下文
p_name-- 父图像名称
p_snapshot-- 父图像快照名称或 ID
c_ioctx-- 表示新克隆的子上下文
c_name-- 克隆(子)名称
features (int) -- 要启用的功能掩码;如果设置,必须包括分层
order (int) -- 图像被分成 (2**order) 字节对象
stripe_unit (int) -- 字节中的条带单元(默认为 None,让 librbd 决定)
stripe_count (int) -- 在循环之前要条带的对象
data_pool (字符串) -- 可选的单独数据块池
clone_format (int) -- 1(需要受保护的快照),2(需要 mimic+ 客户端)
- Raises:
TypeError
- Raises:
InvalidArgument
- Raises:
ImageExists
- Raises:
FunctionNotSupported
- Raises:
ArgumentOutOfRange
- config_get(self, ioctx, key)
获取池级配置覆盖。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被读取key (字符串) -- 键
- 返回:
str - 值
- config_list(self, ioctx)
列出池级配置覆盖。
- 返回:
ConfigPoolIterator
- config_remove(self, ioctx, key)
移除池级配置覆盖。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被读取key (字符串) -- 键
- 返回:
str - 值
- config_set(self, ioctx, key, 值)
获取池级配置覆盖。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被读取key (字符串) -- 键
值 (字符串) -- 值
- 创建(self, ioctx, name, size定位特定驱动器容量:, order=无, old_format=False, features=无, stripe_unit=无, stripe_count=无, data_pool=无)
创建一个 rbd 图像。
- 参数:
ioctx (
rados.Ioctx
) -- 创建图像的上下文name (字符串) -- 图像的名称
size定位特定驱动器容量: (int) -- 图像的大小(以字节为单位)
order (int) -- 图像被分成 (2**order) 字节对象
old_format (bool) -- 是否创建一个旧式图像,旧式图像可以被旧客户端访问,但不能使用分层等高级功能。
features (int) -- 要启用的功能掩码
stripe_unit (int) -- 字节中的条带单元(默认为 None,让 librbd 决定)
stripe_count (int) -- 在循环之前要条带的对象
data_pool (字符串) -- 可选的单独数据块池
- Raises:
ImageExists
- Raises:
TypeError
- Raises:
InvalidArgument
- Raises:
FunctionNotSupported
- features_from_string(self, str_features)
从 str 获取功能掩码,如果 str_features 为空,它将返回 RBD_FEATURES_DEFAULT。
- 参数:
str_features (字符串) -- 功能 str
- 返回:
int - 图像的功能掩码
- Raises:
InvalidArgument
- features_to_string(self, features)
将功能掩码转换为 str。
- 参数:
features (int) -- 功能掩码
- 返回:
str - 图像的功能 str
- Raises:
InvalidArgument
- group_create(self, ioctx, name)
创建一个组。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被使用name (字符串) -- 组的名称
- Raises:
ObjectExists
- Raises:
InvalidArgument
- Raises:
FunctionNotSupported
- group_list(self, ioctx)
列出组。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被读取- 返回:
list -- 组名称列表
- Raises:
FunctionNotSupported
- group_remove(self, ioctx, name)
删除一个 RBD 组。这可能需要很长时间,因为它不会返回,直到组中的每个图像都已从组中删除。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池中的组name (字符串) -- 要删除的组的名称
- Raises:
ObjectNotFound
- Raises:
InvalidArgument
- Raises:
FunctionNotSupported
- group_rename(self, ioctx, src, dest)
重命名一个 RBD 组。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池中的组src (字符串) -- 组的当前名称
dest (字符串) -- 组的新名称
- Raises:
ObjectExists
- Raises:
ObjectNotFound
- Raises:
InvalidArgument
- Raises:
FunctionNotSupported
- 列表(self, ioctx)
列出图像名称。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被读取- 返回:
list -- 图像名称列表
- list2(self, ioctx)
迭代池中的图像。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池中的图像- 返回:
ImageIterator
- migration_abort(self, ioctx, image_name, on_progress=无)
取消先前启动但中断的迁移。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池中的图像image_name (字符串) -- 图像的名称
on_progress (回调函数) -- 可选的进度回调函数
- Raises:
ImageNotFound
- migration_commit(self, ioctx, image_name, on_progress=无)
提交执行的 RBD 图像迁移。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池中的图像image_name (字符串) -- 图像的名称
on_progress (回调函数) -- 可选的进度回调函数
- Raises:
ImageNotFound
- migration_execute(self, ioctx, image_name, on_progress=无)
执行准备好的 RBD 图像迁移。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池中的图像image_name (字符串) -- 图像的名称
on_progress (回调函数) -- 可选的进度回调函数
- Raises:
ImageNotFound
- migration_prepare(self, ioctx, image_name, dest_ioctx, dest_image_name, features=无, order=无, stripe_unit=无, stripe_count=无, data_pool=无, clone_format=无, flatten=False)
准备一个 RBD 图像迁移。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池中的图像image_name-- 图像的当前名称
dest_ioctx (
rados.Ioctx
) -- 确定要迁移到的池dest_image_name (字符串) -- 目标图像的名称(可以是同一图像)
features (int) -- 要启用的功能掩码;如果设置,必须包括分层
order (int) -- 图像被分成 (2**order) 字节对象
stripe_unit (int) -- 字节中的条带单元(默认为 None,让 librbd 决定)
stripe_count (int) -- 在循环之前要条带的对象
data_pool (字符串) -- 可选的单独数据块池
clone_format (int) -- 如果源图像是克隆,则为目标图像使用哪种克隆格式
flatten (bool) -- 如果源图像是克隆,是否要展平目标图像或使其成为同一父级的克隆
- Raises:
TypeError
- Raises:
InvalidArgument
- Raises:
ImageExists
- Raises:
FunctionNotSupported
- Raises:
ArgumentOutOfRange
- migration_prepare_import(self, source_spec, dest_ioctx, dest_image_name, features=无, order=无, stripe_unit=无, stripe_count=无, data_pool=无)
准备一个 RBD 图像迁移。
- 参数:
source_spec (字符串) -- JSON 编码的 source-spec
dest_ioctx (
rados.Ioctx
) -- 确定要迁移到的池dest_image_name (字符串) -- 目标图像的名称(可以是同一图像)
features (int) -- 要启用的功能掩码;如果设置,必须包括分层
order (int) -- 图像被分成 (2**order) 字节对象
stripe_unit (int) -- 字节中的条带单元(默认为 None,让 librbd 决定)
stripe_count (int) -- 在循环之前要条带的对象
data_pool (字符串) -- 可选的单独数据块池
- Raises:
TypeError
- Raises:
InvalidArgument
- Raises:
ImageExists
- Raises:
FunctionNotSupported
- Raises:
ArgumentOutOfRange
- migration_status(self, ioctx, image_name)
返回 RBD 图像迁移状态。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池中的图像image_name (字符串) -- 图像的名称
- 返回:
dict - 包含以下键:
source_pool_id
(int) - 源图像池 IDsource_pool_namespace
(str) - 源图像池命名空间source_image_name
(str) - 源图像名称source_image_id
(str) - 源图像 IDdest_pool_id
(int) - 目标图像池 IDdest_pool_namespace
(str) - 目标图像池命名空间dest_image_name
(str) - 目标图像名称dest_image_id
(str) - 目标图像 IDstate
(int) - 当前迁移状态state_description
(str) - 迁移状态描述
- Raises:
ImageNotFound
- mirror_image_info_list(self, ioctx, mode_filter=无)
迭代池的镜像图像实例 ID。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被读取mode_filter-- 列出此图像镜像模式中的图像
- 返回:
MirrorImageInfoIterator
- mirror_image_instance_id_list(self, ioctx)
迭代池的镜像图像实例 ID。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被读取- 返回:
MirrorImageInstanceIdIterator
- mirror_image_status_list(self, ioctx)
迭代池的镜像图像状态。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被读取- 返回:
MirrorImageStatusIterator
- mirror_image_status_summary(self, ioctx)
获取池的镜像图像状态摘要。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被读取- 返回:
list - (状态,计数) 元组列表
- mirror_mode_get(self, ioctx)
获取池镜像模式。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被读取- 返回:
int - 池镜像模式
- mirror_mode_set(self, ioctx, mirror_mode)
设置池镜像模式。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被写入mirror_mode (int) -- 要设置的镜像模式
- mirror_peer_add(self, ioctx, site_name, client_name, direction=RBD_MIRROR_PEER_DIRECTION_RX_TX)
添加镜像对等体。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被使用site_name (字符串) -- 镜像对等体站点名称
client_name (字符串) -- 镜像对等体客户端名称
direction (int) -- 镜像的方向
- 返回:
str - 对等体 UUID
- mirror_peer_bootstrap_create(self, ioctx)
为外部集群创建一个新的 RBD 镜像引导令牌。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被写入- 返回:
str - 引导令牌
- mirror_peer_bootstrap_import(self, ioctx, direction, token)
从外部集群导入引导令牌以自动配置镜像对等体。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被写入direction (int) -- 镜像对等体方向
token (字符串) -- 引导令牌
- mirror_peer_get_attributes(self, ioctx, uuid)
获取可选镜像对等体属性
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被写入uuid (字符串) -- 镜像对等体的 UUID
- 返回:
dict - 包含以下键:
mon_host
(str) - 监控地址key
(str) - CephX 密钥
- mirror_peer_list(self, ioctx)
迭代池的对等体。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被读取- 返回:
MirrorPeerIterator
- mirror_peer_remove(self, ioctx, uuid)
移除镜像对等体。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被使用uuid (字符串) -- 对等体 UUID
- mirror_peer_set_attributes(self, ioctx, uuid, attributes)
设置可选镜像对等体属性
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被写入uuid (字符串) -- 镜像对等体的 UUID
attributes (字典) -- ‘mon_host’ 和 ‘key’ 属性
- mirror_peer_set_client(self, ioctx, uuid, client_name)
设置镜像对等体客户端名称
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被写入uuid (字符串) -- 镜像对等体的 UUID
client_name (字符串) -- 要设置的镜像对等体客户端名称
- mirror_peer_set_cluster(self, ioctx, uuid, cluster_name)
- mirror_peer_set_name(self, ioctx, uuid, site_name)
设置镜像对等体站点名称
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被写入uuid (字符串) -- 镜像对等体的 UUID
site_name (字符串) -- 要设置的镜像对等体站点名称
- mirror_remote_namespace_get(self, ioctx)
获取镜像远程命名空间
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被读取- 返回:
str - 镜像远程命名空间
- mirror_remote_namespace_set(self, ioctx, remote_namespace)
设置镜像远程命名空间
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被写入remote_namespace-- 要镜像到的远程集群命名空间
- mirror_site_name_get(self, rados)
获取本地集群的友好站点名称
- 参数:
rados-- 集群连接
- 返回:
str - 本地站点名称
- mirror_site_name_set(self, rados, site_name)
设置本地集群的友好站点名称
- 参数:
rados-- 集群连接
site_name-- 友好站点名称
- mirror_uuid_get(self, ioctx)
获取池镜像 UUID
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被读取- 返回:
ste - 池镜像 UUID
- namespace_create(self, ioctx, name)
在池内创建一个 RBD 命名空间
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池name (字符串) -- 命名空间名称
- namespace_exists(self, ioctx, name)
验证池内是否存在命名空间
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池name (字符串) -- 命名空间名称
- 返回:
bool - 如果命名空间存在则为 true
- namespace_list(self, ioctx)
列出池中的所有命名空间
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池- 返回:
list - 命名空间名称集合
- namespace_remove(self, ioctx, name)
从池中删除一个 RBD 命名空间
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池name (字符串) -- 命名空间名称
- pool_init(self, ioctx, force)
初始化一个 RBD 池
rados.Ioctx
:param force: 强制初始化
- pool_metadata_get(self, ioctx, key)
获取给定键的池元数据。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被读取key (字符串) -- 元数据键
- 返回:
str - 元数据值
- pool_metadata_list(self, ioctx)
列出池元数据。
- 返回:
PoolMetadataIterator
- pool_metadata_remove(self, ioctx, key)
移除给定键的池元数据。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被读取key (字符串) -- 元数据键
- 返回:
str - 元数据值
- pool_metadata_set(self, ioctx, key, 值)
为给定键设置池元数据。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池被读取key (字符串) -- 元数据键
值 (字符串) -- 元数据值
- pool_stats_get(self, ioctx)
返回 RBD 池统计信息
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池- 返回:
dict - 包含以下键:
image_count
(int) - 图像计数image_provisioned_bytes
(int) - 图像总 HEAD 提供的字节数image_max_provisioned_bytes
(int) - 图像总最大提供字节数image_snap_count
(int) - 图像快照计数trash_count
(int) - 丢弃图像计数trash_provisioned_bytes
(int) - 丢弃图像总 HEAD 提供的字节数trash_max_provisioned_bytes
(int) - 丢弃图像总最大提供字节数trash_snap_count
(int) - 丢弃快照计数
- 删除(self, ioctx, name, on_progress=无)
删除一个 RBD 图像。这可能需要很长时间,因为它不会返回,直到组成图像的每个对象都已删除。请注意,必须先删除所有快照才能删除图像。如果还有快照剩余,ae6ce6: 将引发。如果图像仍然打开,或者崩溃客户端的监视器尚未过期,6132b0: ) -- 确定哪个 RADOS 池中的图像
ImageHasSnapshots
is raised. If the image is still open, or the watch from a crashed client has not expired,ImageBusy
。- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池中的图像name (字符串) -- 要删除的图像的名称
on_progress (回调函数) -- 可选的进度回调函数
- Raises:
ImageNotFound
,ImageBusy
,ImageHasSnapshots
- rename(self, ioctx, src, dest)
重命名一个 RBD 图像。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池中的图像src (字符串) -- 图像的当前名称
dest (字符串) -- 图像的新名称
- Raises:
ImageNotFound
,ImageExists
- trash_get(self, ioctx, image_id)
从丢弃中检索 RBD 图像信息。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池中的图像image_id (字符串) -- 要恢复的图像的 ID
- 返回:
dict - 包含以下键:
id
(str) - 图像 IDname
(str) - 图像名称source
(str) - 删除的来源deletion_time
(datetime) - 删除时间deferment_end_time
(datetime) - 允许从丢弃中删除图像的时间
- Raises:
ImageNotFound
- trash_list(self, ioctx)
List all entries from trash.
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池中的图像- 返回:
TrashIterator
- trash_move(self, ioctx, name, delay=0)
将 RBD 图像移动到丢弃中。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池中的图像name (字符串) -- 要删除的图像的名称
delay (int) -- 图像可以从丢弃中删除的时间延迟(秒)
- Raises:
ImageNotFound
- trash_purge(self, ioctx, expire_ts=无, threshold=-1)
批量删除丢弃中的 RBD 图像。
默认情况下,它删除 deferment 结束时间小于当前时间的图像。aff7a0: 时间戳是可配置的,例如,删除一周前过期的图像。
The timestamp is configurable, e.g. delete images that have expired a week ago.
如果使用阈值,它将删除图像直到 X% 池使用率被满足。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池中的图像expire_ts (datetime) -- 要视为过期的图像的时间戳(UTC)
threshold (float) -- 要满足的池使用率百分比(0 到 1)
- trash_remove(self, ioctx, image_id, force=False, on_progress=无)
从丢弃中删除 RBD 图像。如果图像延期时间尚未过期
PermissionError
。- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池中的图像image_id (字符串) -- 要删除的图像的 ID
force (bool) -- 即使延期时间尚未过期也要强制删除
on_progress (回调函数) -- 可选的进度回调函数
- Raises:
ImageNotFound
,PermissionError
- trash_restore(self, ioctx, image_id, name)
从丢弃中恢复 RBD 图像。
- 参数:
ioctx (
rados.Ioctx
) -- 确定哪个 RADOS 池中的图像image_id (字符串) -- 要恢复的图像的 ID
name (字符串) -- 恢复图像的新名称
- Raises:
ImageNotFound
- version(self)
获取 C 库的版本号。
librbd
a元组- 返回:
libcephfs 版本的组件
(major, minor, extra)
librbd 版本组件的
- class rbd.SnapIterator(Image image)
迭代图像的快照信息。
生成包含快照信息的字典。
键是:
id
(int) - 快照的数字标识符size
(int) - 快照时图像的大小(以字节为单位)name
(str) - 快照的名称namespace
(int) - 快照命名空间枚举group
(dict) - 可选的组命名空间快照trash
(dict) - 可选的丢弃命名空间快照mirror
(dict) - 可选的镜像命名空间快照
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.