注意

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

基本块设备命令

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

重要

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

创建块设备池

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

  2. 使用 rbd 工具初始化池以供 RBD 使用

    rbd pool init <pool-name>
    

    注意

    如果在命令中未指定池名称,rbd 工具将假定默认池名称为“rbd”。

创建块设备用户

除非另有说明,否则 rbd 命令使用 Ceph 用户 ID admin 来访问 Ceph 集群。 admin Ceph 用户 ID 允许对集群进行完全管理访问。我们建议您使用权限少于 admin Ceph 用户 ID 的 Ceph 用户 ID 来访问 Ceph 集群。我们将这个非 admin Ceph 用户 ID 称为“块设备用户”或“Ceph 用户”。

创建 Ceph 用户,请使用 ceph auth get-or-create 命令指定 Ceph 用户 ID 名称、监视器功能 (caps) 和 OSD 功能 (caps)

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 具有只读访问权限,请运行以下命令

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

注意

在使用 rbd 命令时,通过提供 --id {id} argument 来指定 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

注意

您必须先创建一个池,然后才能将其指定为源。有关详细信息,请参阅存储池

列出块设备镜像

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

rbd ls

注意

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

注意

其他命名约定也是可能的,并且可能与此处描述的命名约定冲突。例如,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

注意

  • 您可以将镜像移动到回收站,即使它有一个或多个快照或正在被克隆活动使用。但是,在这些条件下您无法将其从回收站中移除。

  • 您可以使用 --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 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入