分布式存储ceph创建RBD接口

[TOC]

分布式存储ceph创建RBD接口

一 RBD介绍

RBD全称为RADOS Block Device,是一种构建在RADOS集群之上为客户端提供块设备接口的存储服务中间层。这类的客户端包括虚拟机KVM和云计算操作系统OpenStack、CloudStack等。 RBD为条带化,支持存储空间的动态扩容等特性,并可以借助RADOS实现快照,副本和一致性。 客户端访问RBD有两种方式。

  • 通过内核模块rbd.ko将镜像映射为本地块设备,通常设置文件一般为:/dev/rbd*

  • 另一种是通过librbd接口,KVM虚拟机就是使用这种接口。

二 RBD基本操作

1、创建RBD接口需要创建专门用于RBD的存储池

# 1、先创建一个名为kvm的普通存储池,并指定pg与pgp都为32
ceph osd pool create kvm 32 32

# 2、再将存储池转换为RBD模式
ceph osd pool application enable kvm rbd

# 3、如果自定义过crush rule,请记得为pool指定crush rule,关于crush rule详见《08 ...ceph运维操作》
ceph osd pool set kvm crush_rule egon_rule

2、初始化存储池

rbd pool init -p kvm

3、创建镜像

#  语法:
rbd create --size 5G --pool <pool name> <image name>

# 例如
rbd create --size 1G --pool kvm img1 

4、查看镜像

# 查看存储池下存在哪些镜像
rbd ls --pool kvm -l

# 查看某一镜像的详细信息
rbd --image img1 --pool kvm info  # 可简写为:rbd info kvm/img1

显示内容注解:
size:镜像的大小与被分割成的条带数。
order 22:条带的编号,有效范围是12到25,对应4K到32M,而22代表2的22次方,这样刚好是4M。
id:镜像的ID标识。
block_name_prefix:名称前缀。
format:使用的镜像格式,默认为2。
features:当前镜像的功能特性。
op_features:可选的功能特性。

5、修改镜像大小

rbd resize --pool kvm --image img1 --size 5G

使用resize就可以调整镜像的大小,一般建议只增不减,如果是减少的话需要加一个选项–allow-shrink,如。

rbd resize --pool kvm --image img1 --size 2G --allow-shrink

6、删除镜像

使用remove或者rm都可以,通常不推荐直接删除镜像,下述方法删除镜像后,镜像将不可恢复。

rbd remove kvm/img1

推荐使用trash命令,这个命令删除是将镜像移动一回收站,如果想找回还可以恢复,如。

rbd trash move <pool name>/<image name>
rbd trash list --pool <pool name>
rbd trash restore <pool name>/<id>

# 例
rbd trash move kvm/img1
rbd trash list --pool kvm
rbd trash restore kvm/5b6376b8b4567
rbd ls --pool kvm -l  # 发现还原回来了

三 快照

对rbd镜像进行快照,可以保留镜像的状态历史,另外还可以利用快照的分层技术,通过将快照克隆为新的镜像使用。

3.1 创建快照

rbd snap create --pool <pool name> --image <image name> --snap <snap name>
  • –pool:指定哪个存储池。
  • –image:指定哪个镜像。
  • –snap:指定快照的名称。

还可以使用下面的命令创建快照,更方便,简单。

rbd snap create <pool name>/<image name>@<snap name>

rbd snap create kvm/img1@img1_snap1

3.2 查看快照

列出指定镜像所有快照。

rbd snap list <pool name>/<image name> 

还可以用json格式输出。

rbd snap list <pool name>/<image name> --format json --pretty-format 

rbd snap list kvm/img1 --format json --pretty-format 

3.3 回滚快照

回滚镜像到指定快照。

rbd snap rollback <pool name>/<image name>@<snap name> 

注意: 在回滚快照之需要将镜像取消镜像的映射,然后再回滚。

rbd snap rollback kvm/img1@img1_snap1

3.4 限制快照数

限制镜像可创建快照数。

rbd snap limit set <pool name>/<image name> --limit 3 

解除限制。

rbd snap limit clear <pool name>/<image name> 

3.5 删除快照

删除指定快照。

rbd snap rm <pool name>/<image name>@<snap name> 

删除所有快照。

rbd snap purge <pool name>/<image name> 

3.6 快照分层

快照分层支持用快照的克隆生成新镜像,这种镜像与直接创建的镜像几乎完全一样,支持镜像的所有操作。唯一不同的是克隆镜像引用了一个只读的上游快照,而且此快照必须要设置保护模式。

快照克隆

  1. 将上游快照设置为保护模式。
rbd snap protect <pool name>/<image name>@<snap name> 

# 例
rbd snap create kvm/img1@img1_snap666
rbd snap protect kvm/img1@img1_snap666

2、克隆快照为新的镜像。

rbd clone <pool name>/<image name>@<snap name> --dest <pool name>/<image name> 

# 例
rbd clone kvm/img1@img1_snap666 --dest kvm/img3
  • –dest:指定新的镜像名。 克隆完成后可以通过下面命令查看快照的子项。
rbd children <pool name>/<image name>@<snap name> 

快照展平

通常情况下通过快照克隆而得到的镜像会保留对父快照的引用,这时候不可以删除该父快照,否则会有影响

rbd snap rm kvm/img1@img1_snap666 
# 报错snapshot 'img1_snap666' is protected from removal.

如果要删除快照但想保留其子镜像,必须先展平其子镜像,展平的时间取决于镜像的大小,操作方法如下。

1、展平子镜像。

rbd flatten <pool name>/<image name> 

# 例:因为kvm/img3是由快照img1_snap666克隆而来的,所以我们先将它展平
rbd flatten kvm/img3

当展平完成后,正常情况下该快照还是受保护的,无法删除,所以还需要先取消保护。

2、取消快照保护。

联系管理员微信tutu19192010,注册账号

上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 帮助IT小伙伴学到真正的技术