在 WSL2(Windows Subsystem for Linux 2)下安装软件包时遇到存储空间不足的问题,您可以采取以下步骤来解决:
- 检查 WSL2 的磁盘使用情况:
- 打开 WSL2 终端并运行以下命令检查磁盘使用情况:
df -h
- 打开 WSL2 终端并运行以下命令检查磁盘使用情况:
- 扩大 WSL2 虚拟磁盘:
- 默认情况下,WSL2 会分配一个动态增长的虚拟硬盘 (VHD),但可能会有最大限制。您可以手动扩大 VHD 的大小。
- 关闭所有 WSL 实例:
wsl --shutdown
- 列举实例
- wsl -l -v
- NAME STATE VERSION
- Ubuntu-22.04 Stopped 2
docker-desktop Stopped 2
docker-desktop-data Stopped 2
- wsl -l -v
- 导出现有的 WSL 实例(以 Ubuntu 为例):
wsl --export Ubuntu-22.04 D:\backup\ubuntu-22.04.tar
- 卸载现有的 WSL 实例:
wsl --unregister Ubuntu-22.04
- 重新导入 WSL 实例并指定更大的 VHD 大小(例如,增加到 512GB):
wsl --import Ubuntu-22.04 D:\WSL\Ubuntu-22.04 D:\backup\ubuntu-22.04.tar
- 下面是命令中各个参数的解释:
- wsl –import: 这是 WSL 命令,用于导入一个新的 WSL 实例。
- Ubuntu: 这是您为新的 WSL 实例指定的名称。您可以根据需要更改此名称。
- D:\WSL\Ubuntu: 这是新 WSL 实例的安装位置。您可以将实例安装在其他分区或文件夹中,以便更好地管理存储空间。
- D:\backup\ubuntu.tar: 这是要导入的 WSL 实例的备份文件路径。该文件是之前使用
wsl --export
命令导出的 tar 文件。 - 命令的作用是从
D:\backup\ubuntu.tar
文件导入一个新的 WSL 实例,命名为Ubuntu
,安装在D:\WSL\Ubuntu
目录,并为该实例分配一个 100GB 的虚拟硬盘。
- 使用 diskpart 进行调整
- diskpart
- DISKPART> select vdisk file=”C:\Path\To\Your\Distro\ext4.vhdx”
- DISKPART> expand vdisk maximum=512000 # 单位为 MB,这里是 512GB
- DISKPART> exit
- 释放 WSL2 内部的空间:
- 删除不必要的文件:
apt-get clean sudo apt-get autoremove
- 清理 Docker 镜像(如果使用 Docker):
docker system prune -a
- 删除不必要的文件:
- 使用外部存储:
- 您可以将部分数据移动到 Windows 文件系统中,然后在 WSL2 中通过
/mnt
目录访问。例如,将文件移到 Windows D 盘:mv ~/largefile /mnt/d/
- 您可以将部分数据移动到 Windows 文件系统中,然后在 WSL2 中通过
- 更改 WSL2 默认安装位置:
- 如果您的 Windows 系统盘(通常是 C 盘)空间不足,您可以将 WSL2 的默认安装位置更改为其他盘符。
通过以上步骤,您应该能够在 WSL2 下释放足够的空间,解决安装过程中遇到的存储空间不足问题。
空间分配情况
实际的 df -h 结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
df -h Filesystem Size Used Avail Use% Mounted on none 63G 4.0K 63G 1% /mnt/wsl none 3.7T 1.8T 2.0T 47% /usr/lib/wsl/drivers none 63G 0 63G 0% /usr/lib/modules none 63G 0 63G 0% /usr/lib/modules/5.15.146.1-microsoft-standard-WSL2 /dev/sdc 251G 237G 1.8G 100% / none 63G 96K 63G 1% /mnt/wslg none 63G 0 63G 0% /usr/lib/wsl/lib rootfs 63G 1.9M 63G 1% /init none 63G 932K 63G 1% /run none 63G 0 63G 0% /run/lock none 63G 0 63G 0% /run/shm tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup none 63G 76K 63G 1% /mnt/wslg/versions.txt none 63G 76K 63G 1% /mnt/wslg/doc |
从 df -h
的输出中可以看出,/dev/sdc
分区的使用率已经达到了 100%,这是造成存储空间不足的主要原因。以下是一些解决方案,您可以选择适合您的方法来释放空间:
- 删除不必要的文件和目录:
- 查找和删除不必要的文件或目录:
sudo du -h --max-depth=1 /
- 找到占用大量空间的目录后,可以逐层深入,最终删除不需要的文件。
- 查找和删除不必要的文件或目录:
1 2 3 4 5 6 7 8 9 10 11 |
sudo du -h --max-depth=1 / [sudo] password for tony: 225G /home 4.0K /srv 4.0K /wslcJPDDB 4.0K /wslAIFDGB 4.0K /wslAkBdHB 4.7M /etc 4.0K /opt 112K /root 8.0K /Docker |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
sudo du -h --max-depth=1 /home/tony/ 2.3G /home/tony/.rustup 8.0K /home/tony/.nv 580K /home/tony/.triton 12K /home/tony/.conda 138G /home/tony/.cache 84G /home/tony/anaconda3 570M /home/tony/.cargo 16K /home/tony/.config 40K /home/tony/.docker 12K /home/tony/.modelscope 28K /home/tony/.jupyter 32K /home/tony/.ssh 40K /home/tony/.local 80K /home/tony/.ipython 225G /home/tony/ |
逐级查找就可以找到哪个目录占用的空间最大,删除或移动到别的目录下
默认用户的修改
重新导入的系统,如果通过Windows 系统的菜单,切换不到默认的用户,可能直接是 root 用户
有两种方式可以直接进入默认用户,比如 用户名为:tony
直接通过Windows 命令行
1 |
wsl -d Ubuntu-22.04 -u tony |
或是修改 wsl2 下面的 /etc/wsl.conf, 增加如下内容
1 2 |
[user] default=tony |
先使用 wsl –shutdown 关闭系统,再进入系统就可以了。