Windows 使用虚拟机隔离不同生产环境,怎样做能兼顾性能与优雅?

2023-06-10 22:01:28 +08:00
 jemz

考虑到使用的程序类型比较杂,一方面很难在主系统中让它们保持“秩序”,即方便统一管理;另一方面也很难保证它们对系统的操作不会引发隐性问题。因此想要将不同生产环境下的软件隔离开来。

例如,我想到的初步方案为,配置多个 Windows 虚拟机,在虚拟机 A 内只安装不得不装的国产软件(如 QQ 之类),在虚拟机 B 内只配置编程生产环境(如 VS Code, PyCharm 之类),在虚拟机 C 内只安装 LaTeX 编辑与编译相关软件,以此类推。考虑到性能,把游戏安装在主系统中。

但是这样操作,不仅每台虚拟机都装一个 Windows 系统,会造成存储上的浪费;而且不符合我对优雅的期待(不然还不如不隔离,出问题直接用配置好的脚本重装)。

大家有没有过这样的想法,是如何解决的?求教,谢谢!

4867 次点击
所在节点    Windows
40 条回复
wangkun025
2023-06-10 22:06:06 +08:00
去精神科看一下,治好洁癖就可以了。
wangkun025
2023-06-10 22:09:24 +08:00
大哥,我错了。
这几天了解到一个叫不可变操作系统的概念。大概跟 brew 的概念有点像。不过只针对 linux 。
yekern
2023-06-10 22:10:26 +08:00
纯环境 然后链接克隆,只是克隆一个链接 不占用空间 然后在每个虚拟机里安装软件就好了
jemz
2023-06-10 22:24:48 +08:00
@wangkun025 让子系统“不可变”是个很好的注意,但是感觉会丧失一些灵活性。不过可以考虑使用之前加个快照
privil
2023-06-10 22:28:51 +08:00
微软貌似已经在开发软件沙箱隔离了。
jemz
2023-06-10 22:30:25 +08:00
@yekern 帮助很大,第一次听到这个概念(对虚拟机了解还是不完善)。
刚刚看了 VMware 的手册,发现可以“[为链接克隆的父虚拟机启用模板模式]( https://docs.vmware.com/cn/VMware-Workstation-Pro/17/com.vmware.ws.using.doc/GUID-8C477788-7700-4030-8C4A-039C02AABB74.html)”,这样可以节省多个相同系统的存储浪费。
再搭配 Unity 模式,我感觉是一个性价比高的解决方案了。
crab
2023-06-10 22:32:10 +08:00
@jemz 但克隆模式下如果不同虚拟机有对操作系统磁盘的操作会产生兼容冲突问题吧?
ztmzzz
2023-06-10 22:36:16 +08:00
@jemz 但是这样克隆出的虚拟机如果要系统更新或者软件更新会各自独立占用空间,省不了太多
kkocdko
2023-06-10 22:46:00 +08:00
hyperv 可以解决除了磁盘空间以外的问题,加钱解决磁盘空间问题。

换 linux ,用 docker 解决上述问题,但是用 win 独占的软件又是一个问题。
jemz
2023-06-10 22:51:59 +08:00
@privil 期待系统沙箱早点成熟
jemz
2023-06-10 23:19:58 +08:00
@crab 刚刚创建虚拟机测试了一下,用父系统的快照创建了两个链接克隆子系统,两个子系统可以同时使用,且操作相互独立。
我的试验方法是,子系统 A 删除了桌面的快捷方式,子系统 B 清空了回收站,之后两个子系统冷重启,没有发生冲突。
我的理解是,链接克隆得到的系统是在父系统快照上的追加,这部分内容分别记录,因此不会产生冲突。
jemz
2023-06-10 23:23:21 +08:00
@ztmzzz 没错,我在 #11 提到的两个子系统的存储占用分别为 603 MB 和 1.33 GB 。不知道是因为初始化占用空间多,还是每次修改都会这样 XD
jemz
2023-06-10 23:27:06 +08:00
@kkocdko 1) 你说的 Hyper-V 指的是系统功能里的 Sandbox 吗?
2) 我最初的想法就是在 Windows 上找到类似 docker 的平替,但最终没实现
maggch97
2023-06-10 23:31:23 +08:00
gam2046
2023-06-10 23:36:48 +08:00
或许 docker 可以帮助你。各类开发环境和编译环境是一定的。Windows 也支持 docker 里 跑 Windows 环境(针对国产软件),但是不能同时使用 Linux 和 Windows docker

虽然切换麻烦,但是终归比虚拟机还是方便的。
zwl2012
2023-06-11 00:16:58 +08:00
@jemz 如果没理解错的话 可用差分 vhd 启动不同的 Windows 环境 首先定制纯净母版系统 vhd 然后创建差分子系统 vhd 启动子系统后安装专用软件环境即可 不需要可直接删除子系统镜像 不污染母系统环境 对存储及性能的压力也不大 只是步骤略微繁琐
codehz
2023-06-11 00:23:39 +08:00
@jemz windows 确实有 docker ,原生的
但是不能跑 gui(准确说是和服务那样,gui 可以用,只是显示不出
clorischan
2023-06-11 00:23:46 +08:00
@kkocdko Hyper-V 自己建 VHD 差分磁盘就可以的, 要麻烦点
ysc3839
2023-06-11 00:31:49 +08:00
我只把我不信任的软件装到虚拟机里,信得过的开发工具我是装到主系统里的
LoveMyself546
2023-06-11 01:05:36 +08:00
@jemz #12 链接克隆的子虚拟机种,所有与父虚拟机不一致的文件都会生成一份新的快照(副本)。也就是说子系统用得越久,操作越多,子虚拟机的存储占用就会越来越多。链接克隆主要还是用于临时使用的;同时如果父虚拟机的磁盘文件损坏,那么所有子虚拟机都将不能正常使用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/947613

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX