(a) shared storage As mentioned above, shared storage is inevitable for the live_migration functionality. An example is NFS( my test environment ), and example setting is described below. Prepare NFS server machine( nova-api server is OK), and add below line /etc/exports:
nova-install-dir/instances a.b.c.d/255.255.0.0(rw,sync,fsid=0,no_root_squash
where "nova-install-dir" is the directory which openstack is installed, and add appropriate ip address and netmask for "a.b.c.d/255.255.0.0" , which should include compute nodes mounting this directory. Then restart nfs server.
/etc/init.d/nfs-kernel-server restart
/etc/init.d/idmapd restart
Also, at any compute nodes, add below line to /etc/fstab:
a.b.c.d:/ DIR nfs4 defaults 0 0
where a.b.c.d is nfs server's ipaddress and "DIR" must be same as 'instances_path'( seenova.compute.manager for the default value)
Then try to mount at compute node. Check exported directory is successfully mounted.
mount -a -v
If fail, try this at any hosts.
iptables -F
Also, check file/daemon permissions. We expect any nova daemons are running as root.
root@openstack2-api:/opt/nova-2010.4# ps -ef | grep nova
root 5948 5904 9 11:29 pts/4 00:00:00 python /opt/nova-2010.4//bin/nova-api
root 5952 5908 6 11:29 pts/5 00:00:00 python /opt/nova-2010.4//bin/nova-objectstore
... (snip)
"instances/" directory can be seen from server side:
root@openstack:~# ls -ld nova-install-dir/instances/
drwxr-xr-x 2 root root 4096 2010-12-07 14:34 nova-install-dir/instances/
Also, client(compute node) side:
# ls -ld nova-install-dir/instances/
drwxr-xr-x 2 root root 4096 2010-12-07 14:34 nova-install-dir/instances/
(b) libvirt settings In default configuration, this feature use simple tcp protocol(qemu+tcp://).To use this protocol, below configuration is necessary.
Modify /etc/libvirt/libvirt.conf :
before : #listen_tls = 0
after : listen_tls = 0
before : #listen_tcp = 1
after : listen_tcp = 1
Adding following line to /etc/libvirt/libvirt.conf :
auth_tcp = "none"
Modify /etc/init/libvirt-bin.conf
before : exec /usr/sbin/libvirtd -d
after : exec /usr/sbin/libvirtd -d -l
Modify modify /etc/default/libvirt-bin
before :libvirtd_opts=" -d"
after :libvirtd_opts=" -d -l"
then, restart libvirt
stop libvirt-bin && start libvirt-bin ps -ef | grep libvirt
Make sure you get the below result.
root@openstack2:/opt/nova-2010.2# ps -ef | grep libvirt
root 1145 1 0 Nov27 ? 00:00:03 /usr/sbin/libvirtd -d -l
if you would like to use qemu+ssh or other protocol, change "live_migration_uri" flag. by adding "--live_migration_uri" to /etc/nova/nova.conf and make appropriate settings described at http://libvirt.org/.
HOST PROJECT cpu mem(mb) disk(gb)
openstack2-c2 16 32232 878 > openstack2-c2 admin 1 2048 20
# euca-describe-instances
Reservation:r-qlg3favp
RESERVATION r-qlg3favp adminINSTANCE i-2ah453 ami-tiny 12.1.0.14 10.0.0.3
migrating testkey (admin, openstack2-c2) 0 m1.small 2010-11-28 16:09:16
Live migration i-xxxx to DESTHOST finishes successfully.
When live migration fails somehow, error messages are shown at:
在线迁移:http://wiki.openstack.org/UsageOfLiveMigration
CentOS安装:http://wiki.openstack.org/NovaInstall/CentOSNotes
NovaCategory:http://wiki.openstack.org/CategoryNova
Nova与Eucalyptus的对比:http://wiki.openstack.org/Nova/EucalyptusFeatureComparison?highlight=%28\bCategoryNova\b%29
Nova综述:http://wiki.openstack.org/Nova?highlight=%28\bCategoryNova\b%29