注意

本文档适用于 Ceph 开发版本。

基本块设备命令

The rbd该命令使您能够创建、列出、检查和删除块设备镜像。您还可以使用它来克隆镜像、创建快照、将镜像回滚到快照、查看快照等。有关使用该命令的详细信息,请参阅rbd command, see RBD – 管理 RADOS 块设备(RBD)镜像详细信息。

重要

要使用 Ceph 块设备命令,您必须能够访问正在运行的 Ceph 集群。

创建块设备池

  1. 使用ceph工具来创建一个池.

  2. 使用rbd工具来初始化池,以便 RBD 使用:

    rbd pool init <pool-name>
    

    Note

    The rbd如果命令中没有指定池名,则该工具假定默认池名为“rbd”。

创建块设备用户

除非另有说明,否则rbd命令使用 Ceph 用户 IDadmin来访问 Ceph 集群。Ceph 用户 ID 允许对集群进行完全的行政访问。我们建议您使用具有比admin Ceph user ID allows full administrative access to the cluster. We recommend that you acess the Ceph cluster with a Ceph user ID that has fewer permissions than the adminCeph 用户 ID 更少权限的 Ceph 用户 ID 来访问 Ceph 集群。我们称这个非adminCeph 用户 ID 为“块设备用户”或“Ceph 用户”。

创建 Ceph 用户,请使用ceph auth get-or-create命令来指定 Ceph 用户 ID 名称、监控权限(capabilities)和 OSD 权限(capabilities):

ceph auth get-or-create client.{ID} mon 'profile rbd' osd 'profile {profile name} [pool={pool-name}][, profile ...]' mgr 'profile rbd [pool={pool-name}]'

例如:要创建一个名为qemu的 Ceph 用户 ID,该用户 ID 对池vms具有读写访问权限,对池images, run the following command:

ceph auth get-or-create client.qemu mon 'profile rbd' osd 'profile rbd pool=vms, profile rbd-read-only pool=images' mgr 'profile rbd pool=images'

具有只读访问权限ceph auth get-or-create命令是所指定 Ceph 用户 ID 的密钥环,可以将其写入/etc/ceph/ceph.client.{ID}.keyring.

Note

通过提供--id {id} argument when using the ``rbd命令来指定 Ceph 用户 ID。此参数是可选的。

创建块设备镜像

在将块设备添加到节点之前,您必须在Ceph 存储集群中为其创建镜像。要创建块设备镜像,请运行类似以下形式的命令:

rbd create --size {megabytes} {pool-name}/{image-name}

例如,要创建一个名为bar的 1GB 镜像,该镜像存储在名为swimmingpool发现的设备列表,请运行此命令:

rbd create --size 1024 swimmingpool/bar

的池中rbd。例如,如果您运行此命令,您将创建一个名为foo的 1GB 镜像,该镜像存储在默认池rbd:

rbd create --size 1024 foo

Note

您必须在指定它之前创建池。请参阅存储池 for details.

列出块设备镜像

要列出rbd池中的块设备,请运行以下命令:

rbd ls

Note

rbd是默认池名,并且rbd ls列出默认池中的命令。

要列出特定池中的块设备,请运行以下命令,但将{poolname}替换为池的名称:

rbd ls {poolname}

例如:

rbd ls swimmingpool

要列出rbd池中的“延迟删除”块设备,请运行以下命令:

rbd trash ls

要列出特定池中的“延迟删除”块设备,请运行以下命令,但将{poolname}替换为池的名称:

rbd trash ls {poolname}

例如:

rbd trash ls swimmingpool

获取镜像信息

要从特定镜像中检索信息,请运行以下命令,但将{image-name}替换为镜像的名称:

rbd info {image-name}

例如:

rbd info foo

要从池中的镜像中检索信息,请运行以下命令,但将{image-name}替换为镜像的名称,并将{pool-name}替换为池的名称:

rbd info {pool-name}/{image-name}

例如:

rbd info swimmingpool/bar

Note

其他命名约定也是可能的,并且可能与此处描述的命名约定冲突。例如,userid/<uuid>是 RBD 镜像的可能名称,并且此类名称至少可能令人困惑。

调整块设备镜像大小

Ceph 块设备镜像是精简配置的。它们在您开始将数据保存到它们之前实际上不会使用任何物理存储。但是,它们确实有一个最大容量,您可以使用--size选项设置该容量。如果您想增加(或减少)Ceph 块设备镜像的最大大小,请运行以下命令之一:

增加块设备镜像大小

rbd resize --size 2048 foo

减小块设备镜像大小

rbd resize --size 2048 foo --allow-shrink

删除块设备镜像

要删除块设备,请运行以下命令,但将{image-name}替换为您要删除的镜像的名称:

rbd rm {image-name}

例如:

rbd rm foo

从池中删除块设备

要从池中删除块设备,请运行以下命令,但将{image-name}替换为要删除的镜像的名称,并将{pool-name}替换为要从中删除镜像的池的名称:

rbd rm {pool-name}/{image-name}

例如:

rbd rm swimmingpool/bar

“延迟删除”池中的块设备

要从池中延迟删除块设备(这意味着将其移动到“垃圾”并在稍后删除它),请运行以下命令,但将{image-name}替换为要移动到垃圾的镜像的名称,并将{pool-name}替换为池的名称:

rbd trash mv {pool-name}/{image-name}

例如:

rbd trash mv swimmingpool/bar

从池中删除延迟删除的块设备

要从池中删除延迟删除的块设备,请运行以下命令,但将{image-id}替换为要删除的镜像的 ID,并将{pool-name}替换为要从中删除镜像的池的名称:

rbd trash rm {pool-name}/{image-id}

例如:

rbd trash rm swimmingpool/2bf4474b0dc51

Note

  • 即使镜像有快照或正在被克隆使用,您也可以将其移动到垃圾。但是,在这些情况下,您无法将其从垃圾中删除。

  • You can use --expires-at要设置延迟时间(默认为now)。如果延迟时间尚未到达,除非您使用--force.

恢复块设备镜像

要在 rbd 池中恢复延迟删除的块设备,请运行以下命令,但将{image-id}替换为镜像的 ID:

rbd trash restore {image-id}

例如:

rbd trash restore 2bf4474b0dc51

在特定池中恢复块设备镜像

要在特定池中恢复延迟删除的块设备,请运行以下命令,但将{image-id}替换为镜像的 ID,并将{pool-name}替换为池的名称:

rbd trash restore {pool-name}/{image-id}

例如:

rbd trash restore swimmingpool/2bf4474b0dc51

在恢复镜像时重命名

您还可以使用--image在恢复镜像时重命名镜像。

例如:

rbd trash restore swimmingpool/2bf4474b0dc51 --image new-name

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.