基础-T版-03-存储管理¶
本地镜像存储空间扩容¶
如果我们的镜像存储空间不足,可以单独挂载一个磁盘进行使用
推荐大家一定要在写数据少的情况下操作,必须夜里凌晨进行
mkfs.xfs -f /dev/sdb
mount /dev/sdb /mnt/
\cp -arf /var/lib/glance/images/* /mnt/
umount -lf /mnt/
mount /dev/sdb /var/lib/glance/images/
chown glance.glance /var/lib/glance/images
chmod 750 /var/lib/glance/images
echo "/dev/sdb /var/lib/glance/images xfs defaults 0 0" >>/etc/fstab
本地虚拟机存储空间扩容¶
如果我们的虚拟机存储空间不足,可以单独挂载一个磁盘进行使用
推荐大家一定要在写数据少的情况下操作,必须夜里凌晨进行
mkfs.xfs -f /dev/sdc
mount /dev/sdc /mnt/
\cp -arf /var/lib/nova/instances/* /mnt/
umount -lf /mnt/
mount /dev/sdc /var/lib/nova/instances/
chown nova.nova /var/lib/nova/instances
echo "/dev/sdc /var/lib/nova/instances xfs defaults 0 0" >>/etc/fstab
source /root/demo-openrc
openstack network list
openstack server create --flavor m1.nano --image cirros \
--nic net-id=8547b120-8083-432f-a5f9-8ea7beeda429 --security-group default \
--key-name mykey selfservice-instance-disk01
如果无法创建虚拟机,可重启服务即可(一般情况不需要操作)
systemctl restart libvirtd.service openstack-nova-compute.service
本地lvm卷类型¶
计算节点上的操作
[root@compute1 ~]# vim /etc/cinder/cinder.conf
[lvm]
volume_backend_name=iSCSI-Storage
systemctl restart openstack-cinder-volume.service
控制节点上的操作
[root@linux-node1 ~]# cinder type-create lvm
[root@linux-node1 ~]# cinder type-key lvm set volume_backend_name=iSCSI-Storage
NFS做后端存储¶
安装nfs相关的软件包
yum -y install nfs-utils rpcbind
创建挂载的配置文件
[root@compute1 ~]# vim /etc/cinder/nfs_shares #设置nfs的挂载地址
192.168.1.215:/data/nfs
配置cinder支持nfs
[root@compute1 ~]# vim /etc/cinder/cinder.conf
[DEFAULT]
volume_driver = cinder.volume.drivers.nfs.NfsDriver # 配置驱动为NFS
nfs_shares_config = /etc/cinder/nfs_shares # NFS挂载的配置文件
nfs_mount_point_base = $state_path/mnt # 挂载的地址
volume_backend_name = NFS-Storage # 配置存储的名称
[DEFAULT]
enabled_backends = lvm,nfs
在最后一行输入
[nfs]
volume_driver = cinder.volume.drivers.nfs.NfsDriver
nfs_shares_config = /etc/cinder/nfs_shares
nfs_mount_point_base = $state_path/mnt
volume_backend_name = NFS-Storage
修改配置文件权限
chown root:cinder /etc/cinder/nfs_shares
ll /etc/cinder/nfs_shares
重新启动cinder服务
systemctl restart openstack-cinder-volume.service
查看是否挂载成功
[root@compute1 ~]# df -h|grep nfs
192.168.1.214:/data/nfs 500G 32M 500G 1% /var/lib/cinder/mnt/6bf45f3e602ae29000ba4f69c60fc252
查看nfs是否up
source /root/admin-openrc
cinder service-list
我们需要对其进行创建类型,比如LVM的关联到lvm,NFS的关联到NFS存储上。如下配置:
[root@linux-node1 ~]# cinder type-create nfs #创建nfs的类型
现在将两个类型关联起来
[root@linux-node1 ~]# cinder type-key nfs set volume_backend_name=NFS-Storage
#关联NFS类型
我们可以通过web界面进行创建nfs卷
当然我们可以通过命令进行创建nfs类型的卷
source /root/demo-openrc
cinder create 10 --name nfs02 --volume-type nfs
创建虚拟机
source /root/demo-openrc
openstack image list
openstack network list
source /root/demo-openrc
openstack server create --flavor 2C2G --image linux-node-moban \
--nic net-id=8547b120-8083-432f-a5f9-8ea7beeda429 --security-group default \
--key-name mykey centos79001
openstack floating ip create provider
openstack server add floating ip centos79001 192.168.57.111
挂载卷
openstack server add volume centos79001 nfs01
分离卷(需要将虚拟机关机)
openstack server remove volume centos79001 nfs01
登录虚拟机进行挂载nfs磁盘
mkfs.xfs -f /dev/vdb
mkdir -p /data
mount /dev/vdb /data/
echo "/dev/sdb /data xfs defaults 0 0" >>/etc/fstab ; cat /etc/fstab |grep data
echo "This is nfs data" > /data/file.txt
重置cinder卷的状态
source /root/admin-openrc
cinder reset-state 701c907d-2895-4804-b4a9-486be54bc05a --state available
source /root/demo-openrc
cinder list
我们也可以对卷进行扩容(需要将虚拟机关机)
source /root/demo-openrc
cinder list
cinder extend 6b1ef075-c2b0-4ff4-9b22-8904b0c1045d 30
echo 1 > /sys/block/vdb/device/rescan
yum -y install cloud-init cloud-utils-growpart
xfs_growfs /dev/vdb
yum -y remove cloud-init cloud-utils-growpart
我们也可以对卷进行缩容(需要将虚拟机关机) ?
source /root/demo-openrc
cinder list
openstack server remove volume centos79001 nfs01
cinder extend 701c907d-2895-4804-b4a9-486be54bc05a 10
openstack server remove volume centos79001 nfs01
cinder list
检查NFS的文件夹是否有虚拟硬盘文件
[root@linux-bkce-node214 nfs]# cd /data/nfs/
[root@linux-bkce-node214 nfs]# yum -y install qemu-img
[root@linux-bkce-node214 nfs]# qemu-img info volume-b0ec13e8-f300-4824-9a70-79abc786d693
image: volume-b0ec13e8-f300-4824-9a70-79abc786d693
file format: raw
virtual size: 15G (16106127360 bytes)
disk size: 0
将raw格式虚拟磁盘转换为qcow2格式
cd /data/nfs
qemu-img convert -f raw -O qcow2 volume-b0ec13e8-f300-4824-9a70-79abc786d693 volume-b0ec13e8-f300-4824-9a70-79abc786d693.qcow2
chown root.root volume-34b9228c-3d20-4fad-a845-4c6a15a949e9
qemu-img info volume-b0ec13e8-f300-4824-9a70-79abc786d693.qcow2
Ceph对接openstack¶
OpenStack Train(十二):Openstack 与 Ceph 集群的集成
https://blog.51cto.com/flyfish225/5277996
我们还将展示如何将三个重要的OpenStack用例:Cinder(块存储)、Glance(镜像)和Nova(虚拟机虚拟磁盘)与Ceph集成。
Ceph提供统一的横向扩展存储,使用带有自我修复和智能预测故障功能的商用x86硬件。它已经成为软件定义存储的事实上的标准。因为Ceph是开源的,它使许多供应商能够提供基于Ceph的软件定义存储系统。 Ceph不仅限于Red Hat、Suse、Mirantis、Ubuntu等公司。 SanDisk、富士通、惠普、戴尔、三星等公司现在也提供集成解决方案。甚至还有大规模的社区建造的环境(如CERN),为10000个虚拟机提供存储服务。
Ceph绝不局限于OpenStack,但是这是Ceph开始获得牵引力的地方。看看最新的OpenStack用户调查,Ceph是OpenStack存储的显著领导者。2016年4月OpenStack用户调查报告的第42页显示,Ceph占OpenStack存储的57%,下一个是LVM(本地存储)占28%,NetApp占9%。如果我们不看LVM,Ceph领先其他存储公司48%,令人难以置信。这是为什么?
有好几个原因,我认为以下是最重要的三个:
Ceph是一个横向扩展的统一存储平台。OpenStack最需要的存储能力的两个方面:能够与OpenStack本身一起扩展,并且扩展时不需要考虑是块(Cinder)、文件(Manila)还是对象(Swift)。传统存储供应商需要提供两个或三个不同的存储系统来实现这一点。它们不同样扩展,并且在大多数情况下仅在永无止境的迁移周期中纵向扩展。它们的管理功能从来没有真正实现跨不同的存储用例集成。
Ceph具有成本效益。 Ceph利用Linux作为操作系统,而不是专有的系统。你不仅可以选择找谁购买Ceph,还可以选择从哪里购买硬件。可以是同一供应商也可以是不同的。你可以购买硬件,甚至从单一供应商购买Ceph +硬件的集成解决方案。已经有针对Ceph的超融合方案出现(在计算节点上运行Ceph服务)。
和OpenStack一样,Ceph是开源项目。这允许更紧密的集成和跨项目开发。专有供应商总是在努力追赶,因为他们有秘密要保护,他们的影响力通常限于开源社区。
这里是一个架构图,显示了所有需要存储的不同OpenStack组件。它显示了这些组件如何与Ceph集成,以及Ceph如何提供一个统一的存储系统,扩展以满足所有这些用例。
如果你对与Ceph和OpenStack相关的更多主题感兴趣,推荐这个网址:http://ceph.com/category/ceph-and-openstack/。
说够了为什么Ceph和OpenStack如此伟大,该说说如何连接它们了。如果你没有Ceph环境,可以按照这篇文章快速设置。
Ceph与Glance集成¶
Glance是OpenStack中的映像服务。默认情况下,映像存储在本地控制器,然后在被请求时复制到计算主机。计算主机缓存镜像,但每次更新镜像时,都需要再次复制。
Ceph为Glance提供了后端,允许镜像存储在Ceph中,而不是本地存储在控制器和计算节点上。这大大减少了抓取镜像的网络流量,提高了性能,因为Ceph可以克隆镜像而不是复制镜像。此外,它使得在OpenStack部署或诸如多站点OpenStack之类的概念的迁移变得更简单。
安装Glance使用的Ceph客户端。
[root@192-168-56-11 ~]# yum -y install ceph python-rbd
在Ceph管理节点。为Glance镜像创建Ceph RBD池。
[root@192-168-56-15 ~]# ceph osd pool create images 128
pool 'images' created
[root@192-168-56-15 ~]# ceph osd pool application enable images rbd
创建将允许Glance访问池的密钥环。
[root@192-168-56-15 ~]# ceph auth get-or-create client.images mon 'allow r' osd 'allow class-read object_prefix rdb_children, allow rwx pool=images' -o /etc/ceph/ceph.client.images.keyring
提示:上面的命令会生成如下文件
[root@192-168-56-15 ~]# ll /etc/ceph/ceph.client.images.keyring
-rw-r--r-- 1 root root 64 Jun 21 15:15 /etc/ceph/ceph.client.images.keyring
将密钥环和ceph的配置文件复制到OpenStack控制节点上的/etc/ceph目录下
[root@192-168-56-15 ~]# cd /etc/ceph/
[root@192-168-56-15 ceph]# scp ceph.conf ceph.client.images.keyring 192.168.56.11:/etc/ceph/
在控制节点上设置ceph文件相关的权限,让 Glance可以访问Ceph密钥环
[root@192-168-56-11 ~]#
chgrp glance /etc/ceph/ceph.client.images.keyring
chmod 0640 /etc/ceph/ceph.client.images.keyring
在控制节点上将密钥环文件添加到Ceph配置
[root@192-168-56-11 ~]# vim /etc/ceph/ceph.conf
[client.images]
keyring = /etc/ceph/ceph.client.images.keyring
在控制节点上创建原始Glance配置的备份
[root@192-168-56-11 ~]# cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.orig
在控制节点上修改glance的相关配置
[root@192-168-56-11 ~]# vim /etc/glance/glance-api.conf
[glance_store]
#stores = file,http
#default_store = file
#filesystem_store_datadir = /var/lib/glance/images/
stores = glance.store.rbd.Store
default_store = rbd
rbd_store_pool = images
rbd_store_user = images
rbd_store_ceph_conf = /etc/ceph/ceph.conf
提示:这里一定要主要修改标签下的参数,不要直接放在标签下面
在控制节点上重新启动Glance服务
[root@192-168-56-11 ~]# systemctl restart openstack-glance-api
将测试的镜像文件上传到控制节点的/root目录下
[root@192-168-56-11 ~]# ll cirros-0.3.4-x86_64-disk.img
-rw-r--r-- 1 root root 13287936 Jun 20 10:57 cirros-0.3.4-x86_64-disk.img
现在我们来上传镜像到ceph存储上
source /root/admin-openrc
openstack image create "ceph-cirros" --file cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --public
cd /var/lib/glance/images
glance image-create --name "ceph-centos79200920220510" \
--file /var/lib/glance/images/centos79200920220510.qcow2 \
--disk-format qcow2 --container-format bare \
--property hw_qemu_guest_agent=yes \
--property os_type="linux" \
--visibility public \
--progress
glance image-list|grep ceph
我们到ceph存储的mon的admin节点查看是否将镜像上传成功
[root@192-168-56-15 ~]# rbd ls images
8484f103-66ff-4c5a-92d1-5fcf2d151193
这里就表示上传成功啦
我们可以在界面上看到上传成功
Ceph与Cinder集成¶
准备环境:首先我们需要配置好cinder的控制节点与计算节点,在这个基础之上在配置ceph与cinder的集成
Cinder是OpenStack中的块存储服务。 Cinder提供了关于块存储的抽象,并允许供应商通过提供驱动程序进行集成。在Ceph中,每个存储池可以映射到不同的Cinder后端。这允许创建诸如金、银或铜的存储服务。你可以决定例如金应该是复制三次的快速SSD磁盘,银应该是复制两次,铜应该是使用较慢的擦除编码的磁盘。
安装Glance使用的Ceph客户端。
[root@192-168-56-11 ~]# yum -y install ceph python-rbd
为Cinder卷创建一个Ceph池
[root@192-168-56-15 ~]# ceph osd pool create volumes 128
pool 'volumes' created
[root@192-168-56-15 ~]# ceph osd pool application enable volumes rbd
创建一个密钥环以授予Cinder访问权限
[root@192-168-56-15 ~]# ceph auth get-or-create client.volumes mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rx pool=images' -o /etc/ceph/ceph.client.volumes.keyring
将密钥与配置文件环复制到OpenStack计算节点
[root@192-168-56-15 ~]# cd /etc/ceph/
[root@192-168-56-15 ceph]# scp ceph.client.volumes.keyring ceph.conf 192.168.56.12:/etc/ceph/
创建一个只包含OpenStack计算节点上的身份验证密钥的文件
[root@192-168-56-15 ~]# ceph auth get-key client.volumes |ssh 192.168.56.12 tee /etc/ceph/client.volumes.key
在计算节点上设置密钥环文件的权限,以便Cinder可以访问
[root@192-168-56-12 ~]#
chgrp cinder /etc/ceph/ceph.client.volumes.keyring
chmod 0640 /etc/ceph/ceph.client.volumes.keyring
在计算节点上将密钥环添加到Ceph配置文件中
[root@192-168-56-12 ~]# vim /etc/ceph/ceph.conf
[client.volumes]
keyring = /etc/ceph/ceph.client.volumes.keyring
使KVM Hypervisor访问Ceph
[root@192-168-56-12 ~]# uuidgen |tee /etc/ceph/cinder.uuid.txt
82934e3a-65a1-4f89-8b4c-a413ecc039c3
在virsh中创建一个密钥,因此KVM可以访问Ceph池的Cinder卷
[root@192-168-56-12 ~]# vim /etc/ceph/cinder.xml
<secret ephemeral='no' private='no'>
<uuid>82934e3a-65a1-4f89-8b4c-a413ecc039c3</uuid>
<usage type='ceph'>
<name>client.volumes secret</name>
</usage>
</secret>
[root@192-168-56-12 ~]# virsh secret-define --file /etc/ceph/cinder.xml
Secret 82934e3a-65a1-4f89-8b4c-a413ecc039c3 created
[root@192-168-56-12 ~]# virsh secret-set-value --secret 82934e3a-65a1-4f89-8b4c-a413ecc039c3 --base64 $(cat /etc/ceph/client.volumes.key)
Secret value set
在计算节点上为Cinder添加一个Ceph后端
[root@192-168-56-12 ~]# vim /etc/cinder/cinder.conf
[DEFAULT]
enabled_backends = rbd
[rbd]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
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
glance_api_version = 2
rbd_user = volumes
rbd_secret_uuid = 82934e3a-65a1-4f89-8b4c-a413ecc039c3
volume_backend_name = CEPH-Storage
在计算节点上重新启动Cinder服务
[root@192-168-56-12 ~]# systemctl restart openstack-cinder-volume.service target.service
在控制节点上查看cinder的节点信息
[root@192-168-56-11 ~]# source /root/admin-openrc
[root@192-168-56-11 ~]# cinder service-list
+------------------+-------------------+------+---------+-------+----------------------------+-----------------+
| Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+------------------+-------------------+------+---------+-------+----------------------------+-----------------+
| cinder-scheduler | 192-168-56-11 | nova | enabled | up | 2017-06-21T07:45:46.000000 | - |
| cinder-volume | 192-168-56-12@lvm | nova | enabled | down | 2017-06-21T07:44:33.000000 | - |
| cinder-volume | 192-168-56-12@rbd | nova | enabled | up | 2017-06-21T07:45:51.000000 | - |
+------------------+-------------------+------+---------+-------+----------------------------+-----------------+
设置ceph卷类型
cinder type-create ceph
cinder type-key ceph set volume_backend_name=CEPH-Storage
在控制节点上创建Cinder卷
[root@192-168-56-11 ~]# source /root/demo-openrc
[root@192-168-56-11 ~]# cinder create 10 --name ceph01 --volume-type ceph
[root@192-168-56-11 ~]# cinder list
+--------------------------------------+-----------+--------+------+-------------+----------+-------------+
| ID | Status | Name | Size | Volume Type | Bootable | Attached to |
+--------------------------------------+-----------+--------+------+-------------+-
| a5271730-e2ef-4fad-9a5e-145d9e38ff9b | available | test01 | 1 | - | false | |
+--------------------------------------+-----------+--------+------+-------------+-
在Ceph中列出Cinder卷
[root@192-168-56-15 ~]# rbd ls volumes
volume-a5271730-e2ef-4fad-9a5e-145d9e38ff9b
[root@192-168-56-15 ~]# rbd info volumes/volume-a5271730-e2ef-4fad-9a5e-145d9e38ff9b
rbd image 'volume-a5271730-e2ef-4fad-9a5e-145d9e38ff9b':
size 1024 MB in 256 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.107b7d64e86d
format: 2
features: layering
flags:
Ceph与Nova集成¶
Nova是OpenStack中的计算服务。 Nova存储与默认的运行虚拟机相关联的虚拟磁盘镜像,在/ var / lib / nova / instances下的Hypervisor上。在虚拟磁盘映像的计算节点上使用本地存储有一些缺点:
镜像存储在根文件系统下。大镜像可能导致文件系统被填满,从而导致计算节点崩溃。
计算节点上的磁盘崩溃可能导致虚拟磁盘丢失,因此无法进行虚拟机恢复。
Ceph是可以直接与Nova集成的存储后端之一。在本节中,我们将看到如何配置
安装Glance使用的Ceph客户端。
[root@192-168-56-11 ~]# yum -y install ceph python-rbd
为Nova卷创建一个Ceph池
[root@192-168-56-15 ~]# ceph osd pool create vms 128
pool 'vms' created
[root@192-168-56-15 ~]# ceph osd pool application enable vms rbd
为Nova创建验证密钥环
[root@192-168-56-15 ~]# ceph auth get-or-create client.nova mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images' -o /etc/ceph/ceph.client.nova.keyring
将密钥与配置文件环复制到OpenStack计算节点
[root@192-168-56-15 ~]# cd /etc/ceph/
[root@192-168-56-15 ceph]# scp ceph.client.nova.keyring 192.168.56.12:/etc/ceph/
在OpenStack计算节点创建密钥文件
[root@192-168-56-15 ceph]# ceph auth get-key client.nova |ssh 192.168.56.12 tee /etc/ceph/client.nova.key
在计算节点上设置密钥环文件的权限,以便Nova服务可以访问
[root@192-168-56-12 ~]#
chgrp nova /etc/ceph/ceph.client.nova.keyring
chmod 0640 /etc/ceph/ceph.client.nova.keyring
在计算节点上更新Ceph配置
[root@192-168-56-12 ~]# vim /etc/ceph/ceph.conf
[client.nova]
keyring = /etc/ceph/ceph.client.nova.keyring
在节点节点上运行,让KVM可以访问Ceph
[root@192-168-56-12 ~]# uuidgen |tee /etc/ceph/nova.uuid.txt
7e37262c-a2cd-4a06-82a2-9e4681616c0e
在virsh中创建一个密钥,这样KVM可以访问Cinder卷的Ceph池
[root@192-168-56-12 ~]# vim /etc/ceph/nova.xml
<secret ephemeral='no' private='no'>
<uuid>7e37262c-a2cd-4a06-82a2-9e4681616c0e</uuid>
<usage type='ceph'>
<name>client.nova secret</name>
</usage>
</secret>
[root@192-168-56-12 ~]# virsh secret-define --file /etc/ceph/nova.xml
Secret 7e37262c-a2cd-4a06-82a2-9e4681616c0e created
[root@192-168-56-12 ~]# virsh secret-set-value --secret 7e37262c-a2cd-4a06-82a2-9e4681616c0e --base64 $(cat /etc/ceph/client.nova.key)
Secret value set
在计算节点上备份Nova配置
[root@192-168-56-12 ~]# cp /etc/nova/nova.conf /etc/nova/nova.conf.orig
在计算节点上更新Nova配置以使用Ceph后端
[root@192-168-56-12 ~]# vim /etc/nova/nova.conf
[DEFAULT]
force_raw_images = True
disk_cachemodes = writeback
[libvirt]
images_type = rbd
images_rbd_pool = vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_user = nova
rbd_secret_uuid = 7e37262c-a2cd-4a06-82a2-9e4681616c0e
在计算节点上重新启动Nova服务
[root@192-168-56-12 ~]# systemctl restart openstack-nova-compute
然后在控制节点上创建虚拟机测试
source /root/demo-openrc
openstack image list
openstack network list
source /root/demo-openrc
openstack server create --flavor 2C2G --image ceph-centos79200920220510 \
--nic net-id=667c3eb8-3162-4794-966d-0b9d591df566 --security-group default \
--key-name mykey ceph-centos79001
openstack console url show ceph-centos79001
在Ceph虚拟机池中列出镜像。我们现在应该看到镜像存储在Ceph中
[root@192-168-56-15 ~]# rbd -p vms ls
29ec137a-f7eb-47fd-bab6-7667752c9c17_disk
Cephalopod Backup备份¶
Cinder Backup备份
http://tanglei528.blog.163.com/blog/static/43353399201512695030227/
Cinder磁盘备份原理与实践
http://zhuanlan.51cto.com/art/201704/537194.htm
在ceph集群的某个节点,创建backups池
[root@192_168_56_15 ceph]# ceph osd pool create backups 64
[root@192-168-56-15 ~]# ceph osd pool application enable backups rbd
为backupb创建验证密钥环
[root@192_168_56_15 ceph]# ceph auth get-or-create client.cinder-backup mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=backups' -o /etc/ceph/ceph.client.cinder-backup.keyring
将密钥环发送到cinder-backup 服务的主机
[root@192_168_56_15 ceph]# scp ceph.client.cinder-backup.keyring 192.168.56.12:/etc/ceph/
更改秘钥的所有权
[root@192-168-56-12]#
chgrp cinder /etc/ceph/ceph.client.cinder-backup.keyring
chmod 0640 /etc/ceph/ceph.client.cinder-backup.keyring
配置/etc/cinder/cinder.conf
[root@192-168-56-12 ceph]# vim /etc/cinder/cinder.conf
[DEFAULT]
backup_driver = cinder.backup.drivers.ceph.CephBackupDriver
backup_ceph_conf = /etc/ceph/ceph.conf
backup_ceph_user = cinder-backup
backup_ceph_chunk_size = 134217728
backup_ceph_pool = backups
backup_ceph_stripe_unit = 0
backup_ceph_stripe_count = 0
restore_discard_excess_bytes = true
在计算节点上更新Ceph配置
[root@192-168-56-12 ~]# vim /etc/ceph/ceph.conf
[client.cinder-backup]
keyring = /etc/ceph/ceph.client.cinder-backup.keyring
启动openstack-cinder-backup服务
[root@192-168-56-12 ceph]# systemctl start openstack-cinder-backup
[root@192-168-56-12 ceph]# systemctl enable openstack-cinder-backup
> /var/log/cinder/backup.log
systemctl restart openstack-cinder-backup
systemctl restart openstack-cinder-volume.service target.service
调整dashboard
[root@192-168-56-11 ~]# vim /etc/openstack-dashboard/local_settings
OPENSTACK_CINDER_FEATURES = {
'enable_backup': True,
}
重启dashboard服务
systemctl restart httpd.service memcached.service
查看cinderbackup功能是否开启
如果想进行卷备份,备份得先给卷做快照
具体操作
创建卷
cinder create 20 --name ceph02 --volume-type ceph
创建卷快照
openstack volume snapshot create --volume ceph02 ceph02-kuaizhao01
查看卷快照
openstack volume snapshot list --volume ceph02
备份卷
openstack volume backup create --snapshot ceph02-kuaizhao01 ceph02
恢复卷
openstack volume backup list
openstack volume list
openstack volume backup restore <backup> <volume>
openstack volume backup restore cb0eb099-ffb3-4939-9487-014e0e3990a1 f1e3187f-f633-4dc9-a78d-0372e4044de2
删除卷备份
openstack volume backup list
openstack volume backup delete cb0eb099-ffb3-4939-9487-014e0e3990a1
创建卷
cinder create --display-name volume1 1
备份卷
cinder backup-create --container volumes_backup --display-name backuptoswift volume1
恢复卷
cinder backup-restore --volume-id cb0fe233-f9b6-4303-8a61-c31c863ef7ce volume1
删除卷
cinder backup-delete 1b9237a4-b384-4c8e-ad05-2e2dfd0c698c
导出ceph备份卷数据
rbd -p backups ls
rbd -p volumes ls
rbd export backups/volume-7bc3ad76-fe98-4a5b-bb35-49bee26226ca.backup.744b4d68-669e-41da-af7b-a11f80340e49 volumes-744b4d68-669e-41da-af7b-a11f80340e49.img
yum -y install qemu-img
qemu-img info volumes-744b4d68-669e-41da-af7b-a11f80340e49.img
qemu-img convert -f raw -O qcow2 volumes-744b4d68-669e-41da-af7b-a11f80340e49.img volumes-744b4d68-669e-41da-af7b-a11f80340e49.qcow2
yum install libguestfs libguestfs-tools -y
systemctl start libvirtd
guestmount -a /tmp/volumes-744b4d68-669e-41da-af7b-a11f80340e49.qcow2 -m /dev/vdb /mnt
[root@linux-bkce-node15 ~]# qemu-img info /tmp/volumes-744b4d68-669e-41da-af7b-a11f80340e49.qcow2
image: /tmp/volumes-744b4d68-669e-41da-af7b-a11f80340e49.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
如何挂载qcow2镜像文件
https://www.cnbugs.com/post-3640.html
清理异常卷存储¶
source /root/admin-openrc
cinder reset-state 701c907d-2895-4804-b4a9-486be54bc05a --state available
source /root/demo-openrc
cinder list
配置虚拟机热迁移¶
配置免密
yum -y install sshpass
cat >/root/.ssh/config<<EOF
Host *
Port 22
User root
StrictHostKeyChecking no
UserKnownHostsFile=/dev/nul
EOF
cd /root/
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
sshpass -pP@sswd ssh-copy-id compute1
sshpass -pP@sswd ssh-copy-id compute3
sshpass -pP@sswd ssh-copy-id compute4
ssh compute1 "hostname -I"
ssh compute3 "hostname -I"
ssh compute4 "hostname -I"
sshpass -pP@sswd ssh-copy-id controller
在 Nova 计算节点(compute01、compute02)上,修改配置文件/etc/nova/nova.conf
vim /etc/nova/nova.conf
[DEFAULT]
# 支持热迁移
live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"
compute_driver = libvirt.LibvirtDriver
[vnc]
server_listen = 192.168.1.219
server_proxyclient_address = 192.168.1.219
在 Nova 计算节点(controller/computer)上,重启 nova-compute 服务。
计算节点的相关服务
systemctl restart openstack-nova-compute.service
控制节点的相关服务
systemctl start \
openstack-nova-api.service \
openstack-nova-scheduler.service \
openstack-nova-conductor.service \
openstack-nova-novncproxy.service
systemctl restart openstack-nova-conductor.service
一定要检查控制节点nova 的日志是否报错
/var/log/nova
source /root/demo-openrc
openstack image list
openstack network list
openstack server create --flavor m1.nano --image ceph-cirros \
--nic net-id=667c3eb8-3162-4794-966d-0b9d591df566 --security-group default \
--key-name mykey selfservice-instance02
nova live-migration [实例id] [计算节点]
配置主机名称解析,很重要
[root@compute1 ~]# cat /etc/hosts
192.168.1.216 controller
192.168.1.217 compute1
192.168.1.223 compute2
192.168.1.247 compute3
cp /etc/libvirt/libvirtd.conf /etc/libvirt/libvirtd.conf_bak
编辑 /etc/libvirt/libvirtd.conf,
去掉 listen_tls = 0、listen_tcp = 1、tcp_port = "16509" 三行前面的注释
修改 auth_tcp = "none"
编辑 /etc/sysconfig/libvirtd,去掉 LIBVIRTD_ARGS="--listen" 前面的注释
执行服务重启命令:
systemctl daemon-reload
systemctl restart libvirtd
systemctl status libvirtd
ps -ef|grep libvirtd
ss -ltnp|grep 16509
virsh -c qemu+tcp://192.168.1.219/system
virsh -c qemu+tcp://192.168.1.220/system
virsh -c qemu+tcp://192.168.1.224/system
virsh -c qemu+tcp://compute1/system
virsh -c qemu+tcp://compute3/system
virsh -c qemu+tcp://compute4/system
热迁移单个虚拟机
source /root/admin-openrc
openstack server list --long --all
nova live-migration eb77e2dc-1516-424a-81fe-e5a1c78cc6e2 compute1
openstack server list --long --all
热迁移批量虚拟机
source /root/admin-openrc
openstack server list --long --all
nova host-evacuate-live --target-host compute3 compute1
openstack server list --long --all
热迁移报错
2022-05-20 10:46:55.999 125836 INFO nova.virt.libvirt.driver
调整虚拟机实例类型¶
遇到的报错
[root@node01 nova]# tail nova-compute.log
2020-08-07 15:18:25.128 61415 ERROR oslo_messaging.rpc.server self.gen.throw(type, value, traceback)
2020-08-07 15:18:25.128 61415 ERROR oslo_messaging.rpc.server File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 8987, in _error_out_instance_on_exception
2020-08-07 15:18:25.128 61415 ERROR oslo_messaging.rpc.server raise error.inner_exception
2020-08-07 15:18:25.128 61415 ERROR oslo_messaging.rpc.server ResizeError: Resize error: not able to execute ssh command: Unexpected error while running command.
2020-08-07 15:18:25.128 61415 ERROR oslo_messaging.rpc.server Command: ssh -o BatchMode=yes 10.199.103.16 mkdir -p /var/lib/nova/instances/f3cd597a-3a01-4d2f-927d-8be35a955413
2020-08-07 15:18:25.128 61415 ERROR oslo_messaging.rpc.server Exit code: 255
2020-08-07 15:18:25.128 61415 ERROR oslo_messaging.rpc.server Stdout: u''
2020-08-07 15:18:25.128 61415 ERROR oslo_messaging.rpc.server Stderr: u'Host key verification failed.\r\n'
2020-08-07 15:18:25.128 61415 ERROR oslo_messaging.rpc.server
2020-08-07 15:18:36.624 61415 INFO nova.compute.manager [req-efc389fd-77f9-487f-a877-b90c82474787 d608482bcb1b4522949e8e3d429d0b00 4abcf64d621e4cf89aa267887647bc8c - default default] [instance: f3cd597a-3a01-4d2f-927d-8be35a955413] Get console output
解决方法
调整大小,需要openstack的nova节点和ssh通信,在所有控制节点和计算节点配置免密钥通信
yum -y install sshpass
usermod -s /bin/bash nova
echo "nova"|passwd --stdin nova
su - nova
cat >~/.ssh/config<<EOF
Host *
Port 22
User root
StrictHostKeyChecking no
UserKnownHostsFile=/dev/nul
EOF
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
sshpass -pP@sswd ssh-copy-id root@compute1
sshpass -pP@sswd ssh-copy-id root@compute3
sshpass -pP@sswd ssh-copy-id root@compute4
ssh root@compute1 "whoami"
ssh root@compute3 "whoami"
ssh root@compute4 "whoami"
openstack 调整实例大小报错 ERROR oslo_messaging.rpc.server ResizeError: Resize error: not able to execute ssh command: Unexpected error while running
http://www.manongjc.com/detail/18-tsbwulhetqylldh.html