V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Al0rid4l
V2EX  ›  程序员

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

  •  
  •   Al0rid4l ·
    al0rid4l · 2023-04-28 15:25:38 +08:00 · 4835 次点击
    这是一个创建于 365 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近要换 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 直通游戏效果如何?

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

    27 条回复    2023-07-09 09:52:12 +08:00
    cy18
        1
    cy18  
       2023-04-28 15:30:41 +08:00
    VSCode+Docker...
    没法完全满足你的需求,但胜在简单,开发不同的东西还可以用不同的 Docker 镜像环境。
    qqjt
        2
    qqjt  
       2023-04-28 15:48:40 +08:00
    我是宿主机 win10 ,vmware 里装 ubuntu ,直通很难搞,建议放弃。windows 系统迁移直接把硬盘接到新主板上开机就好了,再更新一下驱动。
    zsj1029
        3
    zsj1029  
       2023-04-28 15:51:24 +08:00
    win11+虚拟机 linux 桌面版,两个桌面分开,开发完全切换到 linux 里面
    MRG0
        4
    MRG0  
       2023-04-28 15:56:35 +08:00
    我觉得要么是 vmware 这样的虚拟化软件。要么就捡 e3 或 e5 ,开发和游戏分开
    xhcarlin
        5
    xhcarlin  
       2023-04-28 15:56:55 +08:00
    之前用虚拟机,有一次我正常关机虚拟机,结果下一次启动就直接报错了。后来我就尽量用 wsl ,搭配 docker + vscode devcontainer 。
    dayeye2006199
        6
    dayeye2006199  
       2023-04-28 15:57:08 +08:00 via Android   ❤️ 1
    我是喜欢用 vagrant 配 hyperv ,宿主机 vscode remote 进去弄。所有的开发都放虚拟机里面,宿主机就跑个 vscode ,浏览器和协作工具用用。

    Vagrantfile check-in 一份进项目 repo ,别人用都可以复制这个开发环境。
    810244966
        7
    810244966  
       2023-04-28 16:02:32 +08:00
    我是用虚拟机装了一些环境 mysql 、redis 之类的,然后 win11 里就直接下 ide 开发,游戏也是同时打,感觉并没有差异,代码都在 git 上,重装系统也只是重新下载 ide ,导入之前 ide 的配置,。而且现在硬盘足够大感觉重装系统已经是几年一次的行为了。个人认为没必要为了这么低的频率去在虚拟机里开发,(比较麻烦,性能有损失)
    imoru
        8
    imoru  
       2023-04-28 16:36:00 +08:00   ❤️ 1
    我觉得可以考虑使用 GPU-P 而不是直通 gpu,宿主机安装 Windows server2022 然后虚拟机里安装 win11 和 linux,我现在就是使用这个方案,
    可以参考这个设置方式 https://forum.level1techs.com/t/2-gamers-1-gpu-with-hyper-v-gpu-p-gpu-partitioning-finally-made-possible-with-hyperv/172234
    iawes
        9
    iawes  
       2023-04-28 16:38:07 +08:00
    宿主机装 Linux ,然后用 qemu+kvm ,虚拟机想怎么直通都行,甚至可以直通 osx
    angryfish
        10
    angryfish  
       2023-04-28 16:41:14 +08:00
    个人觉得 win 宿主机+一个 linux 虚拟机就行了。linux 虚拟机直接装界面那种。linux 的开发直接在 linux 。windows 的就用 windows 。像数据库,redis 这些中间件,放 docker ,win 和 linux 公用
    Daeyn
        11
    Daeyn  
       2023-04-28 16:45:00 +08:00 via iPhone
    玩游戏需求的话那还是 win11+hyper-v linux 虚拟机最稳
    zedpass
        12
    zedpass  
       2023-04-28 16:58:37 +08:00   ❤️ 1
    pve 直通可以玩游戏的,或者你直接宿主机用 Linux ,然后 kvm 直通显卡;
    我目前宿主机使用 deepin ,显示输出使用核显; kvm 直通 RTX 2070S 给 win 11 ,然后再买一个 KVM 切换器接到同一个显示器,玩游戏的话就使用切换器一键切换到 win
    documentzhangx66
        13
    documentzhangx66  
       2023-04-28 17:06:01 +08:00   ❤️ 1
    1.虚拟机要拿来办公或开发,RECC 内存条是必须的,不然普通内存条如果出问题,机器不一定能及时报警或蓝屏来提醒,这会导致数据损坏的积累。

    2.一旦确定要上了 RECC 内存条,就需要用志强 CPU ,以及服务器主板。这种东西有便宜的,也有贵的。但无论如何,都比较耗电。

    3.如果你显示器超过 4 个,虚拟化宿主机器一定要装显卡,不一定要多好,但一定要有独立显卡。我以前的虚拟化服务器,没配独显,跳板机是 4 显示器时,远程桌面还算顺畅,后来扩展到 10 显示器,远程桌面直接 PPT 。

    4.i9 是拿来打游戏的,当虚拟化物理机,不合适。

    5.无论 CPU 还是 GPU 或者存储介质,一旦上了虚拟化,性能就大降。虚拟化的优势是方便,代价是牺牲一部分性能。
    luoxiang
        14
    luoxiang  
       2023-04-28 17:28:51 +08:00
    我是主机 win10ltsc ,开发用 vmware 免费版装的 win7 ,觉得隔离开比较方便备份和无病毒的担心
    shangyu7
        15
    shangyu7  
       2023-04-28 17:48:52 +08:00
    Linux 没有 gpu 需求的话方案 1 更好吧
    masterjoess
        16
    masterjoess  
       2023-04-28 17:55:25 +08:00
    再组一台桌机或者二手服务器
    配亮机卡
    linux qemu kvm 或者 PVE

    玩游戏 AIO 方案折腾玩玩可以, 但终究还是有点不设实际的
    klarkzh
        17
    klarkzh  
       2023-04-28 18:14:19 +08:00 via iPhone
    我现在是 pve ,虚拟一个 win ,显卡和一块固态直通用来玩游戏和杂七杂八操作,再虚拟一个 ubuntu server 。整个机器扔在一边 24 小时开机。然后随便找个 nuc 或者 Mac mini 日常使用,有需求就远程或者显示器切换输入源,如果游戏画质要求不高就用 parsec ,安装一个 zerotier 不在家也能连上 win 虚拟机。
    onikage
        18
    onikage  
       2023-04-28 18:47:50 +08:00
    方案 1: 直接 host 上 linux, 游戏买个 steamdeck 就好.
    方案 2: 或者在 kvm 里面显卡直通
    毕竟游戏时间还是少数.

    以前是方案 2, 目前是方案 1. kvm 切换起来还是麻烦.
    LoveMyself546
        19
    LoveMyself546  
       2023-04-28 20:20:50 +08:00
    * 如果是想将现有的 win 环境迁移到虚拟机,可以用 diskgenius ,里面有个功能可以直接将当前的系统转换成虚拟机磁盘直接运行
    * 我现在的方案就是 vs idea 这些用不到 gpu 的工具都装虚拟机里面,因为有时跑一些项目要用到 gpu ,所以宿主机装了个 pycharm
    dann73580
        20
    dann73580  
       2023-04-28 20:33:35 +08:00
    PVE 直通 GPU 基本上没什么大问题,还是挺好用的。记得参照官方最新的教程,很快就能跑起来了。

    值得注意的点是,记得手动修改下虚拟出来的主板信息,不能用默认的虚拟机模板,否则会被部分有反作弊措施的游戏检测到是跑在虚拟机里的。这是我用 PVE 打游戏事遇到唯一一个坑。
    zx900930
        21
    zx900930  
       364 天前
    @documentzhangx66 1. ecc 不是必须的,特别是对 OP 这种个人开发用途而言。 ecc 真正有点用是存储用 zfs 之类 cache 写 ram 里的怕丢数据,或者就是需要大规模高精度计算。不要把 data center 的思维带到 homelab 花冤枉钱。
    2. 如果 vm 都要装桌面环境或者一堆 windows vm 那确实有必要上个独显。否则可以完全不要独显甚至核显,完全 headless 。 第一次安装走主板上的 com 口通过 serial port 输出,配置好网络 interface 以后就可以通过 webui 和 ssh 访问了。
    documentzhangx66
        22
    documentzhangx66  
       364 天前
    @zx900930

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

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

    其实开发环境,也是一种生成环境,因为高级开发者,很贵,这些人的开发环境。如果不设计高可用与功能隔离,环境坏掉后,重建环境,很浪费时间(钱)的。
    ModerRAS
        27
    ModerRAS  
       293 天前 via iPhone
    要是 pve 直通 gpu 的话,可能玩游戏会有一些小 bug ,就像是一开麦就越来越卡之类的,玩游戏突然掉帧之类的,还得踩一下坑解决一下。
    如果你用 gpu 主要是 cuda 之类的炼丹环境,win11 配 wsl2 其实就可以解决,效率可能低一点但是不会少很多,至少还有 90%多的性能。坑在有时候 wsl2 的虚拟机 CPU 会在你休眠唤醒之后莫名其妙一直满着。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2821 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:15 · PVG 23:15 · LAX 08:15 · JFK 11:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.