前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >KVM 虚拟机冷、热迁移实践

KVM 虚拟机冷、热迁移实践

作者头像
Kevin song
发布2023-12-11 18:45:28
3260
发布2023-12-11 18:45:28
举报

静态迁移

虚拟机静态迁移是指虚拟机关机状态下,将虚拟机磁盘镜像文件和配置文件复制到另一台宿主机上,整个迁移过程系统处于关闭状态。

动态迁移

虚拟机热迁移是指在不中断业务的情况下,将虚拟机从一台物理服务器移动至另一台物理服务器。虚拟机管理器提供内存数据快速复制和共享存储技术,确保虚拟机迁移前后数据不变。

虚拟机静态迁移

1,关闭虚拟机

代码语言:javascript
复制
virsh destroy openeuler-node01

2,查看虚拟机的磁盘文件

代码语言:javascript
复制
virsh domblklist openeuler22.03_clone2
 Target   Source
---------------------------------------------
 vda      /data/openeuler22.03_clone2.qcow2

3,将虚拟机磁盘文件拷贝到目标宿主机

代码语言:javascript
复制
scp /data/openeuler22.03_clone2.qcow2 root@192.168.100.73:/data/openeuler22.03_clone2.qcow2

4,导出虚拟机配置信息

代码语言:javascript
复制
virsh dumpxml  openeuler22.03_clone2 > openeuler22.03_clone2.xml

5,将虚拟机配置文件拷贝到目标宿主机

代码语言:javascript
复制
scp openeuler22.03_clone2.xml root@192.168.100.73:/data/openeuler22.03_clone2.xml

6,注册虚拟机

代码语言:javascript
复制
virsh define /data/openeuler22.03_clone2.xml

7,启动虚拟机

代码语言:javascript
复制
virsh start openeuler22.03_clone2

虚拟机动态迁移

nfs-server 部署

安装 nfs

代码语言:javascript
复制
dnf  install nfs-utils rpcbind -y

查看 nfs 版本

代码语言:javascript
复制
rpm -qa | grep nfs-utils

开启 nfs 服务

代码语言:javascript
复制
systemctl start nfs-server

查看 nfs 支持的版本信息

代码语言:javascript
复制
cat /proc/fs/nfsd/versions

启动 nfs 服务

按顺序启动rpcbind和nfs服务

代码语言:javascript
复制
systemctl start rpcbind  && systemctl  enable rpcbind
systemctl start nfs-server && systemctl enable nfs-server

nfs服务启动查看端口是否生效

代码语言:javascript
复制
rpcinfo -p

nfs 共享目录

/etc/exports 是nfs默认的配置文件

代码语言:javascript
复制
vim /etc/exports
/var/lib/libvirt/images/ 192.168.100.0/255.255.255.0(rw,sync,no_root_squash)
  • no_root_squash:对root用户不压制,如果客户端以root用户写入,在服务端都映射为服务端的root用户
  • root_squash:nfs服务:默认情况使用的是相反参数root_squash,如果客户端是用户root操作,会被压制成nobody用户

查看nfs共享的目录

代码语言:javascript
复制
exportfs -rv

exportfs 参数

  • -r: Reexport all directories 重新导出所有目录
  • -v: verbose 输出详情

Firewalld

代码语言:javascript
复制
firewall-cmd --add-service=nfs --permanent
firewall-cmd --add-service=rpc-bind –permanent
firewall-cmd --add-service=mountd --permanent
firewall-cmd --reload
或
firewall-cmd --add-service={nfs,mountd,rpc-bind} --permanent

NFS 挂载

showmount命令测试NFS服务器的输出目录状态

代码语言:javascript
复制
showmount -e 192.168.100.91

showmount [选项] NFS服务器名称或地址

  • -a:显示指定的NFS服务器的所有客户端主机及其所连接的目录;
  • -d:显示指定的NFS服务器中已被客户端连接的所有输出目录;
  • -e:显示指定的NFS服务器上所有输出的共享目录。

mount 挂载

创建nfs挂载目录

代码语言:javascript
复制
mkdir /data

mount命令格式

mount 服务器名或IP地址:输出目录 本地挂载目录

代码语言:javascript
复制
mount -t nfs -o vers=3,nolock,proto=tcp 192.168.100.234:/var/lib/libvirt/images /data
  • vers=3:指定NFS协议版本3
  • nolock:禁用文件锁定。防止多用户环境中的数据损坏等潜在问题
  • proto=tcp:指定传输协议,NFS可以使用TCP或UDP(用户数据报协议)进行通信

umount 卸载

代码语言:javascript
复制
umount /data

fstab 文件

代码语言:javascript
复制
vim /etc/fstab
192.168.100.234:/var/lib/libvirt/images /data nfs vers=3,nolock,proto=tcp 0 0

虚拟机动态迁移

代码语言:javascript
复制
virsh migrate --live openeuler-node01 --unsafe --verbose qemu+ssh://192.168.100.73/system

参数说明

  • virsh migrate 迁移命令
  • live 热迁移虚拟机的名称
  • unsafe 不进行安全审查
  • verbose 迁移过程以百分比显示
  • qemu+ssh://$ip/system 配置目标主机

虚拟机验证

代码语言:javascript
复制
virsh  list   --all

libvirt远程管理虚拟机

libvirt支持使用ssh,tcp,tls协议进行远程管理,例如:virsh -c qemu:///system 连接到远程机器,连接到远程机器使用远程主机的用户和主机名进行身份验证。

本机virsh 交互

代码语言:javascript
复制
virsh -c  qemu:///system list
virsh -c  qemu:///session
  • -c 执行list命令(--connect)

查看虚拟机列表

代码语言:javascript
复制
virsh -c qemu+ssh://root@127.0.0.1/system  list

登录虚拟机

代码语言:javascript
复制
virsh -c qemu+ssh://root@127.0.0.1/system  console openeuler22.03_clone2
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档