创建一个块设备池
  • 在管理节点上,使用该ceph工具创建一个pool。

  • 在管理节点上,使用该rbd工具初始化池以供RBD使用:rbd pool init <pool-name>

  • rbd默认池名称为“ rbd”,没有的就创建一下,否则rbd ls时会报rbd: error opening default pool ‘rbd’错误

举例:

[ceph@ceph06 ~]$ ceph osd pool create rbd 32 32           #创建rbd默认池
pool 'rbd' created
[ceph@ceph06 ~]$ rbd pool init rbd
[ceph@ceph06 ~]$ ceph osd pool create images 32 32        #创建名称为images的池
pool 'images' created
[ceph@ceph06 ~]$ rbd pool init images
创建一个块设备用户

:通过提供可选参数–id {id}来指定用户ID,否则rbd命令将使用默认的用户ID admin访问Ceph集群,此ID允许对群集进行完全管理访问,建议您尽可能使用受限制的用户。

To create a Ceph user, 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 ...]' mgr 'profile rbd [pool={pool-name}]'

For example, to create a user ID named qemu with read-write access to the pool rbd and read-only access to the pool images, execute the following:

[ceph@ceph06 ~]$ sudo ceph auth get-or-create client.qemu mon 'profile rbd' osd 'profile rbd pool=rbd, profile rbd-read-only pool=images' mgr 'profile rbd pool=images' -o /etc/ceph/ceph.client.qemu.keyring
创建块设备映像

要创建块设备映像,请执行以下操作:

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

例,要创建一个名为1GB的映像bar,该映像将信息存储在名为的池中images,请执行以下操作:

[ceph@ceph06 ~]$ rbd create --size 1024 images/bar
[ceph@ceph06 ~]$ rbd ls images
bar

如果在创建映像时未指定池,则它将存储在默认池中rbd

[ceph@ceph06 ~]$ rbd create --size 1024 foo
[ceph@ceph06 ~]$ rbd ls
foo
[ceph@ceph06 ~]$ rbd ls rbd
foo
列出块设备映像
  • 要列出rbd池中的块设备:rbd ls

  • 要列出特定池中的块设备:rbd ls {poolname}

  • 要列出rbd池中的延迟删除块设备:rbd trash ls

  • 要列出特定池中的延迟删除块设备:rbd trash ls {poolname}

检索映像信息

从默认rbd池中检索特定映像信息:

#语法:
rbd info {image-name}

#举例:
[ceph@ceph06 ~]$ rbd info foo
rbd image 'foo':
        size 1 GiB in 256 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 2d096da276cd5
        block_name_prefix: rbd_data.2d096da276cd5
        format: 2
        features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
        op_features: 
        flags: 
        create_timestamp: Tue May 12 02:53:04 2020
        access_timestamp: Tue May 12 02:53:04 2020
        modify_timestamp: Tue May 12 02:53:04 2020

从指定rbd池中检索特定映像信息:

#语法:
rbd info {pool-name}/{image-name}

#举例:
[ceph@ceph06 ~]$ rbd info images/bar
调整块设备映像的大小

Ceph块设备映像是精简配置的。在您开始将数据保存到它们之前,它们实际上并不使用任何物理存储。但是,它们确实具有您使用该–size选项设置的最大容量。如果要增加(或减少)Ceph块设备映像的最大大小,请执行以下操作:

#增加容量:
[ceph@ceph06 ~]$ rbd resize --size 2048 foo
Resizing image: 100% complete...done.
[ceph@ceph06 ~]$ rbd info foo
rbd image 'foo':
        size 2 GiB in 512 objects
        order 22 (4 MiB objects)
#压缩容量:
[ceph@ceph06 ~]$ rbd resize --size 1024 foo --allow-shrink
Resizing image: 100% complete...done.
[ceph@ceph06 ~]$ rbd info foo
rbd image 'foo':
        size 1 GiB in 256 objects
删除块设备的镜像

从池中删除块设备,请执行以下操作:

#语法:
rbd rm {pool-name}/{image-name}            #如果是默认的rbd池,可以直接省略{pool-name}/

#举例:
[ceph@ceph06 ~]$ rbd rm images/bar
Removing image: 100% complete...done.
trash-垃圾桶功能

如果rbd有snapshot或者clone image,也能够放进trash里面,但不能够真正地删除因为内部关联还是存在的。

将image移到trash

#语法:
rbd trash mv {pool-name}/{image-name}             #把镜像移动到trash里
rbd trash rm {pool-name}/{image-id}               #从trash里删除镜像

#举例:
[ceph@ceph06 ~]$ rbd trash mv foo                 #foo镜像在默认的rbd池中,可省略pool池名:rbd/,下同
[ceph@ceph06 ~]$ rbd trash ls
2d096da276cd5 foo
[ceph@ceph06 ~]$ rbd trash rm 2d096da276cd5
Removing image: 100% complete...done.

#可以使用--expires-at设置延迟时间(默认为now),如果延迟时间未到期,则除非使用–force,否则无法将其删除,例:
[ceph@ceph06 ~]$ rbd trash mv foo --expires-at 120
[ceph@ceph06 ~]$ rbd trash ls
2d1aae4854be5 foo
[ceph@ceph06 ~]$ rbd trash rm 2d1aae4854be5

Deferment time has not expired, please use --force if you really want to remove the image
Removing image: 0% complete...failed.
2020-05-12 03:39:48.247 7febc7ee8b00 -1 librbd::api::Trash: remove: error: deferment time has not expired.
[ceph@ceph06 ~]$ rbd trash rm 2d1aae4854be5 --force
Removing image: 100% complete...done.
恢复块设备映像

要恢复rbd池中的延迟删除块设备,请执行以下操作:

#语法:
rbd trash restore {pool-name}/{image-id}

#举例:
[ceph@ceph06 ~]$ rbd trash ls                      #默认的rbd池,可以直接省略{pool-name}/
2d1fe6de70f1f foo
[ceph@ceph06 ~]$ rbd trash restore 2d1fe6de70f1f
[ceph@ceph06 ~]$ rbd ls
foo

#当然--image在还原镜像时使用重命名镜像
rbd trash restore swimmingpool/2bf4474b0dc51 --image new-name
文档更新时间: 2020-05-12 16:15   作者:子木