qemu封装虚拟机有哪些步骤,虚拟机封装怎么做?

qemu封装虚拟机的核心就两步:先用qemu-img创建磁盘镜像,再通过qemu-system-x86_64启动镜像并安装系统,全程由命令行驱动,按下面流程操作即可跑通。

qemu 创建虚拟机步骤:从磁盘镜像到系统安装

很多新手第一次接触qemu,会被一堆陌生的命令吓到,其实把“封装虚拟机”这件事拆开看,本质上就是准备一块虚拟硬盘,然后把操作系统装进去,qemu只是把“创建硬盘”和“开机”分成了两个工具来用,搞懂这一点,后面的操作就顺了。

QEMU快速上手教程:原理讲解、命令行参数、系统安装、后续拓展
加载中
QEMU快速上手教程:原理讲解、命令行参数、系统安装、后续拓展

先分清 qemu-img 和 qemu-system-x86_64

qemu全家桶里,你只需要先记住两个命令:

  • qemu-img:负责创建、转换、压缩磁盘镜像文件,相当于虚拟硬盘的管理工具。
  • qemu-system-x86_64:负责启动虚拟机,模拟CPU、内存、网卡、显卡等硬件。

封装虚拟机时,你先用qemu-img造出硬盘,再用qemu-system-x86_64启动这台“没有系统的裸机”,最后像装实体机一样装入操作系统。

用 qemu-img 创建虚拟机磁盘镜像

打开终端,进入你想存放虚拟机文件的目录,执行下面这条命令:

qemu-img create -f qcow2 ubuntu.qcow2 30G

这条命令的意思是:创建一个名为ubuntu.qcow2的磁盘镜像,格式为qcow2,容量上限30GB

这里有一个新手容易误解的地方:qcow2格式的镜像文件一开始很小,只有几百KB,它会随着虚拟机里数据的增加而逐步增大,直到达到30GB上限,这种做法省空间,也让镜像文件便于复制和迁移,是绝大多数场景下的首选。

如果你更看重性能,不在乎空间占用,也可以创建raw格式的镜像:

qemu-img create -f raw debian.raw 20G

raw格式会一次性占满20GB空间,但读写时少了一层转换,磁盘I/O稍快一些,两种格式没有绝对的好坏,我给你的建议是:日常实验和学习用qcow2,跑数据库、编译任务等磁盘密集型负载可以考虑raw

启动安装介质,把系统封装进镜像

磁盘镜像造好后,接下来把它当成一块空硬盘,用系统ISO镜像引导开机,以安装Ubuntu Server为例:

qemu-system-x86_64 
  -m 2048 
  -smp 2 
  -hda ubuntu.qcow2 
  -cdrom ubuntu-22.04-server-amd64.iso 
  -boot d

各参数的含义是:

  • -m 2048:分配2GB内存。
  • -smp 2:分配2个CPU核心。
  • -hda ubuntu.qcow2:把刚才创建的镜像挂载为第一块硬盘。
  • -cdrom ubuntu.iso:把ISO镜像挂载为光驱。
  • -boot d:指定从光驱启动。

执行后,会弹出一个图形窗口,显示Ubuntu的安装界面,跟着向导完成系统安装,整个过程和物理机装系统几乎一致。安装完成后,重启虚拟机时会发现再次进入了安装界面,这是因为光驱还在优先引导

qemu封装虚拟机有哪些步骤,虚拟机封装怎么做?

,这时把命令里的-boot d改成-boot c,让虚拟机从硬盘启动即可。

在安装过程中,qemu会默认开启一个VNC服务,如果你在远程服务器上执行上述命令,可以通过VNC客户端连接看到安装界面,这一点在无显示器环境下使用qemu时特别方便。

qemu 和 virtualbox 的区别是什么

新手经常问的一个问题是:既然VirtualBox有图形界面,点几下鼠标就能建好虚拟机,为什么还要折腾qemu的命令行?这个问题问到了点子上,我直接给你对比结论。

对比项 qemu VirtualBox
界面 默认命令行,可选图形管理工具 完整图形界面,上手快
性能 配合KVM可接近原生性能 日常使用足够,重负载略逊
网络模式 支持桥接、用户模式、VDE等 NAT、桥接、内部网络
快照能力 通过qemu-img或QMP支持 界面一键快照,更直观
适用场景 服务器、嵌入式、云镜像定制 桌面虚拟机、跨平台测试

qemu的精髓不在方便,而在灵活和贴近底层,尤其当你需要在服务器上创建虚拟机、定制云镜像,或者调试内核时,VirtualBox的图形界面反而会成为拖累,行业共识认为,qemu加上KVM是Linux服务器上虚拟化的首选组合,而VirtualBox更适合个人桌面用户快速开一台测试虚拟机,两者的定位不完全重合,按你的使用场景选就好。

我见过不少开发者,最初从VirtualBox入手学会了虚拟机的基本概念,后来转向qemu做自动化打包,这个路径很自然,如果你只是需要跑个Windows软件或体验新系统,用VirtualBox更省心;如果你要把装好的系统镜像分发给别人、想写脚本批量生成虚拟机,或者折腾不同架构的模拟,那qemu会越用越顺手,近年来的趋势是,越来越多云原生开发者在本地用qemu做镜像构建,因为它能直接生成云平台通用的磁盘格式。

封装完成后如何调整虚拟机资源

虚拟机装好系统,运行一段时间后,你可能会发现内存不够用,磁盘空间也快满了,虚拟机的好处就是资源可以随时调整,不像物理机那样拆机换硬件,qemu的资源调整分两种情况。

调整内存和CPU

内存和CPU的调整最简单,直接在启动命令里改参数就行,不需要动磁盘镜像:

qemu-system-x86_64 
  -m 4096 
  -smp 4 
  -hda ubuntu.qcow2 
  -accel kvm

这条命令把内存加到4GB,CPU核心加到4个,并开启了KVM硬件加速。加了-accel kvm后,虚拟机的性能会大幅提升,因为qemu会把大部分虚拟机指令直接交给CPU的虚拟化硬件去执行,不再逐条模拟,执行前先确认你的CPU支持虚拟化,用

qemu封装虚拟机有哪些步骤,虚拟机封装怎么做?

ls -l /dev/kvm检查,存在这个设备文件就可以用KVM。

改内存和CPU不影响磁盘里的数据,随时可以改,也随时可以改回来。

扩容磁盘镜像

磁盘空间不够用时,情况稍微复杂一些,qcow2镜像虽然初始体积小,但设定的上限在那里,比如你创建时设的30GB,用完了就得扩容。

第一步,扩大镜像本身:

qemu-img resize ubuntu.qcow2 50G

这一步只是把镜像容量上限从30GB改为50GB,系统内部还没有感知到新空间,第二步,进入虚拟机,用分区工具把新增的空间分配给根分区。

  • ext4文件系统:用resize2fs /dev/sda1合并新空间。
  • XFS文件系统:用xfs_growfs /扩展。
  • LVM逻辑卷:先用lvextend扩展逻辑卷,再执行上述文件系统扩容命令。

这套操作和物理机上给磁盘扩容的步骤完全一样,网上有大量详细教程,跟着做就行。

压缩qcow2镜像体积

虚拟机用久了,qcow2镜像会越来越大,即使你删掉了里面的文件,镜像体积也不会自动缩小,如果你打算把这台虚拟机拷贝给别人,或者上传到服务器,提前瘦身很有必要。

先启动虚拟机,用fstrim -av命令释放未使用的空间,然后关机,接着在宿主机上执行:

qemu-img convert -O qcow2 ubuntu.qcow2 ubuntu-compact.qcow2

convert命令会重新创建一个干净的镜像文件,只保留实际有数据的部分,压缩完成后,新的镜像可能比原来小不少,对比一下体积,确认无误再把旧镜像删掉即可,据QEMU官方文档说明,convert还能把其他格式的镜像统一转换成qcow2,也支持raw转qcow2,是镜像格式迁移的标准工具。

qemu 虚拟机网络配置怎么选

虚拟机装好了,资源也够用,接下来就是让它上网,qemu的网络配置有几种模式,新手不需要全弄懂,先掌握两种最常用的即可。

用户模式网络

默认情况下,不加任何网络参数,qemu会自动创建一个用户模式的网络(user mode),虚拟机可以通过NAT方式访问外网,宿主机也能访问虚拟机,但外部设备无法主动连接到虚拟机内部

显式指定用户模式网络的写法:

-netdev user,id=net0 
-device virtio-net-pci,netdev=net0

这里用virtio-net-pci虚拟网卡,相比qemu默认模拟的e1000网卡,virtio半虚拟化网卡性能更好,吞吐量更接近物理网卡,大多数现代Linux发行版都自带virtio驱动,Windows系统可能需要额外安装驱动。

用户模式网络适合做开发和测试,比如果你要在虚拟机里装一个Nginx,然后在宿主机上通过localhost端口访问,qemu还支持通过hostfwd参数做端口转发:

qemu封装虚拟机有哪些步骤,虚拟机封装怎么做?

-netdev user,id=net0,hostfwd=tcp::8080-:80 -device virtio-net-pci,netdev=net0

这条命令把宿主机的8080端口转发到虚拟机的80端口,外部访问宿主机8080端口就等同于访问虚拟机里的Web服务。

桥接网络模式

用户模式网络有个先天限制,外部设备无法直接与虚拟机通信,如果你在虚拟机里搭建了一个游戏服务器,想让局域网里的朋友直接连进来,桥接模式才是正解。

qemu的桥接模式需要宿主机先建立一个网桥,然后把物理网卡桥接到这个网桥上,常见做法是用ip命令快速创建一个桥:

sudo ip link add br0 type bridge
sudo ip link set br0 up

然后给你的物理网卡(比如eth0)设置IP,并把它加入桥:

sudo ip addr add 192.168.1.100/24 dev br0
sudo ip link set eth0 master br0

最后启动qemu时,使用br0作为虚拟机的网桥:

-netdev bridge,id=net0,br=br0 
-device virtio-net-pci,netdev=net0

桥接模式下的虚拟机,会像一台独立的物理机一样出现在局域网中,拥有自己的IP地址,可以直接被其他设备访问,不过这种配置依赖你的网络环境,如果宿主机用的是无线网卡,桥接通常会有兼容性问题,这是qemu的已知局限。

Q&A:qemu 封装虚拟机常见问题解答

问:qemu-img create时选raw还是qcow2,哪个更适合新手?

新手建议首选qcow2,理由是它的按需分配特性让磁盘占用更小,支持快照、压缩和加密功能,而且通过qemu-img convert可以随时转换为raw或其他格式,raw格式虽然性能略好,但不支持快照,也不节省空间,遇到需要回滚系统状态的场景时非常不便,等你把qcow2用熟了,再根据具体场景评估是否需要换成raw。

问:启动qemu后窗口黑屏,什么都看不到,是什么原因?

最常见的原因是KVM加速没有启用,或者CPU不支持嵌套虚拟化,检查/dev/kvm是否存在,确认CPU的VT-x或AMD-V功能已开启,另一个常见情况是ISO文件损坏或下载不完整,导致引导加载器无法读取,可以先用qemu-img info ubuntu.qcow2确认镜像文件完整,然后排除法检查:先用-m 512最小配置启动,逐步排除参数冲突。

问:qemu命令行太长,每次启动都要输入一大串参数,有没有简化办法?

有,qemu支持把启动参数写入脚本文件,例如创建一个start.sh,用变量或直接拼接命令的方式管理参数,更正规的做法是编写systemd service文件,把qemu启动命令注册为系统服务,实现开机自启和异常退出后自动重启,如果你需要管理多台qemu虚拟机,可以考虑安装libvirt+virt-manager,它会提供一套独立的命令和图形界面来管理qemu实例,qemu仍然在底层工作,但你可以不用再面对冗长的命令行了。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/646167.html

(0)
网络域名到底怎么查询,域名注册信息在哪里看
上一篇 2026年9月12日 09:16
域名解除绑定步骤有哪些,解绑后多久能生效?
下一篇 2026年9月12日 09:17

相关推荐

  • 虚拟机重启超慢怎么办,虚拟机启动卡顿如何解决?

    虚拟机重启慢,十有八九是磁盘I/O瓶颈或CPU/内存配置过剩所致,优先调整虚拟硬件资源和磁盘类型即可见效,先别急着重装系统,按照下文的排查顺序走一遍,多数情况下能明显改善,虚拟机启动卡顿的原因与解决清单虚拟机启动慢不是单一原因造成的,但磁盘I/O等待和虚拟CPU过度分配是两个最常见的问题来源,业内专家指出,超过……

    2026年8月31日
    300
  • 软件开发职位有哪些?软件开发招聘信息哪里找?

    在数字化转型的浪潮中,企业对技术人才的争夺已进入白热化阶段,软件开发 职位已不再仅仅是编写代码的技术岗,而是演变为驱动业务创新、保障系统稳定性与提升用户体验的核心战略资产,企业若想在激烈的市场竞争中立于不败之地,必须重新审视这一职位的定义,构建具备全栈思维、工程化能力与业务洞察力的高效研发团队,核心结论:现代软……

    2026年3月22日
    9800
  • dpdk开发怎么做,dpdk开发就业前景如何

    DPDK 开发通过内核旁路技术彻底解决了传统网络数据包处理的高延迟与低吞吐瓶颈,是实现高性能网络应用的核心技术路径,在云计算、边缘计算及高频交易等场景下,数据面处理能力直接决定了业务的上限,而 DPDK 通过独占 CPU 资源、轮询模式驱动(PMD)以及巨大的页表内存管理,将数据包处理性能提升至线速级别,是构建……

    2026年3月18日
    11700
  • FTP服务器上的文件如何快速复制,怎么操作

    从FTP服务器复制文件,最直接的方法是通过FTP客户端软件(如FileZilla)连接服务器后,像操作本地文件一样拖拽下载,如果你习惯命令行,可以用 get 命令下载单个文件,用 mget 批量复制;如果只是临时应急,浏览器地址栏输入 ftp:// 地址也能直接保存文件,选择哪种方式,取决于你的技术背景和具体需……

    2026年7月22日
    1300
  • 外贸网站Bing收录提交失败怎么办?如何快速提升Bing收录

    外贸网站Bing收录提交在百度SEO优化体系中,Bing搜索引擎作为微软旗下的核心产品,不仅是全球第二大搜索引擎,更是外贸企业不可忽视的流量入口,对于面向北美、欧洲及大洋洲市场的跨境电商而言,Bing的收录质量直接决定了海外获客的效率,许多外贸站长常面临“网站上线后Bing收录缓慢”、“新页面长期不被抓取”的痛……

    2026年7月8日
    18300
  • 共享镜像为空怎么办?共享镜像为空如何解决

    共享镜像为空在云计算的底层逻辑中,镜像(Image) 是服务器实例的基石,它包含了操作系统、预装软件、配置环境以及用户数据,当我们在控制台看到“共享镜像为空”或无法加载共享镜像时,这不仅仅是一个技术报错,更是对云服务商底层架构稳定性、权限管理体系以及数据一致性校验机制的一次深度考验,对于企业级用户而言,服务器测……

    2026年6月21日
    2710
  • Apache负载均衡是什么?Apache负载均衡配置方法

    关于apache负载均衡介绍在构建高可用、高并发的Web服务架构时,Apache HTTP Server 依然是许多企业级应用的首选后端服务器,单台Apache实例受限于CPU、内存及网络带宽,难以应对突发流量或大规模并发请求,引入负载均衡(Load Balancing)机制成为突破性能瓶颈的关键,本文将深入解……

    2026年6月16日
    3200
  • 仙女座研究开发怎么样?仙女座研究开发招聘信息汇总

    仙女座研究 开发项目正以前所未有的速度重塑深空探测与数据处理的边界,其核心价值在于通过高度集成的模块化架构,实现了跨星系尺度数据的实时吞吐与智能分析,这一技术突破不仅标志着天体物理研究进入了“大数据即时反馈”的新纪元,更为商业航天、深空通信以及高能物理实验提供了可复用的底层技术栈,通过构建高稳定性的算法模型与硬……

    2026年3月12日
    13100
  • 73445易记域名如何注册?,有哪些注意事项呢?

    73445作为5位纯数字域名,注册方式和普通域名完全一样,在任意一家主流域名注册商搜索“73445”即可查询并完成注册;它的核心用途是短链接跳转、地方服务入口和品牌简称展示,73445是什么类型的域名?为什么说它易记73445属于5位纯数字域名,数字域名本身没有语言含义,但它只包含“7、3、4、4、5”五个字符……

    2026年9月11日
    100
  • 加拿大、美国RightServersVPS测评,实测体验与数据对比,RightServersVPS怎么样?

    加拿大、美国RightServersVPS测评:实测体验与数据对比在虚拟化服务器(VPS)市场日益饱和的今天,选择一家能够提供稳定性能、优质网络架构以及合理定价的提供商显得尤为重要,RightServers 作为一个近年来在技术社区中逐渐崭露头角的托管服务商,主打高性价比与多节点部署,本次测评将深入剖析其位于加……

    程序开发 2026年5月25日
    5800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注