windwos上通过qemu直接开启img、qcow2等格式磁盘镜像(无需转vmdk)

简介: QEMU 是一款开源虚拟化软件,支持多种硬件平台和虚拟化技术,如 KVM 加速。它可以在 Windows、Linux 和 macOS 上运行。本文介绍了 QEMU 的下载、安装、配置虚拟网卡、启动虚拟机、网络通信及快照管理等步骤。通过 QEMU,用户可以轻松创建和管理虚拟机,实现高效的开发和测试环境。

qemu

QEMU(Quick EMUlator)是一款开源的虚拟化软件,能够模拟多种硬件平台,并支持多种虚拟化技术,如 KVM(Kernel-based Virtual Machine)加速。QEMU 能够在多个操作系统上运行,包括 Windows、Linux 和 macOS。

  1. 下载 QEMU: 访问 QEMU 官方网站或通过包管理器下载适用于 Windows 的 QEMU 版本。

官网地址:https://www.qemu.org/

  1. 安装 QEMU: 解压下载的文件到您选择的目录,并确保路径添加到系统的环境变量中。(配置好变量路径方便,手动进入路径也可)
  2. 准备好一个x86的镜像或者img的镜像,格式可以为qcow2

QEMU 支持多种磁盘映像格式,包括 raw、qcow2、qed、vdi、vhd、vmdk、cow、parallels 和 dmg 等。

安装虚拟网卡

这里我们选择openvpn

官方地址:https://swupdate.openvpn.net/downloads/connect/openvpn-connect-3.3.6.2752_signed.msi

双击下载下来的openvpn-connect-3.3.6.2752_signed.msi软件,和安装其它软件一样,一步步安装即可。

注意:不一定非得安装这个软件,能创建虚拟网卡就行如win+R "hdwwiz"添加硬件,找到合适的网卡我个人觉得理论可行(此法慎用,当时我安装后电脑提示过时硬件一直引导不进系统修了一下午电脑)

红框内所示的网卡是新添加的,安装完 OpenVPN 后名称可能会有所不同只需关注小红框中的网卡类型是否为“TAP-Windows Adapter”,找到这种类型的网卡即可确认这是新添加的网卡。此时,该网卡的连接状态会显示为未连接状态,无需担心,启动虚拟机后连接状态会变为正常。

这里修改为了tap0,其它的名称也可以,建议还是修改为tapXX这种形式,最好不要用中文名称。

再选择你需要桥接到的网卡创建新网卡的网桥

开机

首先查看磁盘镜像文件的详细信息,重点关注file format,以下示例为qcow2

c:\>qemu-img info G:\i\Server2228.img
image: G:\i\Server2228.img
file format: qcow2
virtual size: 60 GiB (64424509440 bytes)
disk size: 2.14 GiB
cluster_size: 65536
Format specific information:
    compat: 0.10
    refcount bits: 16

输出解释

  • image: 磁盘镜像文件的名称。
  • file format: 磁盘镜像文件的格式,例如 qcow2raw 等。
  • virtual size: 磁盘镜像的虚拟大小,即分配给虚拟机的最大空间。
  • disk size: 磁盘镜像当前实际占用的空间。
  • cluster_size: 对于 qcow2 格式,这是集群的大小。
  • Format specific information: 特定格式的详细信息,如兼容性、延迟引用计数等。

开机

c:\>qemu-system-x86_64 -drive file=G:\i\Server2228.img,format=qcow2 -vnc :0 -net nic -net tap,ifname=tap0
参数解释
  • 启动 QEMU x86_64 架构的虚拟机。
  • 使用 G:\i\Server2228.img 作为磁盘镜像文件,格式为 qcow2
  • 启用 VNC 服务器,显示编号为 :0
  • 创建一个默认的虚拟网络接口卡。
  • 使用宿主机上的 tap0 接口进行网络通信。

注意:可通过netstat -ano查看开启的vnc端口,如无特殊设置默认为5900

通过vnc软件连接

成功连接

通信

共享了网络后,tap0网卡的ip地址变成了192.168.137.1,这个地址即是虚拟机系统中网络的网关地址,掩码同理

这边手动设置个192.168.137.10,可以看到成功通到了外网

-bash-4.2# ifconfig ens3 192.168.137.10 netmask 255.255.255.0
-bash-4.2# route add default gw 192.168.137.1
-bash-4.2# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.137.10/24 brd 192.168.137.255 scope global ens3
       valid_lft forever preferred_lft forever
-bash-4.2# ping www.baidu.com
PING www.a.shifen.com (153.3.238.102) 56(84) bytes of data.
64 bytes from 153.3.238.102 (153.3.238.102): icmp_seq=1 ttl=50 time=19.4 ms
64 bytes from 153.3.238.102 (153.3.238.102): icmp_seq=2 ttl=50 time=28.9 ms
64 bytes from 153.3.238.102 (153.3.238.102): icmp_seq=3 ttl=50 time=23.3 ms

快照

这里需要注意我们连接后的所有操作都将直接写入虚拟磁盘文件,如果需要做一些敏感操作这里提供两个思路

1. 备份

直接copy一份源文件作备份,因为其他硬件皆为虚拟化占用也不会太大,这样可无需学习qemu-img 工具建立快照

等流程,简单无脑。

2. 快照

如果想要优雅的实现我们熟悉的快照功能,可利用qemu-img实现快照功能

创建快照
qemu-img snapshot -c my_snapsho G:\i\Server2228.img

这里的 -c 选项表示创建快照,my_snapshot 是你给快照起的名字。

列出快照
c:\>qemu-img snapshot -l G:\i\Server2228.img
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         my_snapsho              0 B 2024-08-20 22:19:44   00:00:00.000
恢复快照
c:\>qemu-img snapshot -a my_snapsho G:\i\Server2228.img

这里的 -a 选项表示应用(恢复)快照。

删除快照
c:\>qemu-img snapshot -d my_snapsho G:\i\Server2228.img

这里的 -d 选项表示删除快照。

注意事项
  • 快照功能依赖于磁盘镜像格式,只有支持快照的格式(如 qcow2)才能使用快照功能。
  • 快照会占用额外的存储空间,因为它们实际上是存储在磁盘镜像文件中的增量数据。
  • 在生产环境中使用快照时,应谨慎操作,确保数据的一致性和完整性。

附:

如果觉得qemu命令难记,也可转成熟悉的vmdk格式,通过Vmware管理,可享受 vmnet网络、vmtools以及快照等功能

这里提供功能转换的命令

首先通过info命令查看源文件的格式,我们这里假设有一个名source.img的磁盘文件

qemu-img info source.img

假设 source.imgraw 格式,使用以下命令进行转换:

qemu-img convert -f raw -O vmdk source.img target.vmdk

参数解释:

  • -f raw:指定输入文件的格式,这里假设输入文件是 raw 格式。如果输入文件是其他格式,如 qcow2,可以相应地更改此参数。
  • -O vmdk:指定输出文件的格式为 vmdk
  • source.img:输入文件的名称。
  • target.vmdk:输出文件的名称。
相关文章
|
2天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
4天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1540 5
|
1月前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
7天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
585 22
|
4天前
|
存储 SQL 关系型数据库
彻底搞懂InnoDB的MVCC多版本并发控制
本文详细介绍了InnoDB存储引擎中的两种并发控制方法:MVCC(多版本并发控制)和LBCC(基于锁的并发控制)。MVCC通过记录版本信息和使用快照读取机制,实现了高并发下的读写操作,而LBCC则通过加锁机制控制并发访问。文章深入探讨了MVCC的工作原理,包括插入、删除、修改流程及查询过程中的快照读取机制。通过多个案例演示了不同隔离级别下MVCC的具体表现,并解释了事务ID的分配和管理方式。最后,对比了四种隔离级别的性能特点,帮助读者理解如何根据具体需求选择合适的隔离级别以优化数据库性能。
201 3
|
10天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
11天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
581 5
|
23天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
7天前
|
XML 安全 Java
【Maven】依赖管理,Maven仓库,Maven核心功能
【Maven】依赖管理,Maven仓库,Maven核心功能
235 3
|
9天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
327 2