说明:
openstack虚拟机迁移分为冷迁移和热迁移两种方式。
- 冷迁移(cold migration),也叫静态迁移。关闭电源的虚拟机进行迁移。通过冷迁移,可以选择将关联的磁盘从一个数据存储移动到另一个数据存储。
好处:虚拟机不需要位于共享存储器上,数据丢失率小。
缺点:需要关闭电源,业务中断。
- 热迁移(Live Migration),又叫动态迁移、实时迁移,即虚拟机保存/恢复,通常是将整个虚拟机的运行状态完整保存下来,同时可以快速的恢复到原有硬件平台甚至是不同硬件平台上。恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异。
好处:软件和硬件系统的维护升级,不会影响用户的关键服务,提高了服务的高可用性和 用户的满意度。
缺点:过程不可中断,操作复杂。
注意:此处只演示冷迁移方式
场景:
虚拟机实例:10.10.218.61
从计算节点 szsjhl-openstack-compute-test-10-10-214-38-belle.lan 迁移到 szsjhl-openstack-compute-test-10-10-214-39-belle.lan
迁移步骤
查看虚拟机实例ID
命令:nova list --all |grep 10.10.218.61
代码语言:javascript复制# nova list --all |grep 10.10.218.61
| 1614d161-bc14-4d09-84fc-e5c4e4abf23c | test1 | 463600ca3a754a1a8eda96d2adf875ef | ACTIVE | - | Running | 测试218段=10.10.218.61 |
查看实例信息
命令:nova show 1614d161-bc14-4d09-84fc-e5c4e4abf23c
代码语言:javascript复制# nova show 1614d161-bc14-4d09-84fc-e5c4e4abf23c
-------------------------------------- -------------------------------------------------------------------
| Property | Value |
-------------------------------------- -------------------------------------------------------------------
| OS-DCF:diskConfig | AUTO |
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-SRV-ATTR:host | szsjhl-openstack-compute-test-10-10-214-38-belle.lan |
| OS-EXT-SRV-ATTR:hostname | test1 |
| OS-EXT-SRV-ATTR:hypervisor_hostname | szsjhl-openstack-compute-test-10-10-214-38-belle.lan |
| OS-EXT-SRV-ATTR:instance_name | instance-00000264 |
| OS-EXT-SRV-ATTR:kernel_id | |
| OS-EXT-SRV-ATTR:launch_index | 0 |
| OS-EXT-SRV-ATTR:ramdisk_id | |
| OS-EXT-SRV-ATTR:reservation_id | r-s80zgm02 |
| OS-EXT-SRV-ATTR:root_device_name | /dev/vda |
| OS-EXT-SRV-ATTR:user_data | - |
| OS-EXT-STS:power_state | 1 |
| OS-EXT-STS:task_state | - |
| OS-EXT-STS:vm_state | active |
| OS-SRV-USG:launched_at | 2022-10-27T02:03:56.000000 |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| config_drive | |
| created | 2022-10-27T02:03:46Z |
| description | - |
| flavor:disk | 100 |
| flavor:ephemeral | 0 |
| flavor:extra_specs | {} |
| flavor:original_name | c4m8d100 |
| flavor:ram | 8192 |
| flavor:swap | 0 |
| flavor:vcpus | 4 |
| hostId | 9277e4d0cadf5afae92f0175145655707f7063e53911904058174228 |
| host_status | UP |
| id | 1614d161-bc14-4d09-84fc-e5c4e4abf23c |
| image | Linux-Centos7.9-2022.04.21 (8824ae73-1c3d-46ef-8b92-e401d16f750d) |
| key_name | - |
| locked | False |
| metadata | {} |
| name | test1 |
| os-extended-volumes:volumes_attached | [] |
| progress | 0 |
| security_groups | default |
| status | ACTIVE |
| tags | [] |
| tenant_id | 463600ca3a754a1a8eda96d2adf875ef |
| updated | 2022-10-27T02:03:56Z |
| user_id | 46f2707bd9d64419b9636e14bd127693 |
| 测试218段 network | 10.10.218.61 |
-------------------------------------- -------------------------------------------------------------------
从上面可以看出此实例现在所在宿主机是szsjhl-openstack-compute-test-10-10-214-38-belle.lan
关闭虚拟机实例
命令:nova stop 1614d161-bc14-4d09-84fc-e5c4e4abf23c
代码语言:javascript复制# nova stop 1614d161-bc14-4d09-84fc-e5c4e4abf23c
Request to stop server 1614d161-bc14-4d09-84fc-e5c4e4abf23c has been accepted.
代码语言:javascript复制# nova list --all |grep 10.10.218.61
| 1614d161-bc14-4d09-84fc-e5c4e4abf23c | test1 | 463600ca3a754a1a8eda96d2adf875ef | SHUTOFF | - | Shutdown | 测试218段=10.10.218.61 |
再次查看实例,已经是SHUTOFF状态
迁移虚拟机实例
语法:nova migrate [–host ] [–poll]
命令:nova migrate --host szsjhl-openstack-compute-test-10-10-214-39-belle.lan --poll 1614d161-bc14-4d09-84fc-e5c4e4abf23c
代码语言:javascript复制# nova migrate --host szsjhl-openstack-compute-test-10-10-214-39-belle.lan --poll 1614d161-bc14-4d09-84fc-e5c4e4abf23c
Server migrating... 100% complete
Finished
再次查看虚拟机实例详情
命令:nova show 1614d161-bc14-4d09-84fc-e5c4e4abf23c
代码语言:javascript复制# nova show 1614d161-bc14-4d09-84fc-e5c4e4abf23c
-------------------------------------- -------------------------------------------------------------------
| Property | Value |
-------------------------------------- -------------------------------------------------------------------
| OS-DCF:diskConfig | AUTO |
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-SRV-ATTR:host | szsjhl-openstack-compute-test-10-10-214-39-belle.lan |
| OS-EXT-SRV-ATTR:hostname | test1 |
| OS-EXT-SRV-ATTR:hypervisor_hostname | szsjhl-openstack-compute-test-10-10-214-39-belle.lan |
| OS-EXT-SRV-ATTR:instance_name | instance-00000264 |
| OS-EXT-SRV-ATTR:kernel_id | |
| OS-EXT-SRV-ATTR:launch_index | 0 |
| OS-EXT-SRV-ATTR:ramdisk_id | |
| OS-EXT-SRV-ATTR:reservation_id | r-s80zgm02 |
| OS-EXT-SRV-ATTR:root_device_name | /dev/vda |
| OS-EXT-SRV-ATTR:user_data | - |
| OS-EXT-STS:power_state | 4 |
| OS-EXT-STS:task_state | - |
| OS-EXT-STS:vm_state | resized |
| OS-SRV-USG:launched_at | 2022-10-27T02:26:28.000000 |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| config_drive | |
| created | 2022-10-27T02:03:46Z |
| description | - |
| flavor:disk | 100 |
| flavor:ephemeral | 0 |
| flavor:extra_specs | {} |
| flavor:original_name | c4m8d100 |
| flavor:ram | 8192 |
| flavor:swap | 0 |
| flavor:vcpus | 4 |
| hostId | ab81571f25c2d3b079789ed8e26053c9fbcc4c9ae2a1e06cca8b5083 |
| host_status | UP |
| id | 1614d161-bc14-4d09-84fc-e5c4e4abf23c |
| image | Linux-Centos7.9-2022.04.21 (8824ae73-1c3d-46ef-8b92-e401d16f750d) |
| key_name | - |
| locked | False |
| metadata | {} |
| name | test1 |
| os-extended-volumes:volumes_attached | [] |
| progress | 0 |
| security_groups | default |
| status | VERIFY_RESIZE |
| tags | [] |
| tenant_id | 463600ca3a754a1a8eda96d2adf875ef |
| updated | 2022-10-27T02:26:28Z |
| user_id | 46f2707bd9d64419b9636e14bd127693 |
| 测试218段 network | 10.10.218.61 |
-------------------------------------- -------------------------------------------------------------------
从上面可以看出现在status VERIFY_RESIZE 并且实例所在的宿主机已经变成了szsjhl-openstack-compute-test-10-10-214-39-belle.lan。说明迁移成功,否则就是失败
如果失败,在原宿主机上查看nova日志会看到以下报错: Command: ssh -o BatchMode=yes 10.10.214.39 mkdir -p /data/instances/1614d161-bc14-4d09-84fc-e5c4e4abf23c
解决方法 这是因为原宿主机的nova用户不能免密登录目标宿主机创建文件夹,让原宿主机nova用户免密登录目标宿主机就能解决。配置步骤如下: # 下面两步在原宿主机和目标宿主机都要执行 # usermod -s /bin/bash nova # echo nova | passwd nova --stdin # 以下命令只需要在原宿主机上执行 # su nova # ssh-keygen -t rsa -N -f ~/.ssh/id_rsa # cd ~/.ssh/ # cp id_rsa.pub authorized_keys # scp -r ~/.ssh/ 10.10.214.39:/var/lib/nova
确认resize状态
这一步很重要,需要进行确认resize状态才会完成虚拟机实例的迁移
命令:nova resize-confirm 1614d161-bc14-4d09-84fc-e5c4e4abf23c
代码语言:javascript复制# nova resize-confirm 1614d161-bc14-4d09-84fc-e5c4e4abf23c
再次查看虚拟机实例详情
命令:nova show 1614d161-bc14-4d09-84fc-e5c4e4abf23c
代码语言:javascript复制# nova show 1614d161-bc14-4d09-84fc-e5c4e4abf23c
-------------------------------------- -------------------------------------------------------------------
| Property | Value |
-------------------------------------- -------------------------------------------------------------------
| OS-DCF:diskConfig | AUTO |
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-SRV-ATTR:host | szsjhl-openstack-compute-test-10-10-214-39-belle.lan |
| OS-EXT-SRV-ATTR:hostname | test1 |
| OS-EXT-SRV-ATTR:hypervisor_hostname | szsjhl-openstack-compute-test-10-10-214-39-belle.lan |
| OS-EXT-SRV-ATTR:instance_name | instance-00000264 |
| OS-EXT-SRV-ATTR:kernel_id | |
| OS-EXT-SRV-ATTR:launch_index | 0 |
| OS-EXT-SRV-ATTR:ramdisk_id | |
| OS-EXT-SRV-ATTR:reservation_id | r-s80zgm02 |
| OS-EXT-SRV-ATTR:root_device_name | /dev/vda |
| OS-EXT-SRV-ATTR:user_data | - |
| OS-EXT-STS:power_state | 4 |
| OS-EXT-STS:task_state | - |
| OS-EXT-STS:vm_state | stopped |
| OS-SRV-USG:launched_at | 2022-10-27T02:26:28.000000 |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| config_drive | |
| created | 2022-10-27T02:03:46Z |
| description | - |
| flavor:disk | 100 |
| flavor:ephemeral | 0 |
| flavor:extra_specs | {} |
| flavor:original_name | c4m8d100 |
| flavor:ram | 8192 |
| flavor:swap | 0 |
| flavor:vcpus | 4 |
| hostId | ab81571f25c2d3b079789ed8e26053c9fbcc4c9ae2a1e06cca8b5083 |
| host_status | UP |
| id | 1614d161-bc14-4d09-84fc-e5c4e4abf23c |
| image | Linux-Centos7.9-2022.04.21 (8824ae73-1c3d-46ef-8b92-e401d16f750d) |
| key_name | - |
| locked | False |
| metadata | {} |
| name | test1 |
| os-extended-volumes:volumes_attached | [] |
| security_groups | default |
| status | SHUTOFF |
| tags | [] |
| tenant_id | 463600ca3a754a1a8eda96d2adf875ef |
| updated | 2022-10-27T03:25:39Z |
| user_id | 46f2707bd9d64419b9636e14bd127693 |
| 测试218段 network | 10.10.218.61 |
-------------------------------------- -------------------------------------------------------------------
注意:上面status 状态为SHUTOFF说明成功,否则失败。
重新启动虚拟机实例
命令:nova start 1614d161-bc14-4d09-84fc-e5c4e4abf23c
代码语言:javascript复制# nova start 1614d161-bc14-4d09-84fc-e5c4e4abf23c
Request to start server 1614d161-bc14-4d09-84fc-e5c4e4abf23c has been accepted.
验证
代码语言:javascript复制# ping 10.10.218.61
PING 10.10.218.61 (10.10.218.61) 56(84) bytes of data.
64 bytes from 10.10.218.61: icmp_seq=1 ttl=63 time=0.544 ms
64 bytes from 10.10.218.61: icmp_seq=2 ttl=63 time=0.484 ms
开机之后可以ping通ip地址,并且上面已经确认过所在宿主机已经在目标宿主机就说明迁移成功了。