刚发现 WSL2 可以通过 virtiofs 访问 NTFS 分区, IO 速度明显提升 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ShadowPower

刚发现 WSL2 可以通过 virtiofs 访问 NTFS 分区, IO 速度明显提升

  •  3
     
  •   ShadowPower 2 天前 3713 次点击
    虽然任何文档里都没有相关说明,但是根据 changelog 和代码提交记录,可以得知这个功能以及具体的开关。开启方法:

    1. 升级到 Pre Release 版本:
    wsl --update --pre-release

    2. 改 .wslconfig:
    [wsl2]
    virtiofs=true

    3. 重启 WSL:
    wsl --shutdown

    然后就好了

    验证是否生效,在 WSL 里执行:
    findmnt -T /mnt/c -o TARGET,SOURCE,FSTYPE,OPTIONS

    如果 FSTYPE 的值为 virtiofs ,说明生效了


    更完整的配置是:
    [wsl2]
    virtio=true
    virtiofs=true
    hostFileSystemAccess=true

    如果有手动配置成 false 的配置项,可以改成 true



    我今天都在用这个版本跑 AI Agent 改 NTFS 目录下的代码。原先有个项目跑单元测试要 3 分半,现在只要 1 分钟了
    第 1 条附言    1 天前
    我实际测试了一下性能,结果如下:
    ext4 vhdx:
    1) 大文件顺序吞吐
    顺序写入 : 1780.9 MiB/s | 1781 IOPS | 平均时延 8.96 ms
    顺序读取 : 2240.7 MiB/s | 2241 IOPS | 平均时延 7.08 ms

    2) 4K 随机 I/O
    读写比例 : 70% read / 30% write
    随机读取 : 131.9 MiB/s | 33759 IOPS | 平均时延 696.17 us
    随机写入 : 56.6 MiB/s | 14488 IOPS | 平均时延 583.29 us

    3) 目录访问时延
    ioping : min/avg/max/mdev = 542.8 us / 1.87 ms / 4.76 ms / 1.22 ms

    9p:
    1) 大文件顺序吞吐
    顺序写入 : 117.9 MiB/s | 118 IOPS | 平均时延 134.74 ms
    顺序读取 : 141.0 MiB/s | 141 IOPS | 平均时延 112.49 ms

    2) 4K 随机 I/O
    读写比例 : 70% read / 30% write
    随机读取 : 12.2 MiB/s | 3131 IOPS | 平均时延 7.15 ms
    随机写入 : 5.2 MiB/s | 1339 IOPS | 平均时延 7.15 ms

    3) 目录访问时延
    ioping : min/avg/max/mdev = 289.8 us / 336.5 us / 389.6 us / 29.4 us

    virtiofs:
    1) 大文件顺序吞吐
    顺序写入 : 214.1 MiB/s | 214 IOPS | 平均时延 74.15 ms
    顺序读取 : 239.9 MiB/s | 240 IOPS | 平均时延 66.29 ms

    2) 4K 随机 I/O
    读写比例 : 70% read / 30% write
    随机读取 : 146.9 MiB/s | 37595 IOPS | 平均时延 599.21 us
    随机写入 : 63.1 MiB/s | 16149 IOPS | 平均时延 583.33 us

    3) 目录访问时延
    ioping : min/avg/max/mdev = 208.5 us / 239.3 us / 281.8 us / 24.5 us


    结论是:
    顺序读写只比 9p 快一倍
    但是 4K 随机读写比 ext4 vhdx 还要快
    这意味着对于代码编译、构建的场景提升显著,而对于大量日志读写、AI 模型加载的性能提升一般
    34 条回复    2026-04-23 22:57:53 +08:00
    loading
        1
    loading  
       2 天前 via Android
    突然想到,如果 windows 开个服务,然后走网络呢…
    zhengfan2016
        2
    zhengfan2016  
       2 天前
    那是不是以后不需要把代码文件移到 wsl 内部了,这个好哇
    YanSeven
        3
    YanSeven  
       2 天前
    @zhengfan2016 我之前都是一个软链接链进去。
    familiar
        4
    familiar  
       2 天前
    想起来前面微软说的今年要提升 wsl 的提升跨系统文件读写速度,优化网络等。不知道这个 virtiofs 配置是不是这个计划里面的
    MuyuQ
        5
    MuyuQ  
       2 天前
    @familiar 2026 年 3 月底 WSL 2.7.1 预发布版( Pre-release )正式带了大量 virtiofs 改进(包括 statx 支持、目录挂载、权限修复等),4 月份社区讨论和实际使用明显增多。 还真是微软的承诺兑现。
    iorilu
        6
    iorilu  
       2 天前
    不错阿, 好东西还藏着, 为什么不公开
    loading
        7
    loading  
       2 天前 via Android
    @iorilu Pre Release 版本
    gibber
        8
    gibber  
       2 天前
    windows10 是不是更新不了这个版本
    Ipsum
        9
    Ipsum  
       2 天前 via Android
    以前用 windows 开发的诟病终于修了?可惜,现在主用 mac OS 了。
    COOOOOOde
        10
    COOOOOOde  
       2 天前
    来晚了, 25 年已把开发机改成 macos 了, 现在只用 win 娱乐
    yulon
        11
    yulon  
       2 天前
    @iorilu 就怕刚公开就停止维护了(
    andyangyu
        12
    andyangyu  
       1 天前
    我改了之后没有效果,进入一个代码目录都要卡几十秒钟
    Srar
        13
    Srar  
       1 天前
    开启选项后遇到读取文件会有静默错误
    INCerry
        14
    INCerry  
       1 天前
    @Srar 具体会是什么样的问题?
    scegg
        15
    scegg  
       1 天前
    好像有个问题,当外部文件发生变化时,linux 内收不到变更通知。inotify 没打通。
    Hephaistos
        16
    Hephaistos  
       1 天前
    额,别在工作机上用 Pre Release ,release 之前特性都可能删的
    javalaw2010
        17
    javalaw2010  
       1 天前
    虽然但是,ntfs 和 ext4 文件系统不一致还是有可能导致问题的,ntfs 默认大小写不敏感,虽然有办法开启大小写敏感,但是我想大部分人创建项目的时候应该不会记得这个步骤。。。但至少是迈出了这一步吧
    WispZhan
        18
    WispZhan  
       1 天前
    Linux 最新内核对 NTFS 的支持也提升了。 以后只会更好。

    https://www.phoronix.com/news/Linux-7.1-New-NTFS-Driver
    artiga033
        19
    artiga033  
       1 天前 via Android
    看起来不错,但是我已经没有跨文件系统大量随机读写的需求了。需要在 win 侧跑的代码都是和 Windows 强相关的,linux 下也跑不了;别的代码全放 wsl 侧也挺好,毕竟某些语言天生就看不起 Windows 呢(
    paranoiagu
        20
    paranoiagu  
       1 天前
    这么操作一下,原来的数据还在的吧。
    ShadowPower
        21
    ShadowPower  
    OP
       1 天前
    @paranoiagu 都在,能正常使用
    paranoiagu
        22
    paranoiagu  
       1 天前
    @ShadowPower 谢谢。那我也来搞一下
    paranoiagu
        23
    paranoiagu  
       1 天前
    你们都文档吗?我刚试了一下。想把虚拟硬盘的数据 mv 到物理硬盘,结果一顿报错。移回来,更加报错。

    移过去: [磁盘空间肯定有的]
    mv: error writing 'xxxxxxxxxxxxxxxxxxx': No space left on device


    移回来:
    mv: error writing 'xxxxxxxxxxxxxx': Bad address
    INCerry
        24
    INCerry  
       1 天前
    开启后我遇到了一个问题,会导致虚拟机 hang 死无法结束进程,只能重启。
    ssshn115
        25
    ssshn115  
       1 天前
    已升级还没测试。
    发现个问题,原本在 wsl2 运行的容器挂载的是 windows 目录,现在无法启动了,已经把挂载目录迁移到 wsl 内部了。
    Jack66
        26
    Jack66  
       1 天前
    我也明显感受快,虽然没测,代码都在 wsl
    guoxu1231
        27
    guoxu1231  
       1 天前
    要我说就别折腾 windows 相关开发环境了, 全部 wsl2 或者 macos
    stimw
        28
    stimw  
       1 天前
    做渲染相关的梭哈 wsl 肯定是不方便的,只能虚拟机。
    fcymk2
        29
    fcymk2  
       1 天前
    还是比开个 samba 的慢
    m290236573
        30
    m290236573  
       1 天前
    Codex crashed with the following error:

    (code=139, signal=null).
    Most recent error: None, 改完之后 codex 打不开了
    Srar
        31
    Srar  
       1 天前
    @INCerry 读出来内容可能和实际文件内容不一样,并且没有任何报错。
    wkla
        32
    wkla  
       1 天前
    @Srar 这个很恐怖啊
    jackmod
        33
    jackmod  
       1 天前
    win 环境的工程文件都放在 refs ( dev drive )里,比 ntfs 稍微好点
    paranoiagu
        34
    paranoiagu  
       1 天前 via Android
    悠着点♂
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1062 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 77ms UTC 23:27 PVG 07:27 LAX 16:27 JFK 19:27
    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