ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

国产麒麟系统上部署KVM虚拟化:从环境检查到网络配置的完整实战指南

国产麒麟系统上部署KVM虚拟化:从环境检查到网络配置的完整实战指南 我们直接开整。今天聊个非常接地气、但网上资料经常写得稀碎的话题在国产麒麟系统上装KVM虚拟机。最近这两年搞国产化替代的单位越来越多我身边不少朋友和同行都在跟麒麟系统打交道从服务器到桌面都有。很多人拿到的第一台国产化机器还是基于ARM架构或者特定飞腾、鲲鹏、龙芯平台的跟咱们平时玩的x86那套完全不是一个路子。用Windows习惯了的同学突然要在麒麟系统上干活搞个虚拟机装个Windows或者Linux系统对着网上搜来的零碎教程踩坑踩到怀疑人生。这篇文章我就基于自己在银河麒麟Kylin系统上折腾KVM的真实过程把从环境检查、安装部署、网络配置到虚拟机创建、问题排查的完整链路掰开揉碎讲清楚。不管你手头是x86的麒麟还是ARM架构的麒麟这篇都有可参考的地方。咱们的核心目标是用最少的时间在麒麟系统上跑起来一个真正能用的KVM虚拟机并且把网络、远程访问这些最麻烦的坑都提前填上。1. 为什么选KVM而不是VirtualBox或者VMware先聊点思路层面的东西。你可能会问折腾个虚拟机干嘛非得用KVM我用VirtualBox或者VMware Player不也挺好吗这个问题的答案放到麒麟系统上就非常现实。1.1 内核级虚拟化才是“亲儿子”KVMKernel-based Virtual Machine是Linux内核自带的虚拟化模块它把Linux内核直接变成了一个Type-1的Hypervisor。什么意思呢就是说KVM不是一个跑在操作系统里的应用程序它的虚拟化能力是内核的一部分。与之对比VirtualBox和VMware Workstation属于Type-2 Hypervisor是跑在操作系统之上的应用软件多了一层转发和模拟性能和资源损耗都要高一些。实话说在纯桌面使用场景下VirtualBox那点性能损耗你未必感知得出来。但在我干过的项目里一旦涉及服务器虚拟化、内网测试环境搭建、跑数据库或者做编译VMware和VirtualBox的资源开销和稳定性就和KVM有明显差距了。KVM走的是内核态直通虚拟机里的CPU指令能直接送到物理CPU执行Guest OS跑起来跟原生系统体感上几乎没区别。1.2 麒麟系统和KVM的“原生血缘”这一点可能是很多教程没讲透的。银河麒麟系统的内核是基于Linux改造的它在设计之初就明确支持KVM虚拟化。换句话说KVM在麒麟系统上不是“装上去的插件”而是系统自带的内核能力你只需要把它启用、装上配套的用户态管理工具就行了。另外一个更现实的理由是在国产化替代的办公环境中批量部署和管理虚拟机这件事KVM家族有virt-manager、virsh、libvirt这一整套成熟工具链方便运维做脚本化、自动化的管理。如果每天要开几十台虚拟测试机你用VirtualBox一台一台手动开光想就觉得脑袋大。1.3 从“能跑”到“好用”的关键有了KVM之后真正的难点不在于装KVM本身。因为麒麟系统的软件源里就有现成的包装完就能用。真正的难点在于下面这几件事网络怎么桥接让虚拟机跟宿主机同一个局域网而不是被NAT挡住。怎么远程访问虚拟机尤其是当宿主机是台无显示的服务器时。怎么迁移、克隆、备份虚拟机。ARM架构的CPU上怎么装对应的Guest OS镜像。所以这篇文章的实操部分我会把“装好KVM”看作只是万里长征第一步重点会放在“把虚拟机配好、用起来”这个环节上。2. 安装前的准备工作检查CPU虚拟化支持不管你是全新安装还是已经用了一段时间的麒麟系统安装KVM之前必须确认硬件虚拟化支持是否开启。这个环节漏掉的话后面装KVM装到一半才会报错那才叫浪费时间。2.1 确认CPU架构先分清架构用的是x86的Intel/AMD CPU还是ARM架构的飞腾、鲲鹏、麒麟处理器。uname -m输出 x86_64x86架构常规操作。输出 aarch64ARM架构后续虚拟机镜像要用ARM版本操作上细节不太一样。这一步是真的重要别忽略了。我见过有人拿着ARM架构的麒麟电脑硬去装x86的Windows虚拟机结果折腾了半天镜像都是不兼容的。2.2 检查KVM模块是否加载KVM在Linux内核里是以模块形式存在的。执行下面的命令看输出结果ls /dev/kvm如果看到 /dev/kvm 这个设备文件说明KVM内核模块已经加载了。如果没有试试手动加载modprobe kvm modprobe kvm_intel # Intel CPU modprobe kvm_amd # AMD CPU modprobe kvm_arm # ARM架构的麒麟需要根据具体内核版本确认模块名2.3 x86平台的BIOS虚拟化开关这是最容易被忽略的一步。很多台式机和服务器BIOS里的虚拟化功能默认是关闭的。如果 /dev/kvm 不存在而且modprobe加载模块时报了类似“Operation not supported”的错误那八成是BIOS里的VT-xIntel/ SVMAMD选项没开。重启机器进BIOS设置找到如下选项不同主板位置不同关键字一般是VirtuallizationVT-xSVM Mode或者叫Virtualization TechnologyIntel平台把 Intel Virtualization Technology 设为 EnabledAMD平台把 SVM Mode 设为 Enabled设置保存重启之后再执行 ls /dev/kvm 确认一下。这一步做完后面就顺了。2.4 确认内核及系统版本我之前用的系统版本是银河麒麟V10。不同的V10子版本比如SP1、SP2软件源里的包版本会有一点点差异但大方向一样。确认一下当前系统版本cat /etc/os-release顺手看一下内核版本uname -r麒麟V10的内核一般是基于4.19或者5.4的这两个内核版本对KVM的支持都已经非常成熟了所以内核这块基本不用操心。3. 麒麟系统安装KVM的完整步骤准备工作做完下面进入正题。麒麟系统的安装方式跟Ubuntu系很像因为银河麒麟本身就是基于Debian/Ubuntu的生态。所以接下来所有命令用的都是 apt 包管理器。3.1 更新软件源安装KVM相关软件包先更新一下软件源避免装到过期的包sudo apt update然后安装KVM及其管理工具。建议一次性装全省得后面缺一个组件又返工sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager这里简单解释一下这几个包是干什么的方便你后续排查问题的时候知道每一块是谁qemu-kvmKVM的底层用户态模拟器虚拟机实际的CPU、内存、设备模拟全靠它。libvirt-daemon-systemlibvirt服务端提供统一的虚拟化管理APIvirt-manager和virsh都是它的客户端。libvirt-clients提供 virsh 命令行工具。bridge-utils网桥管理工具后面配桥接网络要用。virtinst提供 virt-install 命令这个神器可以直接在命令行里创建虚拟机并自动引导安装系统。virt-manager图形化管理界面如果你有桌面环境用它管理虚拟机最直观。3.2 启动并设置libvirtd开机自启装完包之后启动libvirtd服务并设置开机自启sudo systemctl enable --now libvirtd sudo systemctl start libvirtd验证服务状态sudo systemctl status libvirtd正常情况下应该显示active (running)。如果这里报错常见的原因包括内核模块没加载、或者BIOS虚拟化没开启回上一节排查。3.3 检查KVM是否可用这一步我每次都做主要是确认整个虚拟化栈能正常调用。用virsh这个工具看一下sudo virsh version你会看到三个版本的输出libvirt版本、QEMU版本和KVM内核模块相关的那一行。如果KVM调用正常还会有类似的提示信息告诉你支持虚拟化。再执行一次sudo virsh list --all能正常返回空的虚拟机列表就说明libvirt连接本地QEMU/KVM服务成功了。3.4 当前用户加入libvirt组免sudo管理虚拟机这一步很关键否则每次用virsh或者virt-manager都得带sudo非常烦。把当前用户加进libvirt和kvm用户组sudo usermod -aG libvirt $USER sudo usermod -aG kvm $USER执行完之后注销当前用户重新登录或者直接重启一次系统让组权限生效。之后运行 virsh list --all 就不用加sudo了。3.5 确认/varlib/libvirt/images目录权限默认情况下虚拟机镜像文件放在 /var/lib/libvirt/images 目录下这个目录的属主是root:root。如果用户加入了libvirt组通常可以对这个目录有读写权限。但早期版本有些坑所以检查一下ls -ld /var/lib/libvirt/images如果发现当前用户没法在这个目录里创建文件直接改属主sudo chown -R $USER:libvirt /var/lib/libvirt/images这个目录是后面存放虚拟磁盘文件的默认位置没有权限的话创建虚拟机时会报“Permission denied”之类的错误。4. 使用virt-manager图形界面创建虚拟机麒麟桌面版的用户我强烈推荐用virt-manager来管理虚拟机它提供类似VMware Workstation的图形界面对新手非常友好。启动virt-managervirt-manager如果是在远程服务器上可以通过SSH X11转发打开或者装个X2Go、VNC之类连桌面。需要注意的是麒麟桌面版自带桌面环境所以本地直接跑就行。4.1 创建存储池在virt-manager主界面先把默认的存储卷准备好。双击“QEMU/KVM”连接到本机然后依次打开“编辑”-“连接详情”-“存储”选默认存储池点击“启动”再勾选“开机自动启动”。这一步对应的是 /var/lib/libvirt/images 目录的池化如果存储池没启动后面创建虚拟机时选镜像文件会报找不到路径。4.2 新建虚拟机的向导过程点击左上角“创建新虚拟机”按钮根据向导来选择安装方式如果要装ISO镜像选“本地安装介质ISO镜像或光盘”如果要导入已有磁盘镜像选“导入现有磁盘镜像”。选择ISO镜像浏览到你的系统镜像位置。比如要装Windows就选Windows的ISO要装Linux发行版就选对应的Linux ISO。内存和CPU根据宿主机配置和你实际需要来分配。我常用的起步值是2核CPU、4GB内存后面可以热调整。磁盘选择“创建磁盘映像”大小建议至少给40-80GB选“RAW”或“QCOW2”格式。完成前勾选“安装前自定义配置”这一步方便直接调整网络、显示设备等细致的参数。在最终确认页面有一个CPU架构的选项需要特别注意。如果ISO是你的架构不支持的比如Windows的x86镜像装在ARM架构的麒麟上virt-manager会报错。所以架构必须匹配。4.3 装完系统之后安装virtio驱动这一步非常关键。在虚拟机里装Linux一般是自带virtio的但如果你的虚拟机装的是Windows那装完系统后务必安装virtio驱动否则网卡和磁盘性能会非常拉胯甚至认不出磁盘。virtio驱动的ISO镜像可以从Fedora的官方仓库下载我记得最新的版本大约有200多MB。在virt-manager里把virtio-win的ISO挂载到虚拟机的CD-ROM上在Windows虚拟机里运行安装程序把所有的组件都装上即可。装完virtio驱动之后Windows虚拟机的磁盘控制器从默认的SATA模拟改成VirtIO才能发挥KVM真正的性能。改的时候注意在关机状态下把磁盘总线的类型改成VirtIO然后重启虚拟机。5. 不折腾图形界面用virt-install命令行快速部署如果你的麒麟系统是服务器版没有桌面环境或者你更习惯命令行操作那就用virt-install。这个命令写自动化脚本非常方便批量部署虚拟机时效率远高于图形界面。下面是一个典型的使用场景创建一个2核4GB内存、40GB磁盘的CentOS Stream虚拟机。sudo virt-install \ --name centos-test \ --memory 4096 \ --vcpus 2 \ --disk path/var/lib/libvirt/images/centos-test.qcow2,size40,formatqcow2,busvirtio \ --os-variant centos-stream9 \ --network networkdefault,modelvirtio \ --cdrom /path/to/CentOS-Stream-9-latest-x86_64-dvd1.iso \ --graphics vnc,listen0.0.0.0,passwordyourpassword \ --noautoconsole这个命令的每个参数我都解释一下方便你按需修改--name虚拟机名称后面所有的virsh管理操作都靠这个名字定位。--memory内存大小单位MB。--vcpus虚拟CPU核数。--disk磁盘路径、大小、格式。path指向的qcow2文件如果不存在会自动创建。size的单位是GB。--os-variant操作系统类型。这个参数影响虚拟机的硬件优化策略。可以用 osinfo-query os 命令查看所有支持的系统类型。--network网络配置。networkdefault 表示用NAT网络modelvirtio 表示使用半虚拟化的virtio网卡。--cdromISO镜像路径。--graphics显示设备。vnc表示通过VNC远程访问password就是VNC密码。--noautoconsole安装时不自动打开控制台适合脚本自动化。执行完毕后用virsh list查看虚拟机状态virsh list安装过程中的系统界面可以通过VNC客户端连接宿主机IP的5900端口查看默认端口从5900开始每个虚拟机递增。如果第一个虚拟机占用5900第二个就是5901以此类推。6. 网络配置从默认NAT到桥接网络这地方真的卡住太多人了。默认情况下KVM装完虚拟机之后用的是一张virbr0的NAT网卡虚机可以访问外网但宿主机所在的局域网里的其他机器无法直接访问虚机。这在个人测试场景下没问题但一旦涉及到服务器部署、局域网内需要互通业务的场景默认NAT完全不够用。6.1 为什么要桥接简单说NAT相当于在宿主机里开了一个“小局域网”虚拟机躲在宿主机后面外面访问不到。而桥接模式下虚拟机的网卡直接“插”在宿主机所在的物理局域网上虚拟机拥有独立的IP地址就像局域网里的一台真实机器一样。所以需要局域网内其他机器直接访问虚拟机比如你起了个Web服务、数据库要给别人访问就用桥接。只是虚拟机自己上网不对外提供服务NAT就够。6.2 检查宿主机有没有桥接工具前面安装我们已经装了bridge-utils。检查一下dpkg -l | grep bridge-utils如果没有安装用前面提到的那条apt命令补上。6.3 麒麟系统配置桥接网络的步骤麒麟桌面版的网络管理是用NetworkManager管的服务器版可能用的是netplan或者/etc/network/interfaces。不同版本配置路径不一样我把自己验证过的标准做法列出来。先说桌面版用nmcli创建网桥# 创建一个名为br0的桥接设备 sudo nmcli connection add type bridge ifname br0 con-name br0 # 把物理网卡eth0加进桥接注意把eth0替换成你实际的网卡名用ip addr查 sudo nmcli connection add type ethernet slave-type bridge con-name bridge-br0 ifname eth0 master br0 # 给br0设置IP地址写你局域网内的静态IP这里是示例按实际设 sudo nmcli connection modify br0 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.1 ipv4.method manual # 启动桥接 sudo nmcli connection up br0 # 把原来的以太网连接断开 sudo nmcli connection down eth0如果是服务器版习惯用/etc/network/interfaces管理的话配置文件大致是这样的auto br0 iface br0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 192.168.1.1 bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0改完之后重启网络服务sudo systemctl restart networking配置完成后在宿主机上执行 ip addr 确认br0有IP且eth0已经并入了br0。6.4 创建桥接网络的libvirt虚拟机网络有了br0之后还需要告诉libvirt这个桥接网络的存在。用下面的XML定义一个虚拟机网络cat /tmp/bridge-network.xml EOF network namehost-bridge/name forward modebridge/ bridge namebr0/ /network EOF然后导入libvirtsudo virsh net-define /tmp/bridge-network.xml sudo virsh net-start host-bridge sudo virsh net-autostart host-bridge6.5 给虚拟机指定桥接网卡在virt-manager里进入虚拟机的“显示细节”点击“添加硬件”选择“网络”然后网络源选择“指定桥接设备”名称选br0设备模型选virtio保存。在virt-install命令行中对应的参数是--network bridgebr0,modelvirtio这样配置后虚拟机的IP地址就是局域网DHCP分配的或者你在虚拟机内部手动配静态IP和宿主机在同一个网段其他机器可以直接访问。7. 虚拟机远程访问的几种姿势虚拟机创建好了网络通了接下来就是怎么访问它的问题。7.1 Virt-Manager的图形控制台如果宿主机有桌面环境直接在virt-manager里双击虚拟机就能打开图形控制台这个是最直观的。但问题在于远程场景下比如宿主机是放在机房里的服务器没有接显示器这时候就要靠远程访问了。7.2 VNC远程访问默认情况下虚拟机可以通过VNC协议访问。virt-manager在创建虚拟机的时候会配置一个VNC显示设备。远程VNC客户端连接宿主机IP加端口号默认5900起就能看到虚拟机的显示界面。上面提到的virt-install命令使用了 --graphics vnc,listen0.0.0.0,passwordyourpassword这样就允许任意IP的VNC客户端用密码连接。注意不要用太简单的密码。7.3 SPICE协议体验更好SPICE是Red Hat主推的远程显示协议相对于VNC它在视频流、USB重定向、双向音频方面体验更好。如果Guest是Linux桌面或者WindowsSPICE的体验是明显优于VNC的。创建虚拟机的virt-install参数可以改成--graphics spice,listen0.0.0.0客户端侧安装virt-viewer连接即可。7.4 最省事的SSH如果虚拟机装的是Linux服务器版而且网络已经通建议直接通过SSH访问虚拟机IP根本不需要图形界面性能最好、最稳定。虚拟机里启动SSH服务sudo systemctl enable --now sshd然后在其他机器上直接ssh user虚拟机IP这种方式最省资源适合无头无图形界面的Linux虚拟机。8. 常见问题与排查技巧实录这部分是我实际踩坑的记录按经典程度排列遇到报错不要慌按顺序查基本能解决。8.1 /dev/kvm 不存在这个前面提过优先检查BIOS虚拟化开关其次检查kvm模块是否加载。执行lsmod | grep kvm如果没有输出就modprobe加载对应架构的kvm模块。ARM架构的机器则确认内核里有没有KVM支持。8.2 virt-manager提示 “Unable to connect to libvirt”这个错误大概率是libvirtd服务没起来或者socket路径不对。先看服务状态sudo systemctl status libvirtd如果服务是active的那就检查当前用户是否在libvirt组里。执行 groups 看当前用户所在的组如果没有libvirt说明之前加的组还没生效注销重新登录。8.3 虚拟机启动时报 “CPU is not supported” 之类的错误这种情况多见于宿主机的CPU比较老或者虚拟机配置了不兼容的CPU模型。解决办法是在虚拟机的CPU配置里把CPU模型改成“host-passthrough”也就是直接将宿主机的CPU指令集透传给虚拟机。用virt-manager在“显示细节”-“处理器”里勾选“复制主机CPU配置”即可。8.4 虚拟机磁盘I/O很慢先确认虚拟机磁盘总线类型。在virt-manager里看磁盘设备的“总线类型”如果显示的是“SATA”或者“IDE”性能会差很多。改为“VirtIO”并确保Guest系统里装了virtio驱动。8.5 虚拟机无法上网但宿主机能上网分两种情况用的是默认NAT网络检查默认网络是不是激活了。sudo virsh net-list --all 看default网络是否是active状态不是就启动并且设置autostart。用的是桥接网络检查br0桥接是否正常。注意如果宿主机的物理网卡插拔、重启之后没有自动加入br0桥接会失效。排查时在宿主机执行 ip addr 看br0和物理网卡的IP地址情况。8.6 创建大容量虚拟磁盘时空间不足默认镜像是在 /var/lib/libvirt/images 下如果系统盘空间有限可以将虚拟磁盘文件放到独立的数据盘上。创建一个数据目录然后在virt-install的--disk参数里指定路径即可。例如把数据盘挂在 /data就在 /data/vm-images 下创建磁盘文件mkdir -p /data/vm-images sudo virt-install \ --name test-vm \ --disk path/data/vm-images/test-vm.qcow2,size100,formatqcow28.7 Windows虚拟机装完系统后没有网卡这个问题在麒麟宿主机上装Windows虚拟机时真的遇到过很多次。原因就是Windows镜像没有带virtio网卡驱动导致网络设备无法识别。解决思路分两步在virt-manager里临时把网络设备的模型从virtio改成e1000或者rtl8139这样Windows可以先用自带的驱动识别到网卡。进系统之后挂载virtio-win ISO安装virtio驱动关机再把网络模型改回virtio。8.8 系统休眠或宿主机重启后虚拟机没自动启动如果需要虚拟机随宿主机开机自动启动用virsh设置virsh autostart 虚拟机名称取消自动启动virsh autostart --disable 虚拟机名称9. 虚拟机性能优化与日常管理命令速查当你已经成功跑起来虚拟机接下来的日常工作就是优化和管理。9.1 常用的virsh命令以下命令是我使用频率最高的整理给大家方便直接复制使用# 查看所有虚拟机状态 virsh list --all # 启动一个虚拟机 virsh start 虚拟机名 # 优雅关机 virsh shutdown 虚拟机名 # 强制关机 virsh destroy 虚拟机名 # 重启虚拟机 virsh reboot 虚拟机名 # 设置开机自启 virsh autostart 虚拟机名 # 取消开机自启 virsh autostart --disable 虚拟机名 # 导出虚拟机配置 virsh dumpxml 虚拟机名 vm.xml # 根据配置恢复虚拟机 virsh define vm.xml # 删除虚拟机只删除定义不删磁盘文件 virsh undefine 虚拟机名 # 删除虚拟机包括磁盘 virsh undefine 虚拟机名 --remove-all-storage9.2 调整虚拟机的CPU和内存热调整宿主机资源充裕而虚拟机需要升级时不用关机直接热调整。如果是开机状态应用新配置需要重启虚拟机但不用关宿主机。# 调整CPU核心数最多到宿主机物理核心数 virsh setvcpus 虚拟机名 4 --live # 调整内存大小设置最大可分配内存和当前内存 virsh setmaxmem 虚拟机名 8192 --config virsh setmem 虚拟机名 8192 --live9.3 快照与备份快照功能非常适合在测试环境里反复折腾。给虚拟机打快照用下面的命令# 创建快照 virsh snapshot-create-as 虚拟机名 snapshot-20250101 backup before update # 查看快照列表 virsh snapshot-list 虚拟机名 # 恢复快照 virsh snapshot-revert 虚拟机名 snapshot-20250101 # 删除快照 virsh snapshot-delete 虚拟机名 snapshot-20250101注意快照不是完整备份。快照文件依赖原磁盘原磁盘文件丢失或损坏快照也恢复不了。做重要数据保护还是要做完整的磁盘镜像备份。备份QCOW2格式的虚拟机磁盘最安全的方式是先把虚拟机关机然后用sudo qemu-img convert -O qcow2 /var/lib/libvirt/images/vm.qcow2 /backup/vm-backup.qcow29.4 QCOW2还是RAWKVM虚拟磁盘的格式我只会建议两种QCOW2和RAW。QCOW2支持快照、压缩、延迟分配即按需增长是默认格式。适合日常虚拟机使用。RAW性能略微好一点点但不支持快照并且文件大小直接占满。除非你对性能有极致的极致追求否则我不建议用RAW。日常使用QCOW2就够了。10. ARM架构麒麟系统上的特殊注意事项最后单独用一节来讲ARM架构的问题因为现在大量国产化终端和服务器其实是ARM架构的飞腾、鲲鹏很多人在这个方向踩坑。10.1 镜像架构匹配是第一位在ARM架构上装虚拟机Guest OS的ISO镜像也必须是ARM版的。比如要装Linux就下载对应发行版的arm64/aarch64镜像要装Windows就得用Windows for ARM版。用x86的ISO强行装virt-manager会直接报错或者引导失败。银河麒麟操作系统本身也提供ARM版可以在虚拟机里继续装一个麒麟系统做隔离测试这个是支持良好的。10.2 ARM架构下的KVM模块名ARM平台的KVM模块名一般是kvm上面的modprobe kvm即可没有kvm_intel或者kvm_amd的区分。在ARM服务器上/dev/kvm正常存在就行其他操作跟x86一致。10.3 32位和64位模拟ARM架构的宿主机在默认情况下不能直接模拟x86虚拟机包括32位和64位。如果需要同时跑x86虚拟机只能靠QEMU的TCG模式做纯软件模拟性能会非常差基本不具备实用性。所以做规划时先确认ARM宿主机的虚拟机列表里是否全部都是aarch64的系统。10.4 性能调优的注意点ARM架构上虚拟机的中断处理和I/O路径跟x86有差别建议使用virtio类型的设备和驱动避免用模拟设备。这一点对ARM平台而言尤其重要因为ARM平台用纯模拟设备的开销比x86更大。最后再分享一个实际经验绕了这么一大圈其实我想说一个观点KVM虚拟化在麒麟系统上已经是一个相当成熟、可用的方案性能、功能都不缺。但很多人一开始就卡在环境检查、网络配置这些简单的细节上反而以为麒麟系统装不了KVM或者KVM很垃圾。我个人在实践中的体会是先把宿主机的基础环境弄扎实包括CPU虚拟化确认、内核模块加载、libvirtd服务状态然后再去碰虚拟机的创建和网络配置。整个过程井井有条地推进基本不会出什么大问题。而一旦出了报错不要急着百度复制粘贴先看清楚报错信息里的关键字再对照我这篇文章里的排查路径走一遍大部分坑都能自己找到答案。有需要的时候就把这篇文章当作你的操作手册按步骤来少走弯路。祝大家都能在麒麟系统上顺利跑起自己的虚拟机。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进