随机
Enter 搜索 ↑↓ 切换 Esc 清空

wsl_disk_expand

命令

WSL 虚拟磁盘扩容命令

wsl_disk_expand

WSL 虚拟磁盘扩容命令

补充说明

wsl_disk_expand 提供 WSL2 虚拟磁盘(vhdx 文件)的扩容和压缩操作命令,用于解决 WSL 磁盘空间不足的问题。WSL2 使用 ext4 虚拟硬盘文件,默认路径在 %USERPROFILE%\AppData\Local\Packages\ 下。

查看磁盘使用

# 在 WSL 中查看磁盘使用
wsl -d <发行版> -- df -h

# 查看虚拟磁盘文件路径和大小
wsl --manage <发行版> --get-disk-size

# 查找 vhdx 文件路径
Get-ChildItem -Path "$env:LOCALAPPDATA\Packages\*" -Filter "ext4.vhdx" -Recurse -ErrorAction SilentlyContinue | Select-Object FullName, Length

扩容磁盘

# 1. 停止所有 WSL 实例
wsl --shutdown

# 2. 找到 vhdx 文件路径
$vhdxPath = (Get-ChildItem -Path "$env:LOCALAPPDATA\Packages\*" -Filter "ext4.vhdx" -Recurse | Select-Object -First 1).FullName
Write-Host "磁盘文件: $vhdxPath"

# 3. 使用 diskpart 扩容
@"
select vdisk file="$vhdxPath"
expand vdisk maximum=100000
"@ | diskpart

# 4. 重新启动 WSL
wsl

# 5. 在 WSL 中扩展文件系统
sudo mount -t devtmpfs none /dev
# 查看分区信息
lsblk
# 扩展分区(假设 /dev/sdX 是虚拟磁盘)
sudo growpart /dev/sda 1
# 扩展文件系统
sudo resize2fs /dev/sda1

# 验证扩容结果
df -h

压缩磁盘

WSL2 虚拟磁盘自动增长但不自动收缩,手动压缩可回收空间:

# 1. 在 WSL 中填充零以标记未使用空间
wsl -d <发行版> -- sudo dd if=/dev/zero of=/tmp/zero bs=1M status=progress
wsl -d <发行版> -- sudo rm /tmp/zero

# 2. 停止 WSL
wsl --shutdown

# 3. 使用 diskpart 压缩
$vhdxPath = (Get-ChildItem -Path "$env:LOCALAPPDATA\Packages\*" -Filter "ext4.vhdx" -Recurse | Select-Object -First 1).FullName
@"
select vdisk file="$vhdxPath"
compact vdisk
"@ | diskpart

迁移磁盘到其他位置

# 1. 导出 WSL 发行版
wsl --export <发行版> D:\wsl-backup\<发行版>.tar

# 2. 注销原发行版
wsl --unregister <发行版>

# 3. 导入到新位置
wsl --import <发行版> D:\wsl\<发行版> D:\wsl-backup\<发行版>.tar --version 2

# 4. 设置默认用户(可选)
<发行版> config --default-user <用户名>

# 5. 验证
wsl -l -v

注意事项

相关命令