ceph与openstack集成

前言

为什么要集成ceph???
ceph官网:https://docs.ceph.com/en/latest/
关于ceph:https://blog.csdn.net/mingongge/article/details/100788388
参考连接:https://blog.csdn.net/jmilk/article/details/89503498
OpenStack 使用 Ceph 作为后端存储可以带来以下好处:

  • 不需要购买昂贵的商业存储设备,降低 OpenStack 的部署成本
  • Ceph 同时提供了块存储、文件系统和对象存储,能够完全满足 OpenStack 的存储类型需求
  • RBD COW 特性支持快速的并发启动多个 OpenStack 实例
  • 为 OpenStack 实例默认的提供持久化卷
  • 为 OpenStack 卷提供快照、备份以及复制功能
  • 为 Swift 和 S3 对象存储接口提供了兼容的 API 支持

在生产环境中,我们经常能够看见将 Nova、Cinder、Glance 与 Ceph RBD 进行对接。除此之外,还可以将 Swift、Manila 分别对接到 Ceph RGW 与 CephFS。Ceph 作为统一存储解决方案,有效降低了 OpenStack 云环境的复杂性与运维成本。

准备工作

1、新建一个虚拟机作为ceph的admin节点,配置如下
(1)双网卡
ens33:192.168.12.219
ens37:192.168.12.220
(2)4核处理器,4G内存,双硬盘60G x2
2、基础配置参考https://blog.csdn.net/qq_42666043/article/details/107668439前12步,其中第8步修改hosts文件,将openstack集群和ceph 集群都添加进去

vim /etc/hosts
#openstack集群
192.168.12.137 controller
192.168.12.133 compute
192.168.12.174 compute2
#ceph集群
192.168.12.219 ceph-admin

3、三个节点和ceph-admin节点配置时间同步
4、三个节点操作

yum install deltarpm -y

安装ceph软件

1、admin节点配置yum源,安装epel源,在ceph-admin,controller,compute上操作

cd  /etc/yum.repos.d/
yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*

2、配置ceph的yum源,在ceph-admin,controller,compute上操作

vim /etc/yum.repos.d/ceph.repo

写入如下配置

[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS/
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

清除缓存

yum  makecache

3、在ceph-admin 上安装ceph-deploy管理工具 并且创建ceph工作目录

mkdir -p /etc/ceph    && cd /etc/ceph/
yum -y install ceph-deploy 

4、在ceph-admin上使用ceph-deploy给所有节点安装ceph

ceph-deploy install ceph-admin controller  compute compute2

5、在ceph-admin节点进入ceph目录创建一个ceph集群

ceph-deploy new  ceph-admin controller  compute compute2

命令执行之后在ceph目录会生成相关的配置文件ceph.conf,ceph.mon.keyring

cat  ceph.conf
[global]
fsid = 1cbc8bc2-c0a9-4442-b32f-49bd6d5179d2
mon_initial_members = ceph-admin, controller, compute, compute2
mon_host = 192.168.12.224,192.168.12.137,192.168.12.133,192.168.12.174
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

6、在ceph-admin节点上使用ceph-deploy创建mon

ceph-deploy mon create ceph-admin controller compute compute2

7、在ceph-admin节点收集密钥

ceph-deploy gatherkeys ceph-admin

这时在/etc/ceph下可看到如下文件

ceph.bootstrap-mds.keyring  ceph.bootstrap-rgw.keyring  ceph-deploy-ceph.log
ceph.bootstrap-mgr.keyring  ceph.client.admin.keyring   ceph.mon.keyring
ceph.bootstrap-osd.keyring  ceph.conf                   rbdmap

8、在ceph-admin节点上使用ceph-deploy创建osd

ceph-deploy osd create ceph-admin:sdb  controller:sdb  compute:sdb compute2:sdb

9、在ceph-admin 节点分发配置文件

ceph-deploy admin  ceph-admin  controller  compute compute2

10、给kerying添加权限 (每一个节点都要执行)

chmod +rx /etc/ceph/*
  • 可能出现的错误一

ceph -s 查看集群健康状态,如果发现报错

ceph -s
cluster 1cbc8bc2-c0a9-4442-b32f-49bd6d5179d2
     health HEALTH_WARN
            clock skew detected on mon.compute2
            16 pgs degraded
            43 pgs stuck unclean
            16 pgs undersized
            1/4 in osds are down
            Monitor clock skew detected 
     monmap e1: 4 mons at {ceph-admin=192.168.12.224:6789/0,compute=192.168.12.133:6789/0,compute2=192.168.12.174:6789/0,controller=192.168.12.137:6789/0}
            election epoch 6, quorum 0,1,2,3 compute,controller,compute2,ceph-admin
     osdmap e22: 4 osds: 3 up, 4 in; 43 remapped pgs
            flags sortbitwise,require_jewel_osds
      pgmap v45: 64 pgs, 1 pools, 0 bytes data, 0 objects
            430 MB used, 299 GB / 299 GB avail
                  25 active+remapped
                  21 active+clean
                  16 active+undersized+degraded
                   2 active

排查思路
[root@admin ceph]# ceph osd tree

ID WEIGHT  TYPE NAME           UP/DOWN REWEIGHT PRIMARY-AFFINITY 
-1 0.29279 root default                                          
-2 0.09270     host ceph-admin                                   
 0 0.09270         osd.0            up  1.00000          1.00000 
-3 0.09270     host controller                                   
 1 0.09270         osd.1            up  1.00000          1.00000 
-4 0.05370     host compute                                      
 2 0.05370         osd.2          down        0          1.00000 
-5 0.05370     host compute2                                     
 3 0.05370         osd.3            up  1.00000          1.00000 

发现osd.2是down状态
(1)将osd.2的状态设置为out

ceph osd out osd.2

(2)从集群中删除

 ceph osd rm osd.2

(3)从CRUSH中删除

 ceph osd crush rm osd.2

(4)删除osd.2的认证信息

ceph auth del osd.2

(5)在osd.2节点上操作,也就是compute上

fuser -mv /var/lib/ceph/osd/ceph-2

结果如下:

                     USER        PID ACCESS COMMAND
/var/lib/ceph/osd/ceph-2:
                     root     kernel mount /var/lib/ceph/osd/ceph-2
                     ceph      36657 F.... ceph-osd
kill  -9   36657
umount /dev/sdb1 

(6)重新初始化
登陆ceph-admin节点

cd /etc/ceph

初始化磁盘

ceph-deploy --overwrite-conf osd  prepare compute:/dev/sdb1	

激活所有的osd

ceph-deploy osd activate  ceph-admin:/dev/sdb1 controller:/dev/sdb1 compute:/dev/sdb1 compute2:/dev/sdb1

查看osd树和健康状态

ceph osd tree

结果如下:

ID WEIGHT  TYPE NAME           UP/DOWN REWEIGHT PRIMARY-AFFINITY 
-1 0.29279 root default                                          
-2 0.09270     host ceph-admin                                   
 0 0.09270         osd.0            up  1.00000          1.00000 
-3 0.09270     host controller                                   
 1 0.09270         osd.1            up  1.00000          1.00000 
-4 0.05370     host compute                                      
 2 0.05370         osd.2            up  1.00000          1.00000 
-5 0.05370     host compute2                                     
 3 0.05370         osd.3            up  1.00000          1.00000 

由于网络各种原因,以上可能不会一次成功,多试几次

ceph  -s

显示health状态为ok了,如果还是error可以继续实验,留着之后排查,只是演示效果

  • 错误二(可以与错误三一起修改)

我这里显示HEALTH_WARN

cluster 1cbc8bc2-c0a9-4442-b32f-49bd6d5179d2
     health HEALTH_WARN
            clock skew detected on mon.compute2
            Monitor clock skew detected 
     monmap e1: 4 mons at {ceph-admin=192.168.12.224:6789/0,compute=192.168.12.133:6789/0,compute2=192.168.12.174:6789/0,controller=192.168.12.137:6789/0}
            election epoch 66, quorum 0,1,2,3 compute,controller,compute2,ceph-admin
     osdmap e90: 4 osds: 4 up, 4 in
            flags sortbitwise,require_jewel_osds
      pgmap v239: 64 pgs, 1 pools, 0 bytes data, 0 objects
            5554 MB used, 294 GB / 299 GB avail
                  64 active+clean

可以通过命令查看具体的原因

ceph health detail
HEALTH_WARN clock skew detected on mon.compute2; Monitor clock skew detected 
mon.compute2 addr 192.168.12.174:6789/0 clock skew 1.28346s > max 0.05s (latency 0.0026906s)

处理方法:

(1)先时间同步
其余节点和controller节点时间同步

ntpdate controller

(2)修改ceph配置中的时间偏差阈值,然后将ceph.conf推送到各个节点
ceph-admin节点操作

vim /ceph/ceph.conf

在global字段下添加:

mon clock drift allowed = 2
mon clock drift warn backoff = 30

向其他节点推送:

ceph-deploy --overwrite-conf config push controller compute

重启mon服务,命令如下:

systemctl restart ceph-mon.target

验证结果:

ceph -s

参考连接:https://blog.csdn.net/qq_19734597/article/details/104801412

  • 错误三

还出现了一种错误:too many PGs per OSD (448 > max 300)
在这里插入图片描述
解决方法:
(1)在ceph-admin节点编辑ceph.conf配置文件

vim /etc/chrony.conf

添加一条语句:

mon_pg_warn_max_per_osd = 1000

保存退出
(2)将该配置文件推送到各个节点

ceph-deploy --overwrite-conf config push controller compute

(3)mon服务重启

systemctl restart ceph-mon.target

(4)用cep -s 命令查看

11、

ceph安装

(1)创建ceph池(在ceph-admin节点操作)
// 创建volumes池,对应Cinder服务

ceph osd pool create volumes 128

// 创建vms池,对应Nova服务

ceph osd pool create vms 128

// 创建images池,对应Glance服务

ceph osd pool create images 128
ceph osd lspools

在这里插入图片描述

(2)在运行glance-api节点(controller节点)上确定安装了python-rbd

rpm -qa | grep python-rbd 

在这里插入图片描述

(3)运行cinder-volume (controller节点)和nova-compute(compute节点)节点上确保安装了ceph-common软件包

rpm -qa | grep ceph-common

ceph-common-10.2.11-0.el7.x86_64

(4)授权设置(ceph-admin节点上操作)
//创建client.cinder并设置权限

ceph auth get-or-create client.cinder mon 'allow r ' osd 'allow class-read  object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms,allow rx pool=images' 

//创建client.glance并设置权限

ceph auth get-or-create client.glance  mon 'allow r ' osd 'allow class-read  object_prefix rbd_children, allow rwx  pool=images' 

(5)在ceph-admin节点上操作,将上述创建的密码分发到glance-api和cinder-volume节点上
将上述为clinet.glance client.cinder创建密码发送到运行glance-api和cinder-volume的节点(controller节点)上去
ceph-admin节点上操作

ceph auth get-or-create client.glance | ssh controller  tee /etc/ceph/ceph.client.glance.keyring

controller节点操作

chown glance:glance /etc/ceph/ceph.client.glance.keyring 

ceph-admin节点上操作

ceph auth get-or-create client.cinder | ssh controller  tee /etc/ceph/ceph.client.cinder.keyring

controller节点操作

chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring

(6)在ceph-admin节点上操作,将cinder.client发送到compute节点
运行nova-compute节点(compute节点)的服务需要使用cinder.client 的秘钥,将其秘钥传动到compute 节点上去
在ceph-admin节点操作

ceph auth get-or-create client.cinder | ssh compute  tee /etc/ceph/ceph.client.cinder.keyring

Nov-compuet 节点需要将clinet.cinder秘钥存储到libvirt中 ,当基于ceph 后端的cinder 卷被分配到虚拟机的时候 需要访问秘钥需要做一下操作
ceph-admin 节点操作

ceph auth get-key  client.cinder|ssh compute tee client.cinder.key

(7)在compute节点操作如下
在运行nova-compute节点(compute)上将临时秘钥文件添加到libvirt 中 然后删除
如下步骤在compute节点上操作

uuidgen

在这里插入图片描述

cat > secret.xml<<EOF
<secret ephemeral='no' private='no'>
  <uuid>a8b6024c-5c7b-4107-b0ff-596db95794c8</uuid>
  <usage type='ceph'>
        <name>client.cinder secret</name>
  </usage>
</secret>
EOF
 virsh secret-define --file secret.xml

在这里插入图片描述

生成秘钥 a8b6024c-5c7b-4107-b0ff-596db95794c8

virsh secret-set-value --secret a8b6024c-5c7b-4107-b0ff-596db95794c8  --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml

12、

glance与ceph对接

在controller节点操作,修改glance-api.conf这个配置文件

vim /etc/glance/glance-api.conf 
stores = rbd    #改成rbd,原来是stores = file,http
rbd_store_pool = images     #这行的前面注释去掉
rbd_store_user = glance      #这行原来有注释,去掉注释,把原来的none,改成glance这个用户
rbd_store_ceph_conf = /etc/ceph/ceph.conf    #这行前面有注释,把注释去掉
rbd_store_chunk_size = 8                                #这行前面注释去掉
default_store = rbd                                              #原来是file,改成rbd

上面修改好之后,重启glance服务

systemctl restart openstack-glance-api.service
systemctl restart openstack-glance-registry.service

查看日志:/var/log/glance/api.log 没有报错就开始进行下面步骤

cat /var/log/glance/api.log

在openstack的dashboard上传镜像
上传前:
在这里插入图片描述

在admin节点查看是否有镜像

rbd ls images 

显示如下
在这里插入图片描述
13、

cinder与ceph对接

cinder:为云主机增加数据盘
openstack中创建云主机的时候可以创建一个卷,把这个卷挂到云主机上,如果云主机出现故障被删除,那么在找一个云主机,把这个卷挂到新的云主机上,数据还是会存在的,不丢失

  • ceph与nfs对接

(1)创建一个pv,vg(controller节点操作)

vgdisplay

显示如下
在这里插入图片描述

vgremove cinder-volumes 
pvcreate /dev/sdc
vgcreate cinder-volumes /dev/sdc

(2)在controller节点重启cinder-volume这个服务

systemctl list-unit-files | grep cinder 

显示如下
openstack-cinder-api.service enabled
openstack-cinder-backup.service disabled
openstack-cinder-scheduler.service enabled
openstack-cinder-volume.service enabled

systemctl restart openstack-cinder-volume
cd /var/log/cinder 
cat volume.log    

没有错说明可以创建cinder卷了

(3)在dashboard的界面创建卷

项目------>卷------>创建卷
卷名称:test01
卷类型:iscsi
大小:10G

  • cinder与ceph对接

在controller节点修改cinder配置文件

cd  /etc/cinder
vim  cinder.conf

修改内容如下

glance_api_version = 2    #之前是注释的,把注释打开,值由1变成2
enabled_backends = ceph,lvm
在文件最后一行加上如下内容
[ceph]
glance_api_version = 2  
volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_backend_name = ceph
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
rbd_user = cinder
rbd_secret_uuid = a8b6024c-5c7b-4107-b0ff-596db95794c8

上面修改好了重启服务

systemctl restart openstack-cinder-volume
source /root/keystone_admin
cinder type-create  ceph 

在这里插入图片描述

cinder type-key ceph set volume_backend_name=ceph
cinder create --volume-type ceph --name ceph-volume1 2

在dashboard界面可以看到创建了一个卷ceph-volume1,大小是2G
在这里插入图片描述
或者通过命令行查看

cinder list

在这里插入图片描述
14、

Nova和ceph对接

在计算节点操作(compute节点)
修改配置文件cat /etc/nova/nova.conf 在最后一行加上如下配置

vim /etc/nova/nova.conf
[libvirt]
images_type = rbd
images_rbd_pool = vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_user = cinder
rbd_secret_uuid = a8b6024c-5c7b-4107-b0ff-596db95794c8
disk_cachemodes="network=writeback"
inject_password=false
inject_key=false
inject_partition=-2
hw_disk_discard=unmap

上述修改好之后重新启动nova的配置文件

systemctl restart openstack-nova-compute

nova与ceph对接是需要使用raw 格式镜像,再上传之前到原qcow2格式镜像所在的目录下进行转化,转化步骤如下
在这里插入图片描述

qemu-img convert -f qcow2 -O raw [qcow2格式镜像名]   [raw格式镜像名]

或者直接在在dashboad界面创建一个镜像
镜像名称centos-raw
文件—>浏览cento7-raw
镜像格式:原始

测试

1、上传一个raw格式的镜像到云上
这里选择通过命令行上传(controller节点操作)

openstack image create "centos7-raw"   --file /home/image/centos7-raw  --disk-format raw --container-format bare  --public

结果如下:

2、有两种在Ceph上启动实例的方式:

《1》以镜像为基础创建可启动的卷,然后启动实例时选择boot-from-volume,选择此卷;

《2》直接使用镜像创建实例,这种用法是Havana版本后才支持的。

这里出现了几个问题:放到下面了

补充一些错误排查

1、rbd删除镜像时出错:2020-12-07 17:43:22.299535 7fad77fff700 0 cephx: verify_reply couldn’t decrypt with error: error decoding block for decryption
如图所示:
在这里插入图片描述
问题分析:是几个节点之间出现了比较大的时间偏差,重新做时间同步
解决方法:每个节点都执行ntpdate controller

ntpdate controller

2、创建好的云主机状态是active,但是点击控制台,出错如下:Booting from hard disk
Boot failed. not a bootable disk
在这里插入图片描述

错误分析:是镜像的问题
解决方法:重新下载正确的镜像进行上传,这里做实验我选的cirros,结果OK
在这里插入图片描述
3、当openstack与ceph完后对接之后,通过命令行上传镜像的速度之慢,令人咋舌!但是通过dashboard上传的镜像由于带宽不稳定总是容易发生错误。
大概有点懂了,查看了一下文件大小,发现原格式文件非常大:
在这里插入图片描述
在网上找到一种解决方案,仅供参考,参考链接是https://www.cnblogs.com/liawne/p/9322221.html
OpenStack使用Ceph存储,Ceph到底做了什么? - 知乎
openstack with ceph – PHPor 的Blog

具体步骤(实验有效!):
进入镜像目录文件夹

cd /home/image

(1)首先要更改一下glance-api文件,否则无法设置glance镜像的location

vim /etc/glance/glance-api.conf
show_multiple_locations = True  //将前面的注释符去掉,默认是false,改为true,直接显示地址可能会有安全问题,建议更改源码,进行地址的加密和解密

(2)上传一个空镜像

glance image-create 

(3)它会返回一个image 信息表,这样我们就得到了image_id:233b9a78-3226-49aa-a098-a4c9be39d3ed
在这里插入图片描述

(4)将真正的镜像信息import进来,将创建快照,和快照依赖

rbd -p images import centos7-raw --image=${image_id} --new-format --order 24
rbd -p images snap create  ${image_id}@snap
rbd -p images snap protect ${image_id}@snap

(5)设置glance镜像其它属性,包括disk_format, container_format属性,否则下一步不能执行

glance image-update --name="centos7-raw" --disk-format=raw --container-format=bare ${image_id}

在这里插入图片描述

(6)设置glance镜像location url:

通过以下命令先获取FS_ID

`ceph -s | grep cluster | awk '{print $2}'`

设置url

glance location-add --url rbd://${FS_ID]/images/${image_id}/snap ${image_id}

在这里插入图片描述
(7)验证
在这里插入图片描述

4、删除rbd中的该镜像信息,先解除快照,删快照,再删除镜像信息

rbd -p images snap unprotect 镜像ID@snap
rbd -p images snap rm 镜像ID@snap
rbd -p images rm 镜像ID 

快照、备份与恢复

   快照分为全量快照(可以理解为完全复制)和增量快照(首先会做一次全量快照,之后每次快照只备份差量部分,最后会形成一条类似于VMware中的快照链),openstack采用的快照模式就是全量快照,每次复制出一个完全镜像出来,存在glance组件中配置的镜像存储位置,这个快照(镜像)在dashboard上是可见的(对用户来说是非透明的)。但是由于全量复制速度非常慢,所以不建议采取这种快照方式。而ceph作为后端存储系统,不仅支持全量备份,还支持COW(写入时复制)的增量备份,比较实用。一下内容主要是调研使用ceph的rbd命令来对存储设备进行基于快照的增量备份与恢复。

(1)基于虚机的快照、备份与恢复

1、新建一台虚拟机,假设该虚拟机的UUID为cfb1b7f0-243c-4e26-912f-e9f19cf378f2_disk

2、为该虚拟机创建快照

rbd -p vms snap create cfb1b7f0-243c-4e26-912f-e9f19cf378f2_disk@snap-1

建立快照保护

rbd -p vms snap protect cfb1b7f0-243c-4e26-912f-e9f19cf378f2_disk@snap-1

3、基于该快照clone一个新的image,创建时指定新的image存储位置,我放到vms资源池了

rbd -p vms clone cfb1b7f0-243c-4e26-912f-e9f19cf378f2_disk@snap-1 vms/centos7-raw-clone1

在这里插入图片描述
这时候新image即上图的centos7-raw-clone1与cfb1b7f0-243c-4e26-912f-e9f19cf378f2_disk@snap-1为父子关系,当然,cfb1b7f0-243c-4e26-912f-e9f19cf378f2_disk@snap-1与cfb1b7f0-243c-4e26-912f-e9f19cf378f2_disk也为父子关系,通过如下指令可以查看:

rbd -p vms children cfb1b7f0-243c-4e26-912f-e9f19cf378f2_disk@snap-1

在这里插入图片描述

rbd -p vms info vms/centos7-raw-clone1 |grep parent

在这里插入图片描述
所以要删除要话,首先要确保没孩子节点,否则要先找到最下面的孩子节点,逐层删除!
如果是快照的话,先解除保护!

4、将clone的新image独立出来,执行flatten操作,此过程类似于全量快照,速度很慢

rbd -p vms flatten centos7-raw-clone1

在这里插入图片描述

此时再次查看其parrent-children关系,此时cfb1b7f0-243c-4e26-912f-e9f19cf378f2_disk@snap-1就不存在孩子节点了,centos7-raw-clone1完全独立了
在这里插入图片描述

NOTE:ceph也支持完全拷贝,语法如下:

rbd -p vms cp cfb1b7f0-243c-4e26-912f-e9f19cf378f2_disk@snap-1 centos7-raw-copy1

完全拷贝相当于复制,速度很慢,而且copy不会拷贝原来的镜像信息

5、Ceph支持将一个RBD image导出(export),导出整个镜像到本地系统的一个文件中:

rbd -p vms export cfb1b7f0-243c-4e26-912f-e9f19cf378f2_disk@snap-1 centos7-raw-1

同时,ceph还支持差量导出(export-diff),指定从某个快照点开始导出,如下语句导出从快照点snap-1到快照点snap-2的数据:

rbd -p vms export-diff  cfb1b7f0-243c-4e26-912f-e9f19cf378f2_disk@snap-1 --from-snap snap-1 --snap snap-2 centos7-raw-diff.raw

当然与之相反的操作为import以及import-diff。通过export/import支持image的全量备份,而export-diff/import-diff实现了image的差量备份。

6、恢复

(1)导入增量的快照

rbd import centos7-raw-1 backups/centos7-raw-1

这里注意,如果是基于快照链进行导入,要按顺序回溯导入,即snap3到snap2,snap2再到snap1

(2)先创建一个虚拟机,然后将它的根磁盘替换为我们恢复过数据的根磁盘,然后接着是替换硬盘,这样我们便从备份文件中恢复到一个新的虚拟机了

基于卷的快照、备份与恢复
(建议基于卷做备份)

步骤上基本和基于虚机的快照,恢复与备份的操作一致!,只需要注意两点:
1、快照与备份
(1)不用执行clone和flatten操作外
(2)ceph官方文档建议建议将备份恢复到空卷中(不指定volume),不建议恢复到已有的volume中。
所以在导入之前需新建一个空卷

rbd create --size 2048 ${pool-name}/${volume-name}

2、恢复
(1)如果该磁盘还存在,则直接用rbd snap rollback回滚就可以了,比如要回滚到time1这个时间点:

rbd snap rollback vms/<instance_id>_disk@time1 

(2)该磁盘已经被删掉了,要恢复该磁盘,做该备份导入,回滚
(3)将虚拟机的块设备替换成我们自己的块设备

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值