块设备命令¶
rbd
命令可用于创建、罗列、自查和删除块设备映像,也可克隆映像、创建快照、回滚快照、查看快照等等。 rbd
命令用法详情见
RBD – 管理 RADOS 块设备映像。
Important
要使用 Ceph 块设备命令,你必须有相应的集群访问权限。
创建一个块设备存储池¶
在管理节点上,用
ceph
工具创建一个存储池。在管理节点上,用
rbd
工具初始化这个存储池以用于 RBD:rbd pool init <pool-name>
Note
没指定存储池名字时, rbd
工具会假设默认的为
rbd 。
创建一个块设备用户¶
Unless specified, the rbd
command will access the Ceph cluster using the ID
admin
. This ID allows full administrative access to the cluster. It is
recommended that you utilize a more restricted user wherever possible.
To 创建一个 Ceph 用户, with ceph
specify the auth get-or-create
command, user name, monitor caps, and OSD caps:
ceph auth get-or-create client.{ID} mon 'profile rbd' osd 'profile {profile name} [pool={pool-name}][, profile ...]'
For example, to create a user ID named qemu
with read-write access to the
pool vms
and read-only access to the pool images
, execute the
following:
ceph auth get-or-create client.qemu mon 'profile rbd' osd 'profile rbd pool=vms, profile rbd-read-only pool=images'
The output from the ceph auth get-or-create
command will be the keyring for
the specified user, which can be written to /etc/ceph/ceph.client.{ID}.keyring
.
Note
The user ID can be specified when using the rbd
command by
providing the --id {id}
optional argument.
创建块设备映像¶
要想把块设备加入某节点,你得先在 Ceph 存储集群中创建一个映像,用下列命令:
rbd create --size {megabytes} {pool-name}/{image-name}
例如,要在 swimmingpool
存储池中创建一个名为 bar
、大小为 1GB 的映像,执行下列命令:
rbd create --size 1024 swimmingpool/bar
如果创建映像时不指定存储池,它将使用默认的 rbd
存储池。例如,下面的命令将默认在 rbd
存储池中创建一个大小为 1GB 、名为 foo
的映像:
rbd create --size 1024 foo
Note
指定此存储池前必须先创建它,详情见存储池。
罗列块设备映像¶
要罗列 rbd
存储池中的块设备,用下列命令(即 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
调整块设备映像尺寸¶
Ceph 块设备映像是瘦接口设备,只有在你开始写入数据时它们才会占用物理空间。然而,它们都有最大容量,就是你设置的
--size
选项。如果你想增加(或减小) Ceph 块设备映像的最大尺寸,用下列命令:
rbd resize --size 2048 foo (to increase)
rbd resize --size 2048 foo --allow-shrink (to decrease)
删除块设备映像¶
用下列命令删除块设备,用 {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
你可以把一个映像移入垃圾池,即便它有快照、或正在被克隆品引用着,但不能从垃圾池删掉。
你可以用 –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