虚拟机文件模式迁移

合并快照(总体不推荐)

背景

​ 为什么要合并镜像?因为 Ubuntu20-VDI_5_inc_2、Ubuntu20-VDI_5_inc_1、Ubuntu20-VDI_5 ,快照和基础镜像 一旦多起来了,使用中间的某一个快照 Ubuntu20-VDI_5_inc_2复制,比如复制成 Ubuntu20-VDI_6,实际上 还是关联着 Ubuntu20-VDI_5 和 Ubuntu20-VDI_5_inc_1,一旦Ubuntu20-VDI_5删除了或者是改动了会影响到Ubuntu20-VDI_6,为了避免出现这样的情况,所以我们需要先给Ubuntu20-VDI_5来个合并快照。

​ 有时候可以一键克隆,但是从直接操作文件角度看,更加有普适性。因此我们也使用快照合并的方法。

​ 但是依然不推荐 合并快照,因为我实践的结果是 大量东西像驱动和cuda等都 需要重新安装,所以以后最好不要做太多快照。

实操

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 方法一(不推荐):

# 通过快照确认文件格式
qemu-img info Ubuntu20-VDI_4_inc_1

# 如果你有多个增量文件并且文件正常,你可以尝试合并这些文件。比如,如果你有 Ubuntu20-VDI_4_inc_1, Ubuntu20-VDI_4_inc_2, Ubuntu20-VDI_4_inc_3,按顺序合并它们。
qemu-img commit -f vdi Ubuntu20-VDI_4_inc_1
qemu-img commit -f vdi Ubuntu20-VDI_4_inc_2
qemu-img commit -f vdi Ubuntu20-VDI_4_inc_3
qemu-img commit -f qcow2 Ubuntu20-VDI_4_inc_1 # qcow2 vdi 是格式的不同。

# 执行 qemu-img commit 命令后,增量快照的数据已经合并到基础镜像中,Ubuntu20-VDI_4_inc_1 文件就不再需要了。

# 检查基础镜像的状态
qemu-img info Ubuntu20-VDI_4

# 尝试删除快照 VGPU。
qemu-img snapshot -d VGPU Ubuntu20-VDI_4

# 确认快照是否已经被删除
qemu-img snapshot -l Ubuntu20-VDI_4

# 方法二(推荐):

# 如果你想合并增量镜像和基础镜像,并创建一个新的独立镜像,可以使用以下命令
qemu-img convert -O qcow2 Ubuntu20-VDI_4 Ubuntu20-VDI_merged.qcow2