注意
本文档适用于 Ceph 的开发版本。
基本块设备命令
rbd 命令允许您创建、列出、检查和移除块设备镜像。您还可以使用它来克隆镜像、创建快照、将镜像回滚到快照、查看快照等。有关使用 rbd 命令的详细信息,请参阅 RBD – 管理 RADOS 块设备 (RBD) 镜像。
重要
要使用 Ceph 块设备命令,您必须能够访问正在运行的 Ceph 集群。
创建块设备池
使用
ceph工具创建一个池。使用
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