|
|
将kvm管理的虚拟机迁移到openstack6 ]/ A2 [- u8 Q* i, H
9 |2 r$ \5 h$ H5 j
说了这么多,这才是本文重点。具体步骤如下:
; ?8 E! ], ?. }' l8 e; \9 R2 u& O) b6 ]- \3 }" G I7 U
a.备份kvm中的虚拟机成为镜像文件,在计算节点执行! @$ @. B( v" t( q
- V9 Y) a; i# X- V: e" O9 t0 \
qemu-img convert -f qcow2 -O qcow2 disk newdisk 5 U z" ^# p" H+ s( b5 R+ J6 v9 b" P
4 c, y7 q1 s# w) G+ q, ?4 Y2 Q3 ob.停止虚拟机5 e4 m" c+ S; d7 U* _2 U
; m, Q5 h$ s( z: |$ B' Oc.在计算节点创建nfs将上面打快照的newdisk共享到控制节点,主要要减少大型虚拟机在结算节点和控制节点之前的拷贝,虚拟机一般500g左右。mount好以后,控制节点就会误以为镜像文件已经在自己的控制节点上了,省去了将快照镜像导入glance的步骤。
6 |' j9 \$ t' @( L% A9 G: p
. k0 B9 @" z1 M8 A+ @( X7 hmount 192.168.0.2:/home/share/newdisk on /openstack/lib/glance/images
" k; e+ V5 }+ m+ J' ^$ M5 P1 u# O) ^$ {
d.修改openstack的数据库,修改数据库后,在新建虚拟机时才能在页面和openstack真正使用刚才假冒导入glance的虚拟机快照。细心同事写的脚本。在控制节点执行。
% x) v9 r1 {. q& y/ ^. N0 c
: C2 c; g7 q+ b6 ?, `#!/bin/sh7 t. G3 Q* a8 ~9 a$ F
5 I2 Q' O. O3 E( e6 A3 _. Z/ }iname=$1
& q8 k0 r7 p& ^* o
8 J3 G4 D9 j$ t/ ^- h) x, Rfilepath1="/tmp/$iname-1.sql"! w/ _. a# R/ H4 O
8 i8 ]7 i: I& X- o
filepath2="/tmp/$iname-2.sql"
- q6 z; R. m8 r! c R
' z8 j0 O }2 i- z5 jmysql -uroot -ppasswd<<eof# f! ~5 l0 p8 |: M7 O: g
1 \: u/ P8 k2 a g- u% d& b6 r
use glance;
8 s# D, U! M& `. Q. i" V/ l; H' ~4 D5 {! X; D( K# C
load data local infile '$filepath1' into table images(id,name,size,status,is_public,created_at,updated_at,deleted_at,deleted,disk_format,container_format,checksum,owner,min_disk,min_ram,protected);4 _ O) ^" q9 f: w$ P+ U- W. N
5 s9 S4 Y Y& ?. z& o- N
load data local infile '$filepath2' into table image_locations(image_id,value,created_at,updated_at,deleted_at,deleted,meta_data);+ n% h/ X# \/ m! k5 r
# O9 r/ ~& @ E d
EOF
5 e$ C( x/ w) S- P+ i( H4 a ^1 o; f! u$ G
执行import_mysql.sh 192.168.1.xxx_20161205
& a0 D2 C: q r
0 b- U: i; I. a! k5 Jinname-1.sql内容:6 V" G: h; j6 L
6 }$ B) n: G) W* t) t& X4 re340ccc1-dd65-4163-822f-348d5711313f 172.21.0.41_20161205 97956003840 active 0 2016-12-02 18:10:04 2016-12-02 19:36:10 N 0 qcow2 ovf e30b8b94918aad131cf4618a8efc3d78 f3267153b73d4bf09bed91eb289e26ec 0 0 01 P* x2 \7 m! m! o; T9 G7 ~
4 m; H* O& d$ e
inname-2.sql内容:/ m+ O) j7 t6 w; W: S4 u4 S& A- W! h
( k1 v: c- X9 R9 b# o. W92b44daf-a529-469d-b428-dca8bc39fe4c file:///openstack/lib/glance/images/92b44daf-a529-469d-b428-dca8bc39fe4c 2016-12-02 17:59:30 2016-12-02 17:59:30 N 0 {}
3 A; g, L" Z0 g6 r
7 J) b t3 N' T, k& g9 J; h7 Xe.修改计算节点openstack HAVANA代码,由于我们不想让glance把快照传来传去,假装了glance的已经导入的快照,但是glance还是有办法判断,注释下面的代码让glanceclient不再判断。记得注释完pythonc编译一下,然后重启service openstack-nova-compute 服务。! a5 Y# s- _4 L6 }# G0 ]; g
- ~6 D$ J2 m4 O0 y8 `# m
vi /usr/lib/python2.7/site-packages/glanceclient/common/http.py
\3 z: o1 {7 E' O( t, J
1 Y$ a% v0 ?, z+ @4 d将501行-504行注释代码4 q9 A; Z; N# Y& u N; v
' _5 p$ q% d6 ?501 #if self._checksum is not None and md5sum != self._checksum:
3 a9 G( I. t: a; O7 n8 G' Z9 @# F
: I- r: V9 d; F+ v502 # raise IOError(errno.EPIPE,
" d- r$ j% p. V! S. a% L8 p! T/ t: Z
503 # 'Corrupted image. Checksum was %s '
% R r" Z% G- r( `& |
/ n+ _! A) K* m, ]9 |" j504 # 'expected %s' % (md5sum, self._checksum))& z2 O1 k) i) \. y1 B6 N
: m% B! j- u3 H8 }, M* s2 Kf.到这一步,kvm到openstack Havana的快照镜像已经准备好了,只需要在建立虚拟机就可以了。当然具体建网络,subnet和openvswitch的port过程不说了。; \9 o% @2 H# z+ f4 T
% L! I" n, F2 ~: l3 s5. 验证主机,一切ok,KVM虚拟机迁移到openstack 成功。+ T, {8 R5 v1 g" i7 ]5 C) h
: {4 y% { x' K, ^* C& ~</eof" z8 x( M' U, C5 X) t) s
5 ^$ P% w8 B3 @3 G/ P
<eof2 v. e. Q: c! J/ T* _
9 @/ a2 N- F, R0 j0 w8 m# t1 l
</eof' d: T# l7 O0 Z2 M' k& d+ H1 c8 X
: l* \: H8 R- ]* `3 N- X. J8 U
|
|