考虑到使用的程序类型比较杂,一方面很难在主系统中让它们保持“秩序”,即方便统一管理;另一方面也很难保证它们对系统的操作不会引发隐性问题。因此想要将不同生产环境下的软件隔离开来。
例如,我想到的初步方案为,配置多个 Windows 虚拟机,在虚拟机 A 内只安装不得不装的国产软件(如 QQ 之类),在虚拟机 B 内只配置编程生产环境(如 VS Code, PyCharm 之类),在虚拟机 C 内只安装 LaTeX 编辑与编译相关软件,以此类推。考虑到性能,把游戏安装在主系统中。
但是这样操作,不仅每台虚拟机都装一个 Windows 系统,会造成存储上的浪费;而且不符合我对优雅的期待(不然还不如不隔离,出问题直接用配置好的脚本重装)。
大家有没有过这样的想法,是如何解决的?求教,谢谢!
1
wangkun025 2023-06-10 22:06:06 +08:00 5
去精神科看一下,治好洁癖就可以了。
|
2
wangkun025 2023-06-10 22:09:24 +08:00
大哥,我错了。
这几天了解到一个叫不可变操作系统的概念。大概跟 brew 的概念有点像。不过只针对 linux 。 |
3
yekern 2023-06-10 22:10:26 +08:00
纯环境 然后链接克隆,只是克隆一个链接 不占用空间 然后在每个虚拟机里安装软件就好了
|
4
jemz OP @wangkun025 让子系统“不可变”是个很好的注意,但是感觉会丧失一些灵活性。不过可以考虑使用之前加个快照
|
5
privil 2023-06-10 22:28:51 +08:00
微软貌似已经在开发软件沙箱隔离了。
|
6
jemz OP @yekern 帮助很大,第一次听到这个概念(对虚拟机了解还是不完善)。
刚刚看了 VMware 的手册,发现可以“[为链接克隆的父虚拟机启用模板模式]( https://docs.vmware.com/cn/VMware-Workstation-Pro/17/com.vmware.ws.using.doc/GUID-8C477788-7700-4030-8C4A-039C02AABB74.html)”,这样可以节省多个相同系统的存储浪费。 再搭配 Unity 模式,我感觉是一个性价比高的解决方案了。 |
9
kkocdko 2023-06-10 22:46:00 +08:00
hyperv 可以解决除了磁盘空间以外的问题,加钱解决磁盘空间问题。
换 linux ,用 docker 解决上述问题,但是用 win 独占的软件又是一个问题。 |
11
jemz OP @crab 刚刚创建虚拟机测试了一下,用父系统的快照创建了两个链接克隆子系统,两个子系统可以同时使用,且操作相互独立。
我的试验方法是,子系统 A 删除了桌面的快捷方式,子系统 B 清空了回收站,之后两个子系统冷重启,没有发生冲突。 我的理解是,链接克隆得到的系统是在父系统快照上的追加,这部分内容分别记录,因此不会产生冲突。 |
12
jemz OP @ztmzzz 没错,我在 #11 提到的两个子系统的存储占用分别为 603 MB 和 1.33 GB 。不知道是因为初始化占用空间多,还是每次修改都会这样 XD
|
13
jemz OP @kkocdko 1) 你说的 Hyper-V 指的是系统功能里的 Sandbox 吗?
2) 我最初的想法就是在 Windows 上找到类似 docker 的平替,但最终没实现 |
14
maggch97 2023-06-10 23:31:23 +08:00 via Android
|
15
gam2046 2023-06-10 23:36:48 +08:00
或许 docker 可以帮助你。各类开发环境和编译环境是一定的。Windows 也支持 docker 里 跑 Windows 环境(针对国产软件),但是不能同时使用 Linux 和 Windows docker
虽然切换麻烦,但是终归比虚拟机还是方便的。 |
16
zwl2012 2023-06-11 00:16:58 +08:00 via iPhone
@jemz 如果没理解错的话 可用差分 vhd 启动不同的 Windows 环境 首先定制纯净母版系统 vhd 然后创建差分子系统 vhd 启动子系统后安装专用软件环境即可 不需要可直接删除子系统镜像 不污染母系统环境 对存储及性能的压力也不大 只是步骤略微繁琐
|
17
codehz 2023-06-11 00:23:39 +08:00
@jemz windows 确实有 docker ,原生的
但是不能跑 gui(准确说是和服务那样,gui 可以用,只是显示不出 |
18
clorischan 2023-06-11 00:23:46 +08:00
@kkocdko Hyper-V 自己建 VHD 差分磁盘就可以的, 要麻烦点
|
19
ysc3839 2023-06-11 00:31:49 +08:00 via Android
我只把我不信任的软件装到虚拟机里,信得过的开发工具我是装到主系统里的
|
20
LoveMyself546 2023-06-11 01:05:36 +08:00
@jemz #12 链接克隆的子虚拟机种,所有与父虚拟机不一致的文件都会生成一份新的快照(副本)。也就是说子系统用得越久,操作越多,子虚拟机的存储占用就会越来越多。链接克隆主要还是用于临时使用的;同时如果父虚拟机的磁盘文件损坏,那么所有子虚拟机都将不能正常使用
|
21
yinmin 2023-06-11 02:50:04 +08:00 via iPhone
以前有一个软件 sandboxie 买过专业版用了好多年,比虚拟机轻很多。现在这个软件还在,只是换了维护者了。
|
22
dogfight 2023-06-11 03:31:09 +08:00
没人关心 op 需要看下心理医生吗?还是我来到精神病院了??哈哈
|
23
akira 2023-06-11 06:15:19 +08:00
存储 不值钱。。凡是通过加存储空间能解决的问题,这个方案一般都是最划算的方案了。。
|
24
felixcode 2023-06-11 08:22:38 +08:00 via Android
就用个电脑都这么折腾,有什么优雅的
|
25
deorth 2023-06-11 08:31:06 +08:00 via Android
链接克隆
|
26
jKpzPv20NjX56i44 2023-06-11 09:07:02 +08:00
linux 的话有 docker 可以用...Windows 可能会麻烦一点
|
27
ikas 2023-06-11 11:16:29 +08:00
windows 自带沙盒加上配置文件
每个配置指定不同的文件夹目录,配合 vhdx 挂载 https://learn.microsoft.com/en-us/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-configure-using-wsb-file <Configuration> <MappedFolders> <MappedFolder> <HostFolder>C:\SandboxScripts</HostFolder> <SandboxFolder>C:\Users\WDAGUtilityAccount\Downloads\sandbox</SandboxFolder> <ReadOnly>true</ReadOnly> </MappedFolder> <MappedFolder> <HostFolder>C:\CodingProjects</HostFolder> <SandboxFolder>C:\Users\WDAGUtilityAccount\Documents\Projects</SandboxFolder> <ReadOnly>false</ReadOnly> </MappedFolder> </MappedFolders> <LogonCommand> <Command>C:\Users\WDAGUtilityAccount\Downloads\sandbox\VSCodeInstall.cmd</Command> </LogonCommand> </Configuration> |
28
documentzhangx66 2023-06-11 11:22:46 +08:00
Windows 、虚拟机、生产环境,这几样不沾边的东西,放在一起,能优雅就奇怪了。
正确的做法是: 1.开发、调试的 Windows 环境,专机专用,不要与虚拟化服务器、生产环境混在一起。 2.如果生产要用 Windows ,请使用 Windows Server 版本,同样也是专机专用。 3.虚拟化,对于企业级生产,用 VMware vSphere ( ESXi )+ 存储备份一体机方案。个人用 PVE ( Proxmox Virtual Environment ),追求开关机速度与灵活性。 |
29
1014982466 2023-06-11 11:42:55 +08:00
花里胡哨,追求干净国产软件用精简版 /去广告版就完事了。外国软件绝大部分都能便携化运行。
而且善意提醒:Windows 开 Hyper-v 或者一切基于它的( sandbox, WSL, WSA )都会导致主系统也被虚拟化然后性能尿崩 |
30
yijiangchengming 2023-06-11 12:48:51 +08:00
我目前使用了 WSL+Hyper-v 虚拟机+Sandbox-Plus+WSA 。WSL 用于配置 Linux 和 docker 开发环境,各个环境之间互相隔离。Sandbox-Plus 用于安装国产毒瘤,Hyper-V 虚拟机用于软件 Win 测试以及 Win 开发环境。WSA 用于国产毒瘤。所有数据均在 D 盘,主系统 C 盘挂了不影响数据。
|
31
MiketsuSmasher 2023-06-11 13:43:20 +08:00 1
可以换 Linux 做主系统,国产软件用 Wine🐶
Wine 在设计上就能满足楼主“隔离不同生产环境”的需求:使用 WINEPREFIX 环境变量决定 Wine 实例的位置,把国产软件放到一个 prefix 里面,把生产环境放到另一个 prefix 里面,日常使用靠 Shell 脚本设置环境变量来切换。 虽然每一个 prefix 也都要占用空间,但也就每个 700MB~1GB 左右,存储占用会小很多(当然具体占用取决于你往里面装什么东西)。 而且 Wine 不是虚拟机,是直接转换 Windows 程序的系统调用,只要不玩游戏,性能几乎没有损失。 当然问题也是有的,Wine 的兼容性,以及楼主可能觉得换个主系统、配置上述内容要比去看心理医生麻烦🐶 |
32
kenvix 2023-06-11 18:20:36 +08:00
@wangkun025 分情况讨论,有些程序不放到隔离环境真不行,比如深信服 aTrust 会把宿主的网络栈给炸了
自定义 WSB 文件的 Windows Sandbox 做这个正合适 |
33
chenjies 2023-06-11 20:37:34 +08:00
vmware 的 windows 虚拟机里面我用 cpu-z 测过单核和多核分数,和宿主机是一样的。日常用一个虚拟机装国产软件,除了硬件加速有问题外,日常使用没有感觉到问题。都上 vmware 虚拟机了,在路由设置下基于 mac 的 ip 段,在宿主机设置内网白名单。vmware 并不能隔绝内网扫描设备。
|
34
boshok 2023-06-13 00:09:04 +08:00
突然想起十几年前在网吧用过一个沙箱软件,可以把 QQ 、文档编辑器等常用软件带着走,生成的文件好像在云上,网吧机器重启不影响。
|
36
boshok 2023-06-13 15:12:00 +08:00
@ssdold #35 冰点是网吧、学校机房用的。我说的是自己用的一个云端存储的软件,界面类似 QQ ,里面包含自己常用的软件,软件配置或文档的状态都是在云端,老高级了。
|
37
czmbbbb 2023-06-13 17:17:29 +08:00
使用 sandboxie 吧。https://scoop.sh/#/apps?q=sandboxie
可以做到一个 app 开一个虚拟路径,也可以好几个 app 共享一组虚拟路径。 |
38
abc8678 2023-06-15 15:40:48 +08:00 via Android
最近在用银行笔试的客户端,不想装在主力系统上,于是装了双系统。平时备份了 VHDX ,直接添加到启动菜单,重启切换。没想到它检测磁盘环境是 vhdx ,也认为这是虚拟机
|
40
guisheng 190 天前 via iPhone
还有后续吗 同样的问题
|