【v2v迁移】Xen2kvm 迁移-linux篇

这篇具有很好参考价值的文章主要介绍了【v2v迁移】Xen2kvm 迁移-linux篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

导读:

本文系原创,欢迎规范转载。
本文描述了如何处理linux虚拟机从xen虚拟化迁移kvm虚拟化遇到问题,包括重建initramfs,处理未卸载的tools等。

系列文章:

xen2kvm迁移-Windows篇
xen2kvm迁移-Linux篇

迁移环境:

源平台:华为FusionComputeV100R006C10SPC101
目标平台:基于KVM虚拟化的云平台,本文以原生的libvirt为例
虚拟机:centos 7.6

具体操作步骤:

1、在源平台导出格式为ovf的磁盘镜像

【v2v迁移】Xen2kvm 迁移-linux篇

导出后,得到vhd文件:centos_xen-1.vhd。将该文件传输到一个装有libvirt和相关工具套件的Linux环境上,本文所使用的是一台centos7.6物理机,部署了GUI界面,安装了libvirt libvirt-client qemu-img virt-manager等工具。

2、下载华为自研的qemu-img-hw命令

解压得到命令,为命令赋予执行权限:

[root@hyperhost ~ ]$ unzip qemu-img-hw.zip
[root@hyperhost ~ ]$ cd qemu-img-hw.zip
[root@hyperhost ~ ]$ chmod a+x qemu-img-hw

使用该命令查看导出vhd文件格式:
据华为公有云文档描述:zvhd和zvhd2是云服务内部自研格式,qemu-img工具无法识别这两种格式的镜像文件,需要使用华为自研的qemu-img-hw工具:

[root@hyperhost ~ ]$ ./qemu-img-hw info centos_xen-1.vhd
image: centos_xen-1.vhd
file format: zvhd
virtual size: 100G (107374182400 bytes)
disk size: 769M

如果使用原生的qemu-img命令查看镜像格式,会显示raw,会误导用户接下来错误的执行转换命令:

[root@hyperhost ~]$ qemu-img info centos_xen-1.vhd
image: centos_xen-1.vhd
file format: raw
virtual size: 769M (806404096 bytes)
disk size: 769M

3、将zvhd格式转换为qcow2格式

转换时间依数据量而定

[root@hyperhost ~]$ ./qemu-img-hw convert -p -f zvhd -O qcow2 centos_xen-1.vhd centos_xen.qcow2
    (100.00/100%)

# 转换成功:
[root@hyperhost ~]$ qemu-img info centos_xen.qcow2
image: centos_xen.qcow2
file format: qcow2
virtual size: 100G (107374182400 bytes)
disk size: 1.6G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

4、部署为kvm虚拟机

本文使用virt-manager将qcow2磁盘部署为虚拟机:
【v2v迁移】Xen2kvm 迁移-linux篇

5、启动虚拟机,处理故障

本虚拟机安装时使用了lvm逻辑卷,会报此卡在启动界面:
【v2v迁移】Xen2kvm 迁移-linux篇

超时后提示用户,找不到逻辑卷:
【v2v迁移】Xen2kvm 迁移-linux篇

重启:
【v2v迁移】Xen2kvm 迁移-linux篇

按鼠标下键,进入rescue kernel:
【v2v迁移】Xen2kvm 迁移-linux篇

重建initramfs文件,扫描vg,激活vg,重启虚拟机
先尝试重建initramfs文件,如果不行再尝试扫描、激活vg。

# 重建initramfs文件
[root@localhost ~]# dracut -f

# 扫描vg
[root@localhost ~]# lvm vgscan

# 激活vg
[root@localhost ~]# lvm vgchange -ay

# 重启
[root@localhost ~]# init 6

【v2v迁移】Xen2kvm 迁移-linux篇

以默认内核启动
【v2v迁移】Xen2kvm 迁移-linux篇

启动正常:
【v2v迁移】Xen2kvm 迁移-linux篇

6、另一个场景

现在看另一个场景,需要迁移的虚拟机为centos7:

  • 安装了GUI,并且日常以图形化界面启动;
  • 安装了华为的uvp-tools;
  • 没有使用lvm;
  • 启用了selinux;

排查思路:
转换qcow2格式的镜像、上传kvm环境这些操作都一样:

[root@hyperhost ~]$ qemu-img-hw convert -p -f zvhd -O qcow2 centos_1qaz-1.vhd centos_1qaz-1.qcow2

在之前的场景下,正常启动时报错无法找到磁盘,针对这种情况,需要使用dracut -f 重建initramfs。
并且因为找到不到磁盘,所以无法挂载根磁盘chroot进行修复,因此需要在rescue kernel启动。
【v2v迁移】Xen2kvm 迁移-linux篇

但是在安装了GUI的场景下,使用rescue kernel会卡在数字logo启动界面:
【v2v迁移】Xen2kvm 迁移-linux篇

这里因为有GUI,所以我们无法知道到卡住的原因,所以我们尝试挂载iso镜像,进入救援模式进行修复。
进入救援模式后,按照说明输入1选择继续,这里提示我们需要救援的环境已经被挂载到了/mnt/sysimage,此时按下回车继续,执行chroot /mnt/sysimage进入我们要救援的系统:
【v2v迁移】Xen2kvm 迁移-linux篇

执行dracut -f重建initramfs,这里我们顺便禁用selinux:
如果有多个kernel,这里需要执行:dracut --regenerate-all -f
【v2v迁移】Xen2kvm 迁移-linux篇

两次输入exit,退出救援模式。这次我们选择使用本地盘启动。并且之前因为GUI的原因,我们无法看到启动时的boot message,这里我们解决这个问题:
选择第一个内核,按下e进入编辑:
【v2v迁移】Xen2kvm 迁移-linux篇
将linux16开头的这行中rhgb quiet内容删掉,按下ctrl+x组合键:
【v2v迁移】Xen2kvm 迁移-linux篇

其中:
rhgb = redhat graphical boot
quiet = 静默模式,不显示boot message

启动后,会卡在这里,我们发现,这里提示Xen_hcall:DomU hypercall user-space has been created.
Xen_hcall是xen的半虚拟化驱动,该驱动要和主机的xen api(其实就是hypercall)通信,因为我们已经迁移到kvm环境上,该驱动本应该在导出之前卸载,这里我们演示如何处理没有卸载tools的情况:
【v2v迁移】Xen2kvm 迁移-linux篇

强制重启,重新进入光盘救援模式,在/etc/.uvp-monitor路径下果然发现tools没有卸载,尝试执行卸载脚本无法执行:
【v2v迁移】Xen2kvm 迁移-linux篇

这里我们的思路是,xen_hcall是一个模块,在开机时自动加载,因此我们去开机启动脚本看看,果然发现加载xen_hcall的命令:
【v2v迁移】Xen2kvm 迁移-linux篇
尝试修该文件,发现没有权限,为其添加权限,chmod u+w /etc/rc.d/rc.local,然后修改文件:
【v2v迁移】Xen2kvm 迁移-linux篇

重新启动,注意从本地盘启动,发现已经可以正常启动了:
【v2v迁移】Xen2kvm 迁移-linux篇

在实际操作过程中,处理完xen_hcall模块的问题后,笔者两次发现了虚拟机启动会卡在nfs这里:
【v2v迁移】Xen2kvm 迁移-linux篇

经过排查发现,安装图形化桌面时,会自动安装nfs并启用,如果出现这种情况,需要再次进入救援模式,删除nfs-client.taget的软链接,避免开机自动启动。

rm /etc/systemd/system/nfs-client.target

后续工作:

  • 卸载cdrom设备,或者修改启动顺序,从本地盘启动;
  • 卸载uvp vm-tools;

思路总结:文章来源地址https://www.toymoban.com/news/detail-710993.html

  • 如果出现无法找到根磁盘,则必须重建initramfs,如果有多个内核,要对所有内核进行重建:dracut --regenerate-all -f
  • 如果虚拟机安装了tools,导出前需要卸载;如果没卸载可以参考本文处理;
  • 如果虚拟机使用了图形化,为了便于在启动时看到报错信息,需要编辑grub菜单去掉rhgb quiet参数;

到了这里,关于【v2v迁移】Xen2kvm 迁移-linux篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [ 云计算相关 ] KVM虚拟化平台windows虚拟机迁移到openstack虚拟化平台(KVM虚拟化环境中Windows虚拟机安装Virtio驱动程序)

    👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋 🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋 🙏作者水平有

    2024年02月02日
    浏览(55)
  • 导读-Linux简介

    ​ 总所周知,计算机系统包含硬件和软件两部分。硬件部分被称为裸机,主要包括中央处理器(CPU)、内存、外存和各种外部设备。软件部分主要包括系统软件和应用软件两部分。系统软件包括操作系统、汇编语言、编译程序、数据库管理系统等软件。应用软件是为多种应用

    2024年02月12日
    浏览(31)
  • Linux命令200例专栏导读:实用指南助你成为Linux大师

    🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Linux命令大全。 🏆本专栏我们会通过 具体的系统的命令讲解 加上 鲜活的实操案

    2024年02月13日
    浏览(36)
  • KVM(一)Linux部署KVM及新建虚拟机

    目录 一、准备工作 1.1 防火墙、SElinux 二、安装KVM 2.1 yum源 2.2 安装工具包 2.3 安装KVM组件 2.4 查看磁盘/新建目录 2.5 安装Linux GUI可视化界面 三、KVM桌面版新建虚拟机 3.1 挂载目录 3.2 新建raw/qcow2文件 3.3 新建虚拟机 3.4 KVM命令行新建虚拟机 关闭防火墙关闭防火墙自启动、关闭

    2024年02月08日
    浏览(36)
  • 【KVM虚拟化】· 命令行KVM安装linux

    目录 🍁基础本环境配置 🍁添加lvm卷 🍁qemu-img创建磁盘文件 🍂创建raw格式 🍂创建虚拟机 🍂转换格式为qcow2 🍁virt-install命令参数 🍁案例操作    🦐博客主页:大虾好吃吗的博客    🦐专栏地址:KVM虚拟化专栏 最小化安装centos系统,勾选虚拟化功能。   修改网卡信息,

    2024年02月04日
    浏览(48)
  • 【KVM虚拟化】· 图形化KVM安装linux

    目录 🍁虚拟化技术 🍂KVM的整体结构 🍂KVM 的功能列表 🍂KVM 工具集合 🍁安装kvm虚拟化功能 🍁创建虚拟机    🦐博客主页:大虾好吃吗的博客    🦐专栏地址:KVM虚拟化专栏 全虚拟化 半虚拟化 硬件辅助的虚拟化 从GUI到Linux内核,包括以下五个组件: virt-manager一个用来

    2024年02月01日
    浏览(45)
  • MobileNetv1,v2网络详解并使用pytorch搭建MobileNetV2及基于迁移学习训练(超详细|附训练代码)

    目录 前言 学习资料 一、MobilnetV1 二、MobileNetV2 倒残差结构:         那么什么是relu6激活函数呢​编辑  Linear Bottlenecks 三、MobileNetV3 SE模块:  更新激活函数: 重新设计耗时层结构: 使用pytorch搭建MobileNetv2网络结构 3.1 model.py 3.2 train.py 3.3 predict.py  3.4 class_indices.json 使用

    2024年02月05日
    浏览(47)
  • Linux基础 - 虚拟化介绍(KVM)

    ‍‍🏡博客主页:  Passerby_Wang的博客_CSDN博客-系统运维,云计算,Linux基础领域博主 🌐所属专栏:『Linux基础』 🌌上期文章:  Linux基础 - 服务管理(systemd) 📰如觉得博主文章写的不错或对你有所帮助的话,还望大家多多支持呀! 关注、点赞、收藏、评论。 目录 一、概述

    2024年02月02日
    浏览(60)
  • Linux系列---【Ubuntu 20.04安装KVM】

    1.安装kvm 2. 将当前用户添加至libvirt 、 kvm组 3.验证安装 4.启动libvert 至此,kvm安装完毕! 1.安装xrdp 2.查看ubuntu的ip 3.打开windows远程连接工具 登录成功后,记得修改登录密码。不然,系统一锁屏,就打不开了。通过这里输入原来ubuntu的root密码,解不了休眠锁。 1.安装virt-manager

    2024年02月16日
    浏览(64)
  • 【Linux】之Centos7卸载KVM虚拟化服务

    👨‍🎓 博主简介   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊 交流社区: 运维交流社区 欢迎大家的加入! 🐋 希望大家多多支持,我们一起进步!😄 🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包