冷迁移有两种方式:
一种方式只能在同一个openstack集群中做,另一种可以再相同或者不同的集群中做
在做冷迁移之前记得把要迁移的实例关机
把主机名为YUN-19上的实例迁移到YUN-20上,两个节点在同一个集群中,其中YUN-19是控制节点
(修改数据库必须要在控制节点上做)
# mysql
mysql> use nova;
mysql> update instances set host='YUN-20' where hostname='test1';
在YUN-19上,把实例的文件拷贝到目的端
切换到/var/lib/nova/inctances目录
# scp -r a8814340-98d5-4ed3-b99b-32ee38cfb78f/ root@192.168.0.20:/var/lib/nova/instances/
在YUN-20上可以看到拷贝过来的文件
[root@YUN-20 instances]# ll
total 20
drwxr-xr-x. 2 nova nova 4096 Apr 28 20:55 1c11a4b1-5df8-48f8-be5d-6e1c5efb7f99
drwxr-xr-x. 2 root root 4096 Apr 28 21:41 a8814340-98d5-4ed3-b99b-32ee38cfb78f
drwxr-xr-x. 2 nova nova 4096 Apr 28 20:55 _base
-rw-r--r--. 1 nova nova 29 Apr 28 21:28 compute_nodes
drwxr-xr-x. 2 nova nova 4096 Apr 23 23:49 locks
切换到迁移过来实例的目录下
[root@YUN-20 a8814340-98d5-4ed3-b99b-32ee38cfb78f]# virsh define libvirt.xml
Domain instance-00000001 defined from libvirt.xml
[root@YUN-20 a8814340-98d5-4ed3-b99b-32ee38cfb78f]# virsh start instance-00000001
error: Failed to start domain instance-00000001
error: Cannot get interface MTU on 'qbr95221104-b9': No such device
通过上边的出错信息可以看到实例所绑定的网桥信息
新建网桥并查看
在新建网桥前,首先应该把YUN-19上的网桥删除
再删除之前首先关闭网桥
可以输入ifconfig命令查看到网桥信息
关闭网桥
[root@YUN-19 ~]# ifconfig qbr95221104-b9 down
删除网桥
[root@YUN-19 ~(keystone_admin)]# brctl delbr qbr95221104-b9
[root@YUN-20 a8814340-98d5-4ed3-b99b-32ee38cfb78f]# brctl addbr qbr95221104-b9
[root@YUN-20 a8814340-98d5-4ed3-b99b-32ee38cfb78f]# brctl show
bridge name bridge id STP enabled interfaces
qbr482b0524-26 8000.ea9b0ced7d50 no qvb482b0524-26
tap482b0524-26
qbr95221104-b9 8000.000000000000 no
show 8000.000000000000 no
virbr0 8000.525400d2ae89 yes virbr0-nic
[root@YUN-20 a8814340-98d5-4ed3-b99b-32ee38cfb78f]# virsh define libvirt.xml
Domain instance-00000001 defined from libvirt.xml
上边命令执行成功了
开启实例
[root@YUN-20 a8814340-98d5-4ed3-b99b-32ee38cfb78f]# virsh start instance-00000001
Domain instance-00000001 started
昨晚上面开启实例的操作后,在dash中并没有发现该实例启动,在dash中再点击“开启云主机”。
把YUN-11集群中的实例迁移到YUN-19所在的集群
要迁移的实例选择linux的系统,在系统中创建目录、编辑文件,迁移后查看创建的目录和修改的文档是否正常
迁移之前关闭要迁移的实例
关闭之后把实例所在的目录做下备份,目录是2dccde39-31a4-48d5-8f62-0f963ffec481_copy
YUN-17是YUN-11所在集群上的一个计算节点
进入拷贝后的目录
[root@YUN-17 2dccde39-31a4-48d5-8f62-0f963ffec481_copy]# ll
total 6896
-rw-r-----. 1 root root 1 Apr 30 10:18 console.log
-rw-r--r--. 1 root root 7536640 Apr 30 10:18 disk
-rw-r--r--. 1 root root 79 Apr 30 10:18 disk.info
-rw-r--r--. 1 root root 1635 Apr 30 10:18 libvirt.xml
[root@YUN-17 2dccde39-31a4-48d5-8f62-0f963ffec481_copy]# qemu-img convert -O raw disk disk3
[root@YUN-17 2dccde39-31a4-48d5-8f62-0f963ffec481_copy]# ll
total 807664
-rw-r-----. 1 root root 1 Apr 30 10:18 console.log
-rw-r--r--. 1 root root 7536640 Apr 30 10:18 disk
-rw-r--r--. 1 root root 21474836480 Apr 30 10:25 disk3
-rw-r--r--. 1 root root 79 Apr 30 10:18 disk.info
-rw-r--r--. 1 root root 1635 Apr 30 10:18 libvirt.xml
[root@YUN-17 2dccde39-31a4-48d5-8f62-0f963ffec481_copy]# qemu-img info disk
image: disk
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 6.7M
cluster_size: 65536
backing file: /var/lib/nova/instances/_base/0872411ded8842738a2265ea3e670ff330ab475f
[root@YUN-17 2dccde39-31a4-48d5-8f62-0f963ffec481_copy]# qemu-img info disk3
image: disk3
file format: raw
virtual size: 20G (21474836480 bytes)
disk size: 782M
转换格式的命令说明:
本来应该是这样的
qemu-img convert -f raw -O qcow2 test.raw test.qcow2
-f后面跟的是转变之前的格式,这个系统自己会识别,所以不添加也可以
-O后面是要转变的格式,注意o是大写
从上面可以看出,修改镜像格式之后变得很大
raw格式
最简单,就是一个直接给虚拟机进行读写的文件。raw不支持动态增长空间,必须一开始就指定空间大小。所以相当的耗费磁盘空间。但是对于支持稀疏文件的文件系统(如ext4)而言,这方面并不突出。
cow格式
cow格式和raw一样简单,也是创建时分配所有空间,但cow有一个bitmap表记录当前哪些扇区被使用,所以cow可以使用增量镜像,也就是说可以对其做外部快照。但cow也没有其他功能,其特点就是简单。
qcow格式
qcow在cow的基础上增加了动态增加文件大小的功能,并且支持加密,压缩。qcow通过2级索引表来管理整个镜像的空间分配,其中第二级的索引用了内存cache技术,需要查找动作,这方面导致性能的损失。qcow现在基本不用,一方面其优化和功能没有qcow2好,另一方面,读写性能又没有cow和raw好。
qcow2格式
qcow2是集各种技术为一体的超级镜像格式,支持内部快照,加密,压缩等一系列功能,访问性能也在不断提高。但qcow2的问题就是过于臃肿,把什么功能都集于一身。
raw格式的话,速度稍微快点,在高版本的qemu-kvm中,几乎不比qcow2的格式快,而qcow2格式节省空间,可动态增长,在公有云中广泛使用,建议使用qcow2。
可以使用下面的命令对镜像进行扩展和收缩
qemu-img resize disk3 +100M 扩展
qemu-img resize disk3 -- -100M 收缩
两个命令参数的区别
qcow和qcow2格式的镜像只能扩展,不能收缩
[root@YUN-17 2dccde39-31a4-48d5-8f62-0f963ffec481_copy]# qemu-img convert -O qcow disk disk4
[root@YUN-17 2dccde39-31a4-48d5-8f62-0f963ffec481_copy]# qemu-img resize disk4 -- -10M
This image format does not support resize
[root@YUN-17 2dccde39-31a4-48d5-8f62-0f963ffec481_copy]# qemu-img resize disk -- -10M
This image format does not support resize
添加镜像
[root@YUN-19 ~(keystone_admin)]# glance add name=test1 is_public=true container_format=bare disk_format=raw < /root/disk4
Added new image with ID: 3573cf89-7697-48cd-b07c-51344f416156
在YUN-19的dash中从test1镜像启动一个云主机
启动成功,之后进入该系统的控制台,发现主机中的目录和文件保存完整
绑定浮动IP,外部主机也可以PING通
把镜像dask3也做和dask4一样的操作,最后发现结果一样,正常
上面是以cirros的镜像启动的实例做的实验,下面以linux的实例启动的镜像作为对象
按照上边的操作把linux的实例处理
从镜像启动的实例在绑定浮动ip后,发现外部的机器PING不通
进入实例发现网卡是eth1,但是网卡配置文件时ifcfg-eth0,配置文件中没有MAC和IP的信息,只是BOOTPROTO=dhcp
对比正常的实例
正常的实例网卡是eth0,网卡配置文件是ifcfg-eth0,配置文件也中没有MAC和IP的信息,只是BOOTPROTO=dhcp
使用cirros镜像的实例所做的迁移,没有出现这样的情况,在绑定浮动IP后,外部机器可以PING通
所做处理
在钱以后的实例上,修改网卡配置文件
# mv ifcfg-eth0 ifcfg-eth1
修改文件参数
# vi ifcfg-eth1
DEVICE=eth0
to
DEVICE=eth1
保存修改后重启网络
发现外部机器可以ping通该实例
确定镜像文件在拷贝到远程的主机之前是否需要转换一下格式
YUN-17上的实例做实验
以cirros的镜像创建的实例为例
直接把实例目录下的disk文件拷贝到远程主机上
然后添加镜像,镜像格式化为qcow2
之后在dash中从该镜像启动实例,结果失败,状态为“Error”
在拷贝disk文件之前把镜像各是转换为qcow格式
拷贝后添加镜像,格式化为qcow2
之后再dash中从该镜像启动实例,结果启动成功,但是在随后绑定浮动IP后,结果在外部的机器可以PING通该实例的浮动IP
直接把实例目录下的disk文件拷贝到远程主机上
然后添加镜像,镜像格式化为qcow2
之后再dash中从该镜像启动实例,结果失败,状态为“Error”
把上面转换为qcow格式的镜像拷贝到YUN-11上,在做之后的操作,最后发现外部主机可以PING通浮动IP
事实证明的确需要装换镜像格式
在两个网络配置相同的集群中迁移实例,YUN-11所在的集群和YUN-19所在的集群
实例选择YUN-11上的主机MDS_TEST,MDS_TEST是客户测试环境的主机
MDS_TEST | 16GB 内存| 4 虚拟内核 | 200.0GB 盘
[root@host-10-10-0-2 ~]# fdisk -l
Disk /dev/vda: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008ffc5
Device Boot Start End Blocks Id System
/dev/vda1 * 1 1306 10484736 83 Linux
/dev/vda2 1306 5483 33556437+ 82 Linux swap / Solaris
/dev/vda3 5484 26108 165670312+ 5 Extended
/dev/vda5 5484 26108 165670281 83 Linux
[root@host-10-10-0-2 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10320184 8697816 1098132 89% /
tmpfs 8166272 72 8166200 1% /dev/shm
/dev/vda5 163070836 5338004 149449320 4% /home
[root@host-10-10-0-2 /]# du -sh
du: cannot access `./proc/1754/task/1754/fd/4': No such file or directory
du: cannot access `./proc/1754/task/1754/fdinfo/4': No such file or directory
du: cannot access `./proc/1754/fd/4': No such file or directory
du: cannot access `./proc/1754/fdinfo/4': No such file or directory
14G .
[root@host-10-10-0-2 /]# du -sh home
5.0G home
查看大小
关闭实例之前
[root@YUN-11 instances]# cd ffe795cd-529b-422f-82d0-550dfad0af8c/
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c]# du -sh
17G .
关机之后一样大
[root@YUN-11 instances]# cp -r ffe795cd-529b-422f-82d0-550dfad0af8c ffe795cd-529b-422f-82d0-550dfad0af8c_bak
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# ll
total 15187156
-rw-r-----. 1 root root 3 May 1 15:56 console.log
-rw-r--r--. 1 root root 18232508416 May 1 15:58 disk
-rw-r--r--. 1 root root 79 May 1 15:56 disk.info
-rw-r--r--. 1 root root 1636 May 1 15:56 libvirt.xml
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# qemu-img convert -O qcow disk disk1
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# ll
total 30976944
-rw-r-----. 1 root root 3 May 1 15:56 console.log
-rw-r--r--. 1 root root 18232508416 May 1 15:58 disk
-rw-r--r--. 1 root root 16168738816 May 1 16:08 disk1
-rw-r--r--. 1 root root 79 May 1 15:56 disk.info
-rw-r--r--. 1 root root 1636 May 1 15:56 libvirt.xml
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# du -sh disk1
16G disk1
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# qemu-img resize disk1 -- -10M
This image format does not support resize
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# qemu-img convert -O raw disk disk2
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# ll
total 46734360
-rw-r-----. 1 root root 3 May 1 15:56 console.log
-rw-r--r--. 1 root root 18232508416 May 1 15:58 disk
-rw-r--r--. 1 root root 16168738816 May 1 16:08 disk1
-rw-r--r--. 1 root root 214748364800 May 1 16:18 disk2
-rw-r--r--. 1 root root 79 May 1 15:56 disk.info
-rw-r--r--. 1 root root 1636 May 1 15:56 libvirt.xml
看到镜像dask2过大,所以对镜像做处理
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# qemu-img resize disk2 -- -10G
Image resized.
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# du -sh disk2
15G disk2
发现镜像并没有收缩10G,这应该是镜像本身大小的限制
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# scp disk1 root@192.168.0.19:/root
root@192.168.0.19's password:
disk1 100% 15GB 98.2MB/s 02:37
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# scp disk2 root@192.168.0.19:/root
root@192.168.0.19's password:
disk2 100% 200GB 58.5MB/s 58:22
[root@YUN-19 ~(keystone_admin)]# glance add name=test1 is_public=true container_format=bare disk_format=qcow2 < /root/disk1
Added new image with ID: 0106e819-32e2-4606-901d-5e58ebc83394
[root@YUN-19 ~(keystone_admin)]# glance add name=test2 is_public=true container_format=bare disk_format=qcow2 < /root/disk2
Added new image with ID: a69f8055-009b-4075-9200-a21dac4ccac2
以镜像test1启动的实例失败
选择20的硬盘空间
以镜像test2启动的实例25分钟后成功
新建一个300G硬盘的云主机类型,选择该类型创建实例
绑定浮动IP,外部机器可以PING通,在绑定之前PING不通
这里需要注意的是,因为是两个集群网络状态相同,所以要想迁移的实例可以和外部连通,必须要把源端的集群的控制节点关闭,使网络失效,这样才不会造成网络冲突。
[root@host-10-10-0-5 ~]# fdisk -l
Disk /dev/vda: 322.1 GB, 322122547200 bytes
255 heads, 63 sectors/track, 39162 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008ffc5
Device Boot Start End Blocks Id System
/dev/vda1 * 1 1306 10484736 83 Linux
/dev/vda2 1306 5483 33556437+ 82 Linux swap / Solaris
/dev/vda3 5484 26108 165670312+ 5 Extended
/dev/vda5 5484 26108 165670281 83 Linux
[root@host-10-10-0-5 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10320184 8698780 1097168 89% /
tmpfs 7973248 224 7973024 1% /dev/shm
/dev/vda5 163070836 5338004 149449320 4% /home
[root@host-10-10-0-5 /]# du -sh
du: cannot access `./home/tomcat-sg': Input/output error
du: cannot access `./home/mds.war': Input/output error
du: cannot access `./proc/1886/task/1886/fd/4': No such file or directory
du: cannot access `./proc/1886/task/1886/fdinfo/4': No such file or directory
du: cannot access `./proc/1886/fd/4': No such file or directory
du: cannot access `./proc/1886/fdinfo/4': No such file or directory
13G .
[root@host-10-10-0-5 /]# du -sh home
du: cannot access `home/tomcat-sg': Input/output error
du: cannot access `home/mds.war': Input/output error
4.6G home
发现有丢失文件的情况,有可能是收缩镜像造成的
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# qemu-img convert -O raw disk disk3
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# qemu-img convert -O raw disk disk3
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# qemu-img convert -O qcow2 disk disk4
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# ll
total 78063864
-rw-r-----. 1 root root 3 May 1 15:56 console.log
-rw-r--r--. 1 root root 18232508416 May 1 15:58 disk
-rw-r--r--. 1 root root 16168738816 May 1 16:08 disk1
-rw-r--r--. 1 root root 192199786496 May 1 16:21 disk2
-rw-r--r--. 1 root root 214748364800 May 1 18:46 disk3
-rw-r--r--. 1 root root 16171859968 May 1 20:53 disk4
-rw-r--r--. 1 root root 79 May 1 15:56 disk.info
-rw-r--r--. 1 root root 1636 May 1 15:56 libvirt.xml
镜像说明:
disk 原镜像
disk1 格式化为qcow格式
disk2 格式化为saw格式再收缩
disk3 格式化为saw格式
disk4 格式化为qcow2格式
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# du -sh disk3
16G disk3
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# scp disk3 root@192.168.0.19:/root
root@192.168.0.19's password:
disk3 100% 200GB 58.5MB/s 58:22
[root@YUN-11 ffe795cd-529b-422f-82d0-550dfad0af8c_bak]# scp disk4 root@192.168.0.19:/root
root@192.168.0.19's password:
disk4 100% 15GB 50.9MB/s 05:03
[root@YUN-19 ~(keystone_admin)]# glance add name=test1 is_public=true container_format=bare disk_format=qcow2 < /root/disk4
Added new image with ID: d5176682-733c-4673-9ac4-b75c223e4f8c
考虑到dask3过大就没有创建实例,下面是以dask4为镜像创建的实例
云主机类型选择方面,需要注意的是,硬盘大小要与镜像大小相匹配
这里选择50G实例启动不来,选择300G可以
查看实例状态
[root@host-10-10-0-13 ~]# fdisk -l
Disk /dev/vda: 322.1 GB, 322122547200 bytes
255 heads, 63 sectors/track, 39162 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008ffc5
Device Boot Start End Blocks Id System
/dev/vda1 * 1 1306 10484736 83 Linux
/dev/vda2 1306 5483 33556437+ 82 Linux swap / Solaris
/dev/vda3 5484 26108 165670312+ 5 Extended
/dev/vda5 5484 26108 165670281 83 Linux
可以SSH连接
[root@host-10-10-0-13 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10320184 8697816 1098132 89% /
tmpfs 7973220 72 7973148 1% /dev/shm
/dev/vda5 163070836 5338004 149449320 4% /home
[root@host-10-10-0-13 ~]# cd /
[root@host-10-10-0-13 /]# du -sh
du: cannot access `./proc/1744/task/1744/fd/4': No such file or directory
du: cannot access `./proc/1744/task/1744/fdinfo/4': No such file or directory
du: cannot access `./proc/1744/fd/4': No such file or directory
du: cannot access `./proc/1744/fdinfo/4': No such file or directory
14G .
[root@host-10-10-0-13 /]# du -sh home
5.0G home
迁移
http://blog.csdn.net/juvxiao/article/details/21728221
http://openstack.prov12n.com/convert-import-a-vmware-image-to-openstack-kvm/
KVM
×××linux/cainiaowanyunjisuanzhishier_KVMxunijigenggaidaxiao_652061_1381135035.html
http://blog.csdn.net/gg296231363/article/details/6922011
原文地址:http://blog.51cto.com/xiaoxiaozhou/2113370