优化WSL2

WSL2是基于 Hyper-V 的虚拟化技术,因此,WSL2 的性能比 WSL1 更高。但是,WSL2 的性能仍然比宿主机性能要差。你以为你在运行Linux,其实你是在运行 Windows Defender。习惯使用Linux的用户,使用WSL2 还是很方便,如果安装了docker,那么docker 也可以运行在WSL2 上,可以说是打通生态链了。也可以用到宿主机的显卡和MPS,还可以在WSL2上运行GUI 应用。所有优化WSL还是很必要的。

使用固定大小的虚拟磁盘

WSL2 默认使用动态扩展的虚拟磁盘,这会导致磁盘空间不足的问题。你可以使用固定大小的虚拟磁盘来避免这个问题。(这个我一直导入没成功,有成功的朋友分享下经验)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
wsl --export Ubuntu-24.04 G:\wsl.tar

wsl --unregister Ubuntu-24.04

# 使用 PowerShell 创建一个新的 VHD 文件。假设创建一个 20GB 的 VHD 文件
New-VHD -Path G:\wsl\ubuntu_fixed.vhdx -SizeBytes 20GB -Fixed

Mount-VHD -Path G:\wsl\ubuntu_fixed.vhdx

# 初始化磁盘,这两个可以用软件手动做,失败我感觉是分区的问题,我是用软件格式化ext4的分区了
Initialize-Disk -Number (Get-Disk | Where-Object IsOffline -Eq $true | Select-Object -First 1).Number
New-Partition -DiskNumber (Get-Disk | Where-Object IsOffline -Eq $true | Select-Object -First 1).Number -UseMaximumSize -AssignDriveLetter | Format-Volume -FileSystem NTFS -NewFileSystemLabel "WSL"

DisMount-VHD -Path G:\wsl\ubuntu_fixed.vhdx


wsl --import Ubuntu-24.04 G:\wsl\ubuntu_fixed.vhdx G:\wsl.tar --version 2

wsl -d Ubuntu-24.04

调整配置虚拟内存和CPU

创建一个配置文件 C:\Users\<username>\.wslconfig,并添加以下内容:

1
2
3
[wsl2]
memory=16GB
processors=12

重启WSL2。

1
2
wsl --shutdown
wsl

添加排除项到 Windows 安全中心

为了进一步优化性能,可以将新的 VHD 文件添加到 Windows 安全中心的排除项中:

  • 打开“Windows 安全中心”。
  • 进入“病毒和威胁防护”设置。
  • 点击“管理设置”。
  • 在“排除项”下,点击“添加或删除排除项”。
  • 添加新的 VHD 文件路径(例如 G:\wsl\ubuntu_fixed.vhdx)。