最近折腾 hyper-v 的一些吐槽 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
join
V2EX    Windows

最近折腾 hyper-v 的一些吐槽

  •  1
     
  •   join 2021-07-22 20:01:04 +08:00 12659 次点击
    这是一个创建于 1572 天前的主题,其中的信息可能已经有所发展或是发生改变。
    hyper-v 就不是给个人用的,都好多年了不支持文件共享。网络配置很复杂,实际上现在 windows 宿主机也是被虚拟成 hyper-v 的虚拟机,只是一个特殊的带 hyper-v 管理端的操作系统而已。
    网络配置太复杂了,我配置好 internal 模式后,随便关了 public 网络文件共享后,linux 的客户机就 ping 不通 internal 交换机地址了。我为啥要区动网络文件共享?因为配置 samba,想安全一点。然后 samba 也是个巨大的配置坑,我根本不想去碰。
    为啥要用 hyper-v ?
    我被 wsl2 莫名奇妙的网络问题折腾太厉害了,有时候服务能 ping 通,端口也能通,就是不能收发数据通信。。。。很多同学抱怨 wsl2 里面开个 http 服务器有时能连上,有时连不上,就是这个问题。我一个月前碰到一个 rpc 服务连接的问题,调试了好几个小时,就差去动手抓包了,最后由于太晚了,就关机睡下了。第二天开机后问题消失了。。。。。
    docker 和 hyper-v 不能共存,经常会在开机时 docker 报错。尤其是你好几个月从来没有打开过 hyper-v,突然手贱打开了一下就会有这个问题,并且之后会一直伴随你每次开机报错。。。。
    wsl2 有时候你用着用着文件目录就变成了 unreachable,我不想管这个问题,也不想去修,一般都是重新启动 wsl 。
    还有 wsl 是个残废的 linux,很多命令没有,比如 netstat,还有些莫名奇妙的问题,就是用着用着 docker 不能用了。。。。

    如果你要用 wsl2 建议把 hyper-v 禁掉,我已经打算去弄个 vmware 了。
    60 条回复    2023-08-03 11:04:47 +08:00
    learningman
        1
    learningman  
       2021-07-22 20:02:22 +08:00 via Android   5
    wsl2 依赖于 hyper-V,你打算怎么禁。。。
    learningman
        2
    learningman  
       2021-07-22 20:02:38 +08:00 via Android
    docker 你用 WSL 后端呗
    join
        3
    join  
    OP
       2021-07-22 20:04:10 +08:00
    @learningman 就是用 wsl 后端,添加或删除服务可以禁掉 hyper 管理端的。
    Jirajine
        4
    Jirajine  
       2021-07-22 20:09:00 +08:00 via Android
    恰恰相反,我觉得 hyper-v 的网络配置应该是最直观的。
    论用户体验肯定不如 VMware workstation/parallels 这种专为桌面用户打造的商业产品,libvirt qemu/kvm 那一套也是一样。
    join
        5
    join  
    OP
       2021-07-22 20:10:55 +08:00
    @Jirajine 配置容易,但是要干点事情就拉跨了。。。
    /tr>
    sky96111
        6
    sky96111  
       2021-07-22 20:16:12 +08:00 via Android   1
    确实是个大坑,Windows 内部组件分割的稀裂。开了 HV 网络将无法调整公共网络和专用网络。甚至有时候防火墙会阻止宿主机访问虚拟机,有时候又不会,还要手动配置防火墙规则。前几天突然无论如何都访问不到虚拟机资源了,关防火墙、改桥接无线网卡都没有用,气的直接换 Linux 作主系统了
    noparking188
        7
    noparking188  
       2021-07-22 22:23:14 +08:00
    我还在用 wsl1,不过 vscode 老是提醒我赶紧切换到 wsl2
    我开 docker 它提示是用的 wsl2 做引擎,具体也不懂,我都在 powershell 里使用 docker 命令
    感觉 windows 作为开发主力最好再搞台 Linux 服务器
    webshe11
        8
    webshe11  
       2021-07-22 22:31:29 +08:00 via Android
    老夫从来都是 LTSC + VMware 一把梭 就是干
    Yadomin
        9
    Yadomin  
       2021-07-23 01:22:36 +08:00
    Public 和 Private 的网络仅限 Get-NetConnectionProfile 中出现的接口可以使用 Set-NetConnectionProfile 修改
    这个是永久的,设置了就不用了管了
    其他接口想要关闭防火墙需要 Set-NetFirewallProfile -DisabledInterfaceAliase "Interface Name"
    这个是一次性的,重启需要重新设置
    hanxiV2EX
        10
    hanxiV2EX  
       2021-07-23 01:56:27 +08:00 via Android
    我换回 vbox 了
    jedihy
        11
    jedihy  
       2021-07-23 02:16:06 +08:00   2
    1. hyper-v 的宿主机并没有被虚拟化。
    2. 文件共享 enhanced session 你可以直接 ctrl+c 。在虚拟机设置里面,Integration services 里面勾上 guest service,自动映射 host 的所有磁盘到虚拟机。
    3. Internal 模式的 vmswitch 只有主机和同在这个 switch 下面的 vm 才能互访。
    Yadomin
        12
    Yadomin  
       2021-07-23 02:26:56 +08:00 via Android   5
    Routeros
        13
    Routeros  
       2021-07-23 02:55:36 +08:00 via Android
    hyper-v wsl 不会用第二次的人路过
    efaun
        14
    efaun  
       2021-07-23 03:23:50 +08:00
    @sky96111 #6 我用 wsl2 安装的 docker,python 容器除了 22 端口以外,其他都无法访问,bridge 和 host 网络都不行,但是 java 容器的所有端口都能访问,太迷惑了,我防火墙都是关的
    owwlo
        15
    owwlo  
       2021-07-23 03:31:34 +08:00
    @Yadomin 原来是这样[震惊脸]!终于明白了为什么说有些游戏的反作弊插件会在开启 hyper-v 的宿主机上检测为运行在虚拟机里!
    jedihy
        16
    jedihy  
       2021-07-23 04:32:06 +08:00   1
    @Yadomin
    @owwlo
    只是逻辑上是 hypervisor 在 host 下面。VM 都是跑在 host 的 vmwp 进程里面。host 对物理 cpu 和内存是 direct access 。
    jedihy
        17
    jedihy  
       2021-07-23 04:55:19 +08:00
    @Yadomin
    @owwlo
    嗯,我说错了。还真是虚拟机。
    gBurnX
        18
    gBurnX  
       2021-07-23 05:14:00 +08:00
    要玩物理机虚拟化,建议还是 VMware ESXi,毕竟是地球上虚拟化一哥。其他品牌多多少少有问题,特别是某国内品牌,连个集群关机的功能都没有,关机还要拼手速,简直就是搞笑。
    echo1937
        19
    echo1937  
       2021-07-23 08:34:57 +08:00
    我是因为 vagrant 来使用 hyper-v 的,
    VMware 的 provider 需要额外购买插件,
    vbox 还要额外安装就使用了 hyper-v,

    结果 vagrant 功能支持上有一堆限制,
    比如不能指定虚拟机的 ip 地址,管理界面也难用,
    用户体验差 VMware 和 vbox 一大截,
    内存自动扩展算是一个优势吧,
    估计除了 Azure 自家,市场份额小得很。
    KaynW
        20
    KaynW  
       2021-07-23 08:59:10 +08:00
    docker 和 hyper-v 不能共存 ??? 问号脸
    bfdh
        21
    bfdh  
       2021-07-23 09:02:40 +08:00
    最终我也放弃了 hyper-v 和 wsl(2),现在要么用 windows 主机+vmware,要么用 linux 主机+vbox 。
    bfdh
        22
    bfdh  
       2021-07-23 09:04:22 +08:00
    @sky96111 我也是用 Linux 做主操作系统,Vbox 开 windows,但是 Vbox 经常 CPU 占用高,即使 windows 处于空闲状态。这个有解决方案吗?
    soulzz
        23
    soulzz  
       2021-07-23 09:07:46 +08:00
    碰到过 hyper-v 虚拟机死机,重启无法启动,有检查点也无法还原
    坑的一批
    建议老老实实 kvm
    lingxi27
        24
    lingxi27  
       2021-07-23 09:34:12 +08:00
    直接 linux 桌面版不就得了
    cheng6563
        25
    cheng6563  
       2021-07-23 09:38:39 +08:00   1
    Hyper-V 的网络真的是一言难尽,我只是想整个 NAT 让虚拟机脸上网,鬼知道为什么虚拟机会分到和主机一样的 IP 导致双双断网。然后重启他又正常了。
    wolfie
        26
    wolfie  
       2021-07-23 09:49:32 +08:00
    docker for windows 就是基于 hyper-v 的吧
    whale
        27
    whale  
       2021-07-23 09:55:18 +08:00
    Windows Server 下的 Hyper-V 还是挺好用的,Windows 10 就……
    debuggerx
        28
    debuggerx  
       2021-07-23 10:00:26 +08:00   1
    别的不说,虚拟 Linux 的图形性能极差。
    我的笔记本已经是双系统了,留着 win 的唯一原因是,linux 没有好用的无线投屏方案,办公室开会的时候需要进 Win 投屏,然后虚拟机挂载物理硬盘启动 Linux 做演示。最开始用 Hyper-V,好家伙直接卡成 ppt,1fps 可能都不到,而且挂载前还必须让物理磁盘脱机;后来试了 VMWare player,性能很好,图形显示流畅,大概有个 30fps,但是也要脱机硬盘;最后用的 VBox,图形性能不如 VM,大概 20fps 吧,但是终于可以不用脱机硬盘了……
    zoain
        29
    zoain  
       2021-07-23 10:03:32 +08:00
    @bfdh 我用的精简 win 7 还行
    zone10
        30
    zone10  
       2021-07-23 10:05:54 +08:00
    之前一直用的 VirtualBox, 用过 wsl2 后 VirtualBox 暂时可以抛了, 目前没遇到问题. Docker Desktop 也可以用 wsl2, 使用体验就是爽的批爆, 回不去了
    libook
        31
    libook  
       2021-07-23 10:33:53 +08:00   2
    emmmm,WSL1 用过挺长一段时间,最近一年都在用 WSL2,基本用来做 Web 全栈开发,有时候还打个 Docker 镜像和 you-get 一些学习资料。

    个人遇到的 WSL2 目前最大的短板有两个:一个是 IP 不固定(只有 WSL2 有这个问题,自己建的虚拟机不会有这个问题);另一个是因为是类似 chroot 的环境所以没有系统启动阶段,这样会导致 systemd 等一众工具没法用。

    但实际上 WSL 面向的场景从来就是那 80%的应用开发场景,不涉及系统和硬件的那一部分,有剩下 20%特殊需求肯定还是要考虑虚拟机或双系统。不过这 80%对于我来说完全够用了。

    文件共享,我没有在 Hyper-V 上直接用过这个功能,因为 WSL2 的话应该会帮你把 Windows 的分区都挂载好了,你可以 df 看一下是不是这样,我用的 Arch 发行版,Widnows 的分区会自动挂在 /mnt 下面,所以一般我不需要单独再配置一个文件共享功能。

    Docker 的话不知道你说的是不是 Docker Desktop for Windows,这个应该是有一个引擎是直接用 Hyper-V 的,你可以去设置里看看,而且它还专门适配了 WSL2 (基于 Hyper-V ),都有适配了肯定是希望你能两个一起开配合使用的,你说的不能共存的问题我没有遇到过。但是说实话,Windows 和 Mac 上的 Docker Desktop 真的是很难用,我现在基本都是把他们卸载掉,用 docker-machine 的方案直接在虚拟机里跑一个完整的 Linux,然后再跑满血的 Docker,不用 docker-machine 工具的话你自己创建一个虚拟机装个 Linux,然后装 Docker 配置一个局域网访问,最后在 WSL 里配置一个 DOCKER_HOST 环境变量就可以直接用指令操纵虚拟机里的 Docker 服务了。

    netstat 我的 WSL2 里可以用,你看看是不是要装个 net-tools 软件包,这个在很多 Linux 发行版都是不预装的,手动安装一下就好。

    总结下来就是:
    1. WSL 的设计目标是应用开发的时候用的,硬件开发、系统开发、跑服务都不是它能胜任的。
    2. WSL2 和自己创建的 Hyper-V 虚拟机差别比较大,有跑服务的需求可以自己创建虚拟机并配置固定 IP 。
    3. 有问题可以把问题发出来,大家帮你解决,很多事情下结论还比较早,只要你还有那么一点点热情,问题都会解决的。
    pkoukk
        32
    pkoukk  
       2021-07-23 10:39:22 +08:00
    之前用 hyperv 和 wsl2 开发了一年左右吧,除了偶尔出现 localhost 不通的情况,其他好像也没啥问题
    网络上的问题大多数都能通过 wsl --shutdowm 解决
    至于为啥现在不用了...因为内存占用太高了,公司发的本配置不咋滴
    andyangyu
        33
    andyangyu  
       2021-07-23 10:42:08 +08:00
    @echo1937 我也走了这个坑, 后来发现 win10 新版 Virtualbox 和 hyper-v 可以共存, vagrant 就可以用 virtualbox 作为后端了.
    sky96111
        34
    sky96111  
       2021-07-23 12:23:21 +08:00 via Android
    @bfdh 我直接用的 QEMU
    df0618
        35
    df0618  
       2021-07-23 13:36:41 +08:00
    @libook IP 你装了 docker 的话可以直接 host.docker.internal
    xman99
        36
    xman99  
       2021-07-23 13:57:11 +08:00
    本地开发 php 的,开启 wsl2 内置功能后,卡到无法工作。 把 docker 桌面版 里面 wsl2 内联关闭后,还可以的。就是单次接口需要 2s 左右才响应的
    join
        37
    join  
    OP
       2021-07-23 14:10:32 +08:00 via iPhone
    @libook 这就是 windows 坑的所在,每个用户的环境不一致,导致遇到的问题也不一样。你看起来配置没问题运行得好好的,但出了问题搜索引擎通常解决不了问题。而且微软的提问社区工作人员回答质量非常差,根本解决不了问题。 你也找不到地方去解决问题,这就是闭源的问题所在。这对开发者是不友好的。开发者的使用环境和普通用户真的不一样。我依赖的组件是我工作必须,它不工作了,我也没法工作了,我的软件也没法工作了。而普通用户遇到问题换个电脑或软件,或重装操作系统就解决了。
    fuxiuyin
        38
    fuxiuyin  
       2021-07-23 14:11:22 +08:00 via iPhone
    最简单的 hyper-v 网络就是创建一个 internel 的 switch,然后加一个 nat 。直接搜 hyper-v internel switch internet access
    join
        39
    join  
    OP
       2021-07-23 14:16:53 +08:00 via iPhone
    @fuxiuyin 这些我都干了,也能用了但就是中途会出问题,而且解决不掉。
    bfdh
        40
    bfdh  
       2021-07-23 14:35:16 +08:00
    @zoain #29 Win7 我没试过,不知道有没有这个问题。不过现在有点不敢用各类修改版 /精简版,还是更相信官方原版。

    @sky96111 #34 我有同事用 QEMU 的,一样存在 CPU 占用高的问题。
    honkki
        41
    honkki  
       2021-07-23 14:49:55 +08:00
    wsl2 真的难用 一直用的 wsl1 docker 直接跑在 vmware 虚拟机
    xsen
        42
    xsen  
       2021-07-23 16:44:06 +08:00
    virtualbox + Ubuntu(bridge) + docker + portianer
    WenjieYe
        43
    WenjieYe  
       2021-07-23 16:46:14 +08:00
    可能是能力有限,一直没搞懂 Hyper- V 的网络设置
    Rache1
        44
    Rache1  
       2021-07-23 17:14:40 +08:00
    @xman99 直接用 wsl 挂载 /mnt 挂载项目的话很慢。。。我的一个空项目都要 6s+
    xman99
        45
    xman99  
       2021-07-23 17:17:36 +08:00
    @Rache1 #44 所以 我放弃 wsl2 模式,直接用 hyper 的模式了
    bl
        46
    bl  
       2021-07-23 17:34:39 +08:00
    使用 linux
    hijoker
        47
    hijoker  
       2021-07-23 17:42:08 +08:00
    直接 vmware 就完了,折腾 wsl 这些都是自己找罪受
    libook
        48
    libook  
       2021-07-23 17:44:25 +08:00
    @df0618 #35 Docker Desktop 会自动在 WSL2 下设置好,可以直接用 docker 指令,IP 问题主要是自己跑一些服务的时候在 Windows 上不好确定应该使用哪个 IP 来访问,因为每次重启电脑都会随机一个新的 IP 。
    terence4444
        49
    strong>terence4444  
       2021-07-23 17:48:18 +08:00 via iPhone
    忍了 HyperV 两个月实在受不了了,换成了 VirtualBox
    libook
        50
    libook  
       2021-07-23 18:03:49 +08:00
    @join #37 WSL 毕竟不是真正的 Linux 操作系统,微软也不是这么标榜的,所以还是要看 WSL 究竟能解决什么问题,然后看是否能满足自己的需求,再决定用不用。

    想要玩转 WSL 需要了解的信息还是挺多的,有些信息不了解全屏 Linux 的思维定式就很容易发生预期之外的事情,而且大多资料国内找不到,官方文档也没有,我找到的不少有用信息都是在 microsoft/WSL 的 GitHub Issues 里。

    我自己有两台 Windows,一台日常使用另一台当做服务器,配置 WSL 环境都比较顺,WSL 满足不了的也都找到了替代方案。

    所以我对 WSL 的评价可能没你那么差,个人建议还是冷静下来,有什么以为可以来 V 站上问,大多问题应该都是能找到答案的。
    MiketsuSmasher
        51
    MiketsuSmasher  
       2021-07-23 21:47:42 +08:00
    @Yadomin 不会这就是老电脑装 Windows10 性能差的原因之一吧?
    anubu
        52
    anubu  
       2021-07-23 22:04:33 +08:00 via Android
    Windows Server 2019 + Hyper-V + Debian 10 + Docker + Kubernetes

    稳定使用一年多,没怎么折腾,没碰到太奇怪的网络问题。
    abeholder
        53
    abeholder  
       2021-07-23 22:09:32 +08:00
    上面提到 WSL2 不能固定 ip 的可以用下 wsl2host ;

    wsl2 要不是图它启动速度快 ,我都打算换回 Vargrant + VirtualBox 了...
    abeholder
        54
    abeholder  
       2021-07-23 22:12:58 +08:00
    顺便一提 ,关于 wsl2 有时候你用着用着文件目录就变成了 unreachable ,

    这个简直不能再认同 ,每次都得重启 wsl2 才能解决 。重启 wsl2 导致 宿主机的 docker 也得跟着重启,有时候 docker 还因为 wsl2 死活启动不起来 ,不过最近更新了几次 docker 之后,貌似没发现 docker 起不来的问题了 。
    FrankHB
        55
    FrankHB  
       2021-07-23 22:14:20 +08:00
    看标题就猜吐槽这个,还真对了。
    我补个更直接的:那个分辨率,高分屏用起来就是呵呵……
    然后 VirtualBox 卡翔+论坛里一坨回答的都追不上版本答非所问(当时遇到 Hyper-V 共存问题)。。。
    Windows 桌面用省事还是老实 VMware 吧。
    FrankHB
        56
    FrankHB  
    2021-07-23 22:19:51 +08:00
    @abeholder 跑个题,没怎么用 Docker,没遇到 WSL 问题,倒是出现过不止一次 Docker 把自己更新得起不来的状况……一次是更新后 docker.exe 就是坏的,还有一次把 docker-compose.exe 写坏了……
    thtznet
        57
    thtznet  
       2021-07-28 17:13:47 +08:00
    @Yadomin 这说明 hyper-v 的虚拟层设计得非常好,性能损失非常小,甩对手几条街,虽然客户端的操作 UI 的确设计得不那么易用。
    thtznet
        58
    thtznet  
       2021-07-28 17:19:59 +08:00
    join
        59
    join  
    OP
       2021-08-01 22:48:47 +08:00 via iPhone
    @thtznet 其实性能损失挺多的,至少编译程序要慢很多。
    630071099
        60
    630071099  
       2023-08-03 11:04:47 +08:00
    HyperV 在 Windows11 系统反正不好用,网络间歇性出现问题,心累。
    Virtualbox 大家都不推荐,我用过一段时间,反而觉得没啥问题,运行 Linux 稳定。
    Vmware 网络配置这一块确实强太多了,性能损耗似乎也就比 HyperV 多一些,准备尝试下长期使用。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5269 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 08:35 PVG 16:35 LAX 00:35 JFK 03:35
    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