解决碎片化
- 找到 VHDX 文件位置
如果是默认位置的话,定位:
(Get-ChildItem -Path "$env:LOCALAPPDATA\Packages" -Recurse -Filter "ext4.vhdx" -ErrorAction SilentlyContinue).FullName
|
Get-VHD "C:\Users\diraw\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx" | Select-Object Path, VhdType, FileSize, Size, FragmentationPercentage
|
- 备份数据
mkdir C:\WSL-Backup wsl --export Ubuntu-24.04 C:\WSL-Backup\ubuntu-backup.tar
|
- 清理旧实例
wsl --shutdown Stop-Process -Name wslservice, wslinstaller -Force
wsl --unregister Ubuntu-24.04
|
- 重建为固定大小 VHDX
mkdir C:\WSL2\Ubuntu-24.04
wsl --import Ubuntu-24.04 C:\WSL2\Ubuntu-24.04 C:\WSL-Backup\ubuntu-backup.tar --version 2
wsl -d Ubuntu-24.04 exit wsl --shutdown
wsl --manage Ubuntu-24.04 --resize 80530636800
Convert-VHD -Path "C:\WSL2\Ubuntu-24.04\ext4.vhdx" ` -DestinationPath "C:\WSL2\Ubuntu-24.04\ext4-fixed.vhdx" ` -VHDType Fixed
|
- 替换并注册
wsl --unregister Ubuntu-24.04 Move-Item "C:\WSL2\Ubuntu-24.04\ext4-fixed.vhdx" "C:\WSL2\Ubuntu-24.04\ext4.vhdx" -Force wsl --import-in-place Ubuntu-24.04 "C:\WSL2\Ubuntu-24.04\ext4.vhdx"
|
- 测试
fio --name=seqread --rw=read --bs=1M --size=2G --numjobs=4 --direct=1 --runtime=10
|
扩容
- 检查当前使用情况
- 在 Windows PowerShell(管理员) 中执行:
- 找到 VHDX 文件位置
如果是默认位置的话,定位:
(Get-ChildItem -Path "$env:LOCALAPPDATA\Packages" -Recurse -Filter "ext4.vhdx" -ErrorAction SilentlyContinue).FullName
|
- 扩展虚拟磁盘
在 PowerShell(管理员) 中执行以下命令(假设要扩展到 256GB):
diskpart
select vdisk file="C:\Users\你的用户名\AppData\Local\Packages\...\LocalState\ext4.vhdx"
expand vdisk maximum=256000
exit
|
- 启动 WSL 并扩展文件系统
在 WSL 内部扩展文件系统(对于 ext4):