qemu
QEMU(Quick EMUlator)是一款开源的虚拟化软件,能够模拟多种硬件平台,并支持多种虚拟化技术,如 KVM(Kernel-based Virtual Machine)加速。QEMU 能够在多个操作系统上运行,包括 Windows、Linux 和 macOS。
- 下载 QEMU: 访问 QEMU 官方网站或通过包管理器下载适用于 Windows 的 QEMU 版本。
- 安装 QEMU: 解压下载的文件到您选择的目录,并确保路径添加到系统的环境变量中。(配置好变量路径方便,手动进入路径也可)
- 准备好一个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: 磁盘镜像文件的格式,例如
qcow2
、raw
等。 - 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.img
是 raw
格式,使用以下命令进行转换:
qemu-img convert -f raw -O vmdk source.img target.vmdk
参数解释:
-f raw
:指定输入文件的格式,这里假设输入文件是raw
格式。如果输入文件是其他格式,如qcow2
,可以相应地更改此参数。-O vmdk
:指定输出文件的格式为vmdk
。source.img
:输入文件的名称。target.vmdk
:输出文件的名称。