求推荐虚拟机做开发环境的方案

2023-04-28 15:25:38 +08:00
 Al0rid4l

最近要换 13600K + 64G 内存, 感觉可以完全把开发环境搬到虚拟机了, 所以来求个方案.

目前是 Win, 因为有游戏需求, 开发环境一套宿主机 Win + Msys2 + 若干语言环境等等, 然后一个 Linux 虚拟机, dotfile 维护一套环境. Linux 下还好, 主要是 Win, 每次重装配环境要装半天, 安装还好, 配置能脚本的也尽量脚本了, 但还是架不住有些东西的配置选项要 GUI 一路点过去, 这波升级配置再来一遍实在有点犯恶心, 所以想要完全迁移到虚拟机. 但仔细想想这事情也好像没那么简单.

整理了下根本需求:

  1. 希望只维护一套开发环境(目前看来这个不太现实, 需要一个 Win, AHK, Everything, VS 等找不到替代品)
  2. 如果必须维护两套(一套 Win 一套 Linux), 那也得是两个虚拟机可以直接打包带走.

其实之前也看过本站很多帖子调研了下, 目前设想的两个大方向:

  1. 宿主机 Win11 + Hyper-V, 但是好像 Hyper-V 的 GPU 直通要 Win Server 的系统.
  2. PVE GPU 直通, 这能打游戏吗? 地平线这样的. 总之不管怎样, 都希望能有个 GPU 直通的方案.

在此基础之上, 又有几个方案:

  1. 宿主机 Win11, 开发环境只在 Linux 虚拟机里搞, VSCode remote 过去. 这个方案开发倒是没什么问题, 但是宿主机上会装些效率工具, 这些个工具要么可编程, 如 AHK, 要么依赖些开发环境, 如 yt-dlp 要 ffpmeg, 还想要个舒服的 Terminal, Logseq 的笔记要 Git 来同步, 这一系列操作下来等于又在宿主机装了半套开发环境了. 于是有了第二套方案, 把整个工作流都塞到虚拟机里, 宿主机只装游戏.
  2. 宿主机 Win11, 一台开发 Win, 一台 Linux
  3. 如果可以打游戏的话就有这套方案, 宿主机 PVE, 一台游戏 Win, 一台开发 Win, 一台 Linux

目前倾向于方案 2 和 3, 但是一个问题就是 PVE GPU 直通游戏效果如何?

或者大家有什么其他方案? 也欢迎分享自己目前用的方案

5653 次点击
所在节点    程序员
27 条回复
zx900930
2023-04-29 03:12:23 +08:00
@documentzhangx66 1. ecc 不是必须的,特别是对 OP 这种个人开发用途而言。 ecc 真正有点用是存储用 zfs 之类 cache 写 ram 里的怕丢数据,或者就是需要大规模高精度计算。不要把 data center 的思维带到 homelab 花冤枉钱。
2. 如果 vm 都要装桌面环境或者一堆 windows vm 那确实有必要上个独显。否则可以完全不要独显甚至核显,完全 headless 。 第一次安装走主板上的 com 口通过 serial port 输出,配置好网络 interface 以后就可以通过 webui 和 ssh 访问了。
documentzhangx66
2023-04-29 03:30:02 +08:00
@zx900930

我在前面提了,当需求是办公或开发,RECC 是必须的。不然万一遇到了内存条故障,积累损失会让文件逐渐损坏,这种损坏即使有版本控制,修复代价也很大,因为它的 debuff 特性是积累式损坏。

但你在 21 楼,说是个人用途。在个人用途的情况下,的确如你所述,RECC 是否必须,就不一定了,因为这取决于数据重要性,以及机器成本。比如海量的电影数据,坏掉几个分散的 KB 甚至 MB ,我都觉得无伤大雅,毕竟电影视频文件,一般自带纠错。
yrj
2023-04-29 06:13:21 +08:00
楼主,太巧了,我和你有同样的困惑,且咱俩思考的流程方案都是一样的。我也考虑过 pve 这种方案,把显卡通给一台虚拟机,但感觉切换机器太麻烦了。hyperv 虽然不能直通,但好像可以 GPU 加速。但我还是觉得应该用宿主机直接看视频玩游戏啥的。否则怕成 ppt 。为此我前两天还发了个关于虚拟容器应用的帖子。目前我的想法更倾向远程开发的方式,软件还是安装在宿主机。
esee
2023-04-29 11:22:09 +08:00
@documentzhangx66 哪有这么夸张,你开发环境当高可用生产环境来用?
Al0rid4l
2023-04-29 11:48:15 +08:00
@yrj 仔细考虑下来发现根本问题是我无法完全把日常使用和开发环境分离开来, 比如我刷刷油管 b 站, 偶尔有些视频想要抓下来就得 yt-dlp, yt-dlp 吧就得给它配个 ffmpeg, 想用起来舒服点吧还得整个 Win terminal, 遇到抓不下来的还得弄个 Insomnia/Postman 之类的请求工具看看原因, 有时候遇到网络问题也得用些工具检查
于是变成宿主机还是得装些开发相关的工具, 同时虚拟机还得维护一套, 这时候什么方案都显得有些失去意义
所以我还是倾向于把整个日常使用和开发都塞到一个虚拟机或者两个虚拟机里, 能一点开发工具都不沾完全分离的只有游戏, 可以装宿主机
当然我也可以弄两台电脑, 一台打游戏一台开发, 不过游戏机通常配置也比较高, 只拿来打游戏感觉好亏啊
documentzhangx66
2023-04-29 19:10:59 +08:00
@esee

其实开发环境,也是一种生成环境,因为高级开发者,很贵,这些人的开发环境。如果不设计高可用与功能隔离,环境坏掉后,重建环境,很浪费时间(钱)的。
ModerRAS
2023-07-09 09:52:12 +08:00
要是 pve 直通 gpu 的话,可能玩游戏会有一些小 bug ,就像是一开麦就越来越卡之类的,玩游戏突然掉帧之类的,还得踩一下坑解决一下。
如果你用 gpu 主要是 cuda 之类的炼丹环境,win11 配 wsl2 其实就可以解决,效率可能低一点但是不会少很多,至少还有 90%多的性能。坑在有时候 wsl2 的虚拟机 CPU 会在你休眠唤醒之后莫名其妙一直满着。

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

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

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

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

© 2021 V2EX