openstack迁移云主机总汇 其二(云主机冷迁移)

2冷迁移

冷迁移有两种方式:

一种方式只能在同一个openstack集群中做,另一种可以再相同或者不同的集群中做

在做冷迁移之前记得把要迁移的实例关机

 

2.1方法1

把主机名为YUN-19上的实例迁移到YUN-20上,两个节点在同一个集群中,其中YUN-19是控制节点

2.1.1YUN-19上,修改数据库

(修改数据库必须要在控制节点上做)

# mysql

mysql> use nova;

mysql> update instances set host='YUN-20' where hostname='test1';

 

2.1.2实例文件拷贝

YUN-19上,把实例的文件拷贝到目的端

切换到/var/lib/nova/inctances目录

# scp -r a8814340-98d5-4ed3-b99b-32ee38cfb78f/ root@192.168.0.20:/var/lib/nova/instances/

 

2.1.3查看文件

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

 

2.1.4新建与迁移的实例关联的网桥

切换到迁移过来实例的目录下

[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中再点击“开启云主机”。

 

2.2方法2

YUN-11集群中的实例迁移到YUN-19所在的集群

 

要迁移的实例选择linux的系统,在系统中创建目录、编辑文件,迁移后查看创建的目录和修改的文档是否正常

迁移之前关闭要迁移的实例

关闭之后把实例所在的目录做下备份,目录是2dccde39-31a4-48d5-8f62-0f963ffec481_copy

 

YUN-17YUN-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

 

2.2.1转换镜像格式

[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

2.2.2查看镜像信息

[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是大写

 

从上面可以看出,修改镜像格式之后变得很大

 

2.2.3几种镜像格式的比较:

raw格式

最简单,就是一个直接给虚拟机进行读写的文件。raw不支持动态增长空间,必须一开始就指定空间大小。所以相当的耗费磁盘空间。但是对于支持稀疏文件的文件系统(如ext4)而言,这方面并不突出。

 

cow格式

cow格式和raw一样简单,也是创建时分配所有空间,但cow有一个bitmap表记录当前哪些扇区被使用,所以cow可以使用增量镜像,也就是说可以对其做外部快照。但cow也没有其他功能,其特点就是简单。

 

qcow格式

qcowcow的基础上增加了动态增加文件大小的功能,并且支持加密,压缩。qcow通过2级索引表来管理整个镜像的空间分配,其中第二级的索引用了内存cache技术,需要查找动作,这方面导致性能的损失。qcow现在基本不用,一方面其优化和功能没有qcow2好,另一方面,读写性能又没有cowraw好。

 

qcow2格式

qcow2是集各种技术为一体的超级镜像格式,支持内部快照,加密,压缩等一系列功能,访问性能也在不断提高。但qcow2的问题就是过于臃肿,把什么功能都集于一身。

 

raw格式的话,速度稍微快点,在高版本的qemu-kvm中,几乎不比qcow2的格式快,而qcow2格式节省空间,可动态增长,在公有云中广泛使用,建议使用qcow2

 

可以使用下面的命令对镜像进行扩展和收缩

qemu-img resize disk3 +100M        扩展

qemu-img resize disk3 -- -100M      收缩

 

2.2.4注意事项

两个命令参数的区别

qcowqcow2格式的镜像只能扩展,不能收缩

[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

 

2.2.5把镜像disk4拷贝到YUN-19

添加镜像

[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-19dash中从test1镜像启动一个云主机

启动成功,之后进入该系统的控制台,发现主机中的目录和文件保存完整

绑定浮动IP,外部主机也可以PING

 

把镜像dask3也做和dask4一样的操作,最后发现结果一样,正常

上面是以cirros的镜像启动的实例做的实验,下面以linux的实例启动的镜像作为对象

 

2.2.6linux实例做迁移

按照上边的操作把linux的实例处理

从镜像启动的实例在绑定浮动ip后,发现外部的机器PING不通

进入实例发现网卡是eth1,但是网卡配置文件时ifcfg-eth0,配置文件中没有MACIP的信息,只是BOOTPROTO=dhcp

 

对比正常的实例

正常的实例网卡是eth0,网卡配置文件是ifcfg-eth0,配置文件也中没有MACIP的信息,只是BOOTPROTO=dhcp

 

使用cirros镜像的实例所做的迁移,没有出现这样的情况,在绑定浮动IP后,外部机器可以PING

 

所做处理

在钱以后的实例上,修改网卡配置文件

mv ifcfg-eth0 ifcfg-eth1

修改文件参数

vi ifcfg-eth1

DEVICE=eth0

 

to

 

DEVICE=eth1

 

保存修改后重启网络

 

发现外部机器可以ping通该实例

 

 

 

2.2.7补充一

确定镜像文件在拷贝到远程的主机之前是否需要转换一下格式

 

2.2.7.1YUN-11所在的集群实例迁移到YUN-19所在集群

 

YUN-17上的实例做实验

 

cirros的镜像创建的实例为例

直接把实例目录下的disk文件拷贝到远程主机上

然后添加镜像,镜像格式化为qcow2

之后在dash中从该镜像启动实例,结果失败,状态为“Error

 

在拷贝disk文件之前把镜像各是转换为qcow格式

拷贝后添加镜像,格式化为qcow2

之后再dash中从该镜像启动实例,结果启动成功,但是在随后绑定浮动IP后,结果在外部的机器可以PING通该实例的浮动IP

 

 

2.2.7.2YUN-11所在的集群内做迁移

 

直接把实例目录下的disk文件拷贝到远程主机上

然后添加镜像,镜像格式化为qcow2

之后再dash中从该镜像启动实例,结果失败,状态为“Error

 

把上面转换为qcow格式的镜像拷贝到YUN-11上,在做之后的操作,最后发现外部主机可以PING通浮动IP

 

事实证明的确需要装换镜像格式

 

2.2.8补充二

2.2.8.1环境说明

在两个网络配置相同的集群中迁移实例,YUN-11所在的集群和YUN-19所在的集群

实例选择YUN-11上的主机MDS_TESTMDS_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 .

关机之后一样大

 

2.2.8.2拷贝文件

[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

2.2.8.3镜像处理

[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      

 

2.2.8.4在目的端添加镜像并创建实例

[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不通    

这里需要注意的是,因为是两个集群网络状态相同,所以要想迁移的实例可以和外部连通,必须要把源端的集群的控制节点关闭,使网络失效,这样才不会造成网络冲突。

 

2.2.8.5查看迁移后的实例 

[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

发现有丢失文件的情况,有可能是收缩镜像造成的   

 

2.2.8.6再次在YUN-11上转变镜像格式

[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

2.2.8.7拷贝镜像、添加镜像、创建实例

[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                                                                                                                                                                                                          

3参考文档

迁移

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

你可能感兴趣的:(云计算和大数据,openstack,rdo,云主机迁移)