目前主流虚拟化为啥不支持克隆完整开机状态的虚拟机? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
documentzhangx66
V2EX    Linux

目前主流虚拟化为啥不支持克隆完整开机状态的虚拟机?

  •  
  •   documentzhangx66 2022-10-02 20:45:12 +08:00 4122 次点击
    这是一个创建于 1181 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1.虚拟机,开机,打开一个记事本程序,随便输入一些字符串,然后给虚拟机做快照,该快照为开机快照。

    接着,无论此虚拟机,仍然是开机状态,还是已经被关机,都可以通过该开机快照,直接恢复到之前的开机状态。

    所谓的开机状态,指的是,恢复开机快照后,之前打开的记事本程序,以及记事本上随机输入的字符串,仍然还在。

    2.但是,目前无论 VMware 还是 KVM ,我都没发现,能够克隆开机状态的虚拟机,并且开机后,会直接还原到克隆时的状态,也就是那个记事本程序 + 随机输入的字符串仍然存在。

    虽然目前是能够克隆开机的虚拟机,但克隆完成后,开机,是无法恢复到克隆时的开机状态的,开机后,记事本程序就没了。

    3.我觉得,既然 VMware 与 KVM 都支持开机时的完整状态快照,那为什么不能支持开机时的完整状态克隆呢?

    第 1 条附言    2022-10-02 22:01:17 +08:00
    完事了,按照 2 楼 老哥的建议,我把虚拟机 1 的快照文件复制出来,改到虚拟机 2 的配置文件里,实现了快照的复制。
    16 条回复    2022-10-03 13:09:02 +08:00
    ltkun
        1
    ltkun  
       2022-10-02 20:53:04 +08:00 via Android
    没有研究过 但是可能是记事本里面的文字属于内存或者临时文件 如果虚拟机也可以克隆内存的话应该就可以做到
    billlee
        2
    billlee  
       2022-10-02 21:01:24 +08:00 via Android
    KVM 肯定是可以的,把磁盘镜像和内存镜像都复制一份,改下 qemu 命令行参数
    ashong
        3
    ashong  
       2022-10-02 21:04:53 +08:00
    克隆、快照都不保存内存数据
    detached
        4
    detached  
       2022-10-02 21:08:23 +08:00
    肯定是可以的,连 fault- tolerance 都可以做 https://pdos.csail.mit.edu/6.824/papers/vm-ft.pdf ,不存在技术上的难点,读读文档或者问问对面技术人员吧,
    codehz
        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
    CEBBCAT
        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
    kokutou
        7
    kokutou  
       2022-10-02 21:56:06 +08:00 via Android
    商用的可以,桌面虚拟机不行。。。

    比如 vsphere 就是可以的啊
    fisherwei
        8
    fisherwei  
       2022-10-02 21:58:00 +08:00
    个人认为,技术上是小问题,至少 qemu 是可以完全实现的,kvm 不好说。

    但是,大问题是,新的虚拟机开启之后会与旧机器之间发生网络冲突。如果是故障转移这个问题不大,但是新开第二个虚拟机且两台机器共存的话,至少有一台机器可能需要重新获取网络地址,同时重启 /重载上面的应用服务,还会导致原机器的网络也在一段时间内发生故障。
    Admstor
        9
    Admstor  
       2022-10-02 22:08:15 +08:00
    首先这不是一个技术难题

    实际上 VMware 的 vMotion 本质就是将当前 VM 的内存状态包括网络链接一并迁移(需要一定的硬件条件支持)

    但是这里是迁移而非复制,主要原因就是,如果存在两个包括内存状态都一样的 VM,就会存在各种冲突了

    实际业务中,并不会有楼主这种克隆内存,存在 2 个一模一样的 VM 的需求,因为高可用向下由硬件+虚拟化层提供,向上由网络和软件负责,中间操作系统这一级别不负责高可用了,自然也没有针对"存在两个我"这种情况做出对应,何况操作系统也无法影响所有应用程序,一样会产生各种冲突

    楼主如果有这种需求,可以当前状态做个快照,然后关机后直接复制 VM 的文件,再开机就可以间接实现你要的 2 个内存状态一样的 VM 了

    5#那个实际也是先快照在复制的操作,其他细节没提,但是我相信他们一定会对包括 MAC 地址等进行自动化的修改操作
    比如至少登录界面的服务器名字就变了
    起码我觉得这算不上严格意义的 bit by bit 克隆了
    documentzhangx66
        10
    documentzhangx66  
    OP
       2022-10-02 22:09:18 +08:00
    @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
    xixiv5
        11
    xixiv5  
       2022-10-02 22:10:54 +08:00 via iPhone
    我用 hyper-v 的快照是可以的,还原后什么程序状态一起还原了
    kokutou
        12
    kokutou  
       2022-10-02 22:49:09 +08:00 via Android
    @documentzhangx66
    这种快照,你换个电脑就开不了机
    documentzhangx66
        13
    documentzhangx66  
    OP
       2022-10-03 00:07:34 +08:00
    @kokutou

    不会的,这是虚拟化。

    建议详细了解一下虚拟化原理。
    flynaj
        14
    flynaj  
       2022-10-03 01:37:54 +08:00 via Android
    这个功能所有虚拟机软件都支持,VirtualBox 完全可以,还可以多个分支。原理很简单就是把内存保存到物理文件里面。
    dangyuluo
        15
    dangyuluo  
       2022-10-03 03:03:35 +08:00
    我怎么记得 VMWare Workstation pro 就可以呢?
    abc8678
        16
    abc8678  
       2022-10-03 13:09:02 +08:00 via Android
    我一般挂起一下,然后把目录重新拷一份
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2609 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 01:49 PVG 09:49 LAX 17:49 JFK 20:49
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86