大概是没法重现的问题: VBox 折腾 VHD 时出现数据损坏和虚拟机启动时崩溃问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
acess
V2EX    VirtualBox

大概是没法重现的问题: VBox 折腾 VHD 时出现数据损坏和虚拟机启动时崩溃问题

  •  
  •   acess 2018-08-20 07:05:05 +08:00 4665 次点击
    这是一个创建于 2662 天前的主题,其中的信息可能已经有所发展或是发生改变。
    div class="cell">
    具体折腾操作过程我自己也不记得了,再加上 LZ 用了比较不正常的东西……所以问题很可能是重现不了了。

    宿主 Win10 x64 1803,VirtualBox 5.2.16 。
    (还用了 VBoxHardenedLoader 来避免虚拟机检测,为了这个,宿主机还用 UPGDSED 关掉了 DSE 和 PatchGuard )
    虚拟机用的是 Win7 x64,虚拟磁盘用的是微软的 VHD 格式,而不是 VBox 原生的 VDI 格式。
    因为没装虚拟机附加组件,不方便拷文件,就用了一种蛋疼的办法:
    首先让虚拟机正常关机,然后在宿主机上双击挂载 Snapshots 里的 VHD,挂载完就可以执行拷进 /拷出文件,以及其他操作(比如先用 sdelete 把虚拟盘的可用空间清零,再把 VHD 压缩)。操作完后右键卸载 VHD,就可以再启动虚拟机了(如果不卸载也不能启动虚拟机,提示文件被占用)。

    来来回回这么折腾几次后,似乎就开始出问题了:宿主机拷进 VHD 的文件,在虚拟机启动后,似乎是损坏的。

    而且,有的时候(我记得好像是刚刚新建快照的时候),VBox 新建的差分 VHD 在宿主机是不能双击挂载的,会报错;只有正常启动过一次虚拟机、再关机,那个 VHD 才能正常在宿主机双击挂载。

    光是这个可能还不算什么……有一次,虚拟机刚开始启动时,居然直接弹出“老人坐禅”的报错窗口,崩溃掉了……
    我当时那个懵逼啊……虚拟机里各种折腾,比如 bootsect /nt60 sys /mbr,没用……最后发现问题好像是在 100MB 的那个“系统保留”分区上这个分区是活动分区,存放的是 bootmgr、BCD 等引导文件我把它格式化一次(非快速格式化),再重新 bcdboot,貌似就好了。

    总之……我猜,要么是因为我在宿主机双击挂载 VHD 这个动作触发了 VBox 的 Bug ;要么就是 UPGDSED、VBoxHardenedLoader 的魔改导致了问题。

    发到这里的意义可能也不是很大,大概只是想问问有没有别人也试过宿主机双击挂载 VHD 这种骚操作,然后碰到问题的……
    此外,出现这个情况有点让我担心 VBox 的可靠性,因为我曾在一位大佬的博客上看到过疑似 VBox 出问题导致数据损坏的案例: https://ring0.me/2015/05/recover-code-from-corrupt-git-repo/
    13 条回复    2018-08-20 08:32:07 +08:00
    daigouspy
        1
    daigouspy  
       2018-08-20 07:07:56 +08:00 via Android
    浪费生命,你直接开个 smb 就能复制文件了嘛,费那劲干嘛
    acess
        2
    acess  
    OP
       2018-08-20 07:11:33 +08:00
    @daigouspy
    试过用网络复制文件,可能是因为没有虚拟网卡驱动的原因,速度很慢。
    另外,LZ 对 SMB 这种东西没有太多好感,因为我印象里这玩意经常出现“找不到网络路径”等玄学问题(好吧这个可能不是 SMB 本身的锅),还爆过漏洞……
    liangzi
        3
    liangzi  
       2018-08-20 07:19:05 +08:00 via Android
    复制文件 直接安装 增强功能 然后虚拟机里把光盘装上 设置一下共享路径就可以了
    acess
        4
    acess  
    OP
       2018-08-20 07:24:58 +08:00
    @daigouspy
    忘了说了…… VBoxHardenedLoader 安装指南里特别提到不能装虚拟网卡,所以我才没装虽然我也不知道这背后有啥玄学因素……
    除此之外,我记得还有一个强迫症因素:这么折腾之后,宿主机 Win10 自带防火墙似乎不能完全阻止 VBox 进程访问网络(至于本机回环……额,貌似本地回环完全是无视掉自带防火墙的?),好像只能挡住 TCP 和 UDP,不能挡住其他协议,比如 ping 1.1.1.1 这个就是通的。

    @liangzi
    折腾 VBoxHardenedLoader 就是为了避开虚拟机检测,据 VBoxHardenedLoader 的安装指南,宿主机是不能装增强功能的,否则就会有 N 种办法来检测虚拟机,使得之前的各种反检测折腾前功尽弃……
    acess
        5
    acess  
    OP
       2018-08-20 07:26:18 +08:00
    @liangzi 打错了,是虚拟机不能安装增强功能,不是宿主机不能装
    kokutou     6
    kokutou  
       2018-08-20 07:45:53 +08:00 via Android
    Snapshots 是
    kokutou
        7
    kokutou  
       2018-08-20 07:46:47 +08:00 via Android   1
    @kokutou
    Snapshots 是不能拷文件的,差分备份不是基于文件的。。。拷了肯定坏。。。。
    acess
        8
    acess  
    OP
       2018-08-20 07:51:20 +08:00
    @kokutou
    不能么?
    我加载的不是源 VHD,是差分 VHD。
    我看每创建一个快照,Snapshots 里就会多一个差分 VHD,然后虚拟机启动后修改的也是这个 VHD 啊……既然虚拟机能改这个 VHD,宿主机为什么就不行呢?
    Osk
        9
    Osk  
       2018-08-20 07:52:22 +08:00 via Android
    我用的 hyper-v,也是直接挂载 avhd/avhdx 拷贝文件,没有遇到过问题。。。
    kokutou
        10
    kokutou  
       2018-08-20 07:56:42 +08:00 via Android   1
    @acess
    改的方法不一样。。。
    一旦用了 snapshots,源和差分都不能改,改了就挂。
    kokutou
        11
    kokutou  
       2018-08-20 07:59:27 +08:00 via Android   1
    @acess
    别想当然式地应用一些操作,网上可能会说能挂载 VHD 添加修改文件,可是没说可以挂载差分 VHD 修改文件。
    acess
        12
    acess  
    OP
       2018-08-20 08:16:01 +08:00
    @kokutou
    我还是觉得“源和差分都不能随便改”这个说法似乎有点玄乎……
    请问有官方文档之类的参考资料链接么?

    我印象里,差分 VHD 里已经记录了父级 VHD 的信息,所以,一旦修改源(准确地说,应该是父级) VHD,HyperV 等虚拟机软件就会警告 /报错;而且,Windows 也支持直接挂载差分 VHD ……
    VBox 也从没因为我的这种挂载快照中差分 VHD 的操作直接给我报过错。
    难道 VBox 自己还在某个地方保留了一个神秘的差分配置?或者说,VBox 读写差分 VHD 的方式和微软不一样?
    acess
        13
    acess  
    OP
       2018-08-20 08:32:07 +08:00
    @kokutou
    我猜 VHD 的数据结构里应该含有类似时间戳的字段,每次写入都更新一下。这样的话,把源 VHD 里记录的值和差分 VHD 里记录的值对比,就可以发现源 VHD 是否已经被修改了。
    总之……我觉得,应该不需要依赖外部的什么配置来维持差分 VHD 正常工作。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     928 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 20:07 PVG 04:07 LAX 12:07 JFK 15:07
    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