1.虚拟机,开机,打开一个记事本程序,随便输入一些字符串,然后给虚拟机做快照,该快照为开机快照。
接着,无论此虚拟机,仍然是开机状态,还是已经被关机,都可以通过该开机快照,直接恢复到之前的开机状态。
所谓的开机状态,指的是,恢复开机快照后,之前打开的记事本程序,以及记事本上随机输入的字符串,仍然还在。
2.但是,目前无论 VMware 还是 KVM ,我都没发现,能够克隆开机状态的虚拟机,并且开机后,会直接还原到克隆时的状态,也就是那个记事本程序 + 随机输入的字符串仍然存在。
虽然目前是能够克隆开机的虚拟机,但克隆完成后,开机,是无法恢复到克隆时的开机状态的,开机后,记事本程序就没了。
3.我觉得,既然 VMware 与 KVM 都支持开机时的完整状态快照,那为什么不能支持开机时的完整状态克隆呢?
1
ltkun 2022-10-02 20:53:04 +08:00 via Android
没有研究过 但是可能是记事本里面的文字属于内存或者临时文件 如果虚拟机也可以克隆内存的话应该就可以做到
|
2
billlee 2022-10-02 21:01:24 +08:00 via Android
KVM 肯定是可以的,把磁盘镜像和内存镜像都复制一份,改下 qemu 命令行参数
|
3
ashong 2022-10-02 21:04:53 +08:00
克隆、快照都不保存内存数据
|
4
detached 2022-10-02 21:08:23 +08:00
肯定是可以的,连 fault- tolerance 都可以做 https://pdos.csail.mit.edu/6.824/papers/vm-ft.pdf ,不存在技术上的难点,读读文档或者问问对面技术人员吧,
|
5
codehz 2022-10-02 21:42:25 +08:00 via iPhone
不仅可以静态克隆,还可以实现运行时 fork 一个运行 mc 服务器的虚拟机
https://codesandbox.io/post/how-we-clone-a-running-vm-in-2-seconds |
6
CEBBCAT 2022-10-02 21:49:17 +08:00
> 通过即时克隆操作可以创建一个新虚拟机用作目标虚拟机。目标虚拟机与源虚拟机具有相同的处理器状态、虚拟设备状态、内存状态和磁盘状态。
https://docs.vmware.com/cn/VMware-vSphere/7.0/com.vmware.vsphere.vm_admin.doc/GUID-853B1E2B-76CE-4240-A654-3806912820EB.html 🤝 |
7
kokutou 2022-10-02 21:56:06 +08:00 via Android
商用的可以,桌面虚拟机不行。。。
比如 vsphere 就是可以的啊 |
8
fisherwei 2022-10-02 21:58:00 +08:00
个人认为,技术上是小问题,至少 qemu 是可以完全实现的,kvm 不好说。
但是,大问题是,新的虚拟机开启之后会与旧机器之间发生网络冲突。如果是故障转移这个问题不大,但是新开第二个虚拟机且两台机器共存的话,至少有一台机器可能需要重新获取网络地址,同时重启 /重载上面的应用服务,还会导致原机器的网络也在一段时间内发生故障。 |
9
Admstor 2022-10-02 22:08:15 +08:00
首先这不是一个技术难题
实际上 VMware 的 vMotion 本质就是将当前 VM 的内存状态包括网络链接一并迁移(需要一定的硬件条件支持) 但是这里是迁移而非复制,主要原因就是,如果存在两个包括内存状态都一样的 VM,就会存在各种冲突了 实际业务中,并不会有楼主这种克隆内存,存在 2 个一模一样的 VM 的需求,因为高可用向下由硬件+虚拟化层提供,向上由网络和软件负责,中间操作系统这一级别不负责高可用了,自然也没有针对"存在两个我"这种情况做出对应,何况操作系统也无法影响所有应用程序,一样会产生各种冲突 楼主如果有这种需求,可以当前状态做个快照,然后关机后直接复制 VM 的文件,再开机就可以间接实现你要的 2 个内存状态一样的 VM 了 5#那个实际也是先快照在复制的操作,其他细节没提,但是我相信他们一定会对包括 MAC 地址等进行自动化的修改操作 比如至少登录界面的服务器名字就变了 起码我觉得这算不上严格意义的 bit by bit 克隆了 |
10
documentzhangx66 OP @ltkun
@ashong @fisherwei @kokutou 1.VMware 、KVM 等主流虚拟机,都支持给开机虚拟机进行快照,这种开机快照能保存内存状态。 2.我按照 2 楼老哥的方法,已经实现了克隆虚拟机 + 克隆该虚拟机的开机快照,我验证了开机快照的恢复,能够正确恢复到记事本被打开 + 保留随机字符串的状态。 3.测试环境是 PVE ,简单介绍下,PVE 是基于 Debian OS 的虚拟化管理器,虚拟机用户态工具是 qemu ( qm ),虚拟机内核态用的是 kvm 。 4.这事其实就是 VMware 与 PVE 等管理工具偷懒了,虚拟机克隆时,没克隆快照文件。我还去各种国产超融合虚拟化软件里看了以下,虚拟机克隆,也没克隆快照。大家都偷懒了。 5.感谢: @billlee @detached @codehz @CEBBCAT |
11
xixiv5 2022-10-02 22:10:54 +08:00 via iPhone
我用 hyper-v 的快照是可以的,还原后什么程序状态一起还原了
|
12
kokutou 2022-10-02 22:49:09 +08:00 via Android
@documentzhangx66
这种快照,你换个电脑就开不了机 |
13
documentzhangx66 OP |
14
flynaj 2022-10-03 01:37:54 +08:00 via Android
这个功能所有虚拟机软件都支持,VirtualBox 完全可以,还可以多个分支。原理很简单就是把内存保存到物理文件里面。
|
15
dangyuluo 2022-10-03 03:03:35 +08:00
我怎么记得 VMWare Workstation pro 就可以呢?
|
16
abc8678 2022-10-03 13:09:02 +08:00 via Android
我一般挂起一下,然后把目录重新拷一份
|