前言
虚拟机的迁移在实际环境中经常用到,例如将虚拟机从A主机迁移到B上,然后对A进行维护后,再将虚拟机从B迁回A。因此,我就在实验室的环境下,进行这个实验。这里对迁移方式做一个简单的记录。
虚拟机迁移的种类有:冷迁移和热迁移。冷迁移顾名思义,就是在虚拟机迁移的时候,需要将虚拟机暂停一段时间,而热迁移则不需要。
热迁移的方式有:1.基于共享存储的迁移;2.基于块的迁移;3.基于volumes存储的迁移;
这里首先记录一下使用基于共享存储和kvm-libvirt的虚拟机热迁移方式。
文中描述的迁移方式没有涉及安全方面的考虑;在迁移过程中,仅对虚拟机做简单的操作;有错误的地方还请指出和见谅。
一、环境准备
二、向Openstack添加块存储服务(Block Storage service)
因为虚拟机迁移需要在controller节点上提供cinder-*的服务,所以需要先安装Block Storage service。之前配置openstack时,没有添加这项服务,就在这里添加并记录。安装过该服务的,可跳过此步骤,第三步也如此。
(1)在controller节点下进行如下操作
1.使用如下命令,安装必须的程序包。
apt-get install cinder-api cinder-scheduler
2.编辑/etc/cinder/cinder.conf文件,在该文件中添加如下的信息,[database]段需要自己添加,123456是cinder数据库的密码,视自己的情况而定。
[database]
connection = mysql://cinder:123456@controller/cinder
3.使用如下的命令,登入mysql,建立一个cinder数据库,并设置权限。
mysql -uroot -p123456
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY '123456';
4.使用如下的命令在cinder数据库中建表。
sudo su -s /bin/sh -c "cinder-manage db sync" cinder
5.创建cinder用户
source admin-openrc.sh
keystone user-create --name=cinder --pass=123456 [email protected]
keystone user-role-add --user=cinder --tenant=service --role=admin
6.修改/etc/cinder/cinder.conf文件,添加如下的内容,其中123456是密码
[keystone_authtoken]
auth_uri = http://controller:5000
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = cinder
admin_password = 123456
在[default]部分,添加如下的内容
[DEFAULT]
rpc_backend = rabbit
rabbit_host = controller
rabbit_port = 5672
rabbit_userid = guest
rabbit_password = RABBIT_PASS
7.使用如下的命令,来注册块存储的服务,以使别的Openstack服务能够定位到它。执行完的效果如下图所示。
keystone service-create --name=cinder --type=volume --description="OpenStack Block Storage"
keystone endpoint-create \
--service-id=$(keystone service-list | awk '/ volume / {print $2}') \
--publicurl=http://controller:8776/v1/%\(tenant_id\)s \
--internalurl=http://controller: