You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL出现「No space left on device」错误但硬盘空间充足,如何解决?

WSL提示「No space left on device」但本地硬盘有空间的解决办法

先确认问题根源

WSL默认使用独立的虚拟磁盘(.vhdx文件),和本地硬盘空间是分开的。先排查是不是虚拟磁盘本身满了:

  • 在WSL终端执行 df -h,查看根目录(/)的使用情况,确认是否真的磁盘占满。
  • 也可以在Windows文件管理器输入 \\wsl$\<你的发行版名称>,直观查看WSL文件系统的占用情况。

解决办法

1. 扩展WSL虚拟磁盘大小

如果虚拟磁盘确实满了,直接扩容:

  • 先关闭WSL:在Windows PowerShell/CMD执行 wsl --shutdown
  • 找到虚拟磁盘文件,默认路径是 C:\Users\<你的Windows用户名>\AppData\Local\Packages\<发行版包名>\LocalState\ext4.vhdx,比如Ubuntu的包名类似 CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc
  • 用diskpart扩容:
    1. 打开CMD,输入 diskpart
    2. 执行 select vdisk file="你的vhdx文件完整路径"
    3. 执行 expand vdisk maximum=<新容量,单位MB,比如102400代表100GB>
    4. 输入 exit 退出diskpart
  • 回到WSL终端,扩展文件系统:执行 sudo resize2fs /dev/sda(如果根分区不是/dev/sda,用df -h查看根分区对应的设备名,比如/dev/sda1)

2. 清理WSL内的无用文件

如果虚拟磁盘还有空间但报错,可能是垃圾文件占了空间:

  • 清理包管理缓存:
    • Ubuntu/Debian:sudo apt autoremove && sudo apt clean && sudo apt autoclean
    • CentOS/RHEL:sudo dnf clean all && sudo dnf autoremove
  • 定位大文件:用 du -h --max-depth=1 / 找出占用空间大的目录,比如/var/log/(日志文件)、下载目录、Docker镜像(如果用了容器),针对性删除。
  • 清理swap文件:如果启用了swap,检查/swapfile,不需要的话可以删除,并注释/etc/fstab里的swap配置。

3. 修复损坏的虚拟磁盘

虚拟磁盘损坏可能导致空间显示异常:

  • 关闭WSL:wsl --shutdown
  • 用diskpart修复:
    1. 打开CMD,输入 diskpart
    2. 执行 select vdisk file="你的vhdx文件路径"
    3. 执行 attach vdisk readonly
    4. 执行 repair vdisk
    5. 执行 detach vdisk
  • 重启WSL,再用df -h检查空间。

4. 迁移WSL到更大的磁盘

如果C盘本身空间紧张,把WSL迁移到其他磁盘:

  • 关闭WSL:wsl --shutdown
  • 导出发行版备份:wsl --export Ubuntu D:\wsl_backup\ubuntu.tar(替换Ubuntu为你的发行版名称,路径自定义)
  • 注销当前发行版:wsl --unregister Ubuntu
  • 导入到新位置:wsl --import Ubuntu D:\wsl\Ubuntu D:\wsl_backup\ubuntu.tar --version 2
  • 设置默认用户:ubuntu config --default-user <你的WSL用户名>(不同发行版命令不同,比如Debian用debian config --default-user <用户名>)

内容的提问来源于stack exchange,提问作者James Shapiro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 20:23:26