wsl2对vhd的限制大小默认为256GB,对一些工作是不够用的
微软官方教程
1、以管理员身份打开powershell或者cmd
2、关闭全部wsl
wsl --shutdown
3、列出所有的Linux实例,确定需要更改vhd实例的全称
Get-AppxPackage -Name "*<distro>*" | Select PackageFamilyName //根据自己安装的wsl2分发,将代码中"*<distro>*"改为"*ubntu*"或其他。
4、如果是通过应用商店安装的linux分发,默认目录一般为
C:\Users\'User name'\AppData\Local\Packages\CanonicalGroupLimited.***\LocalState\ext4.vhdx
//该路径为下一步diskpart中需要用到的路径,暂时将其命名为pathToVHD
//***为实例全称
5、powershell运行diskpart,并且加载vdisk
$diskpart
DISKPART> Select vdisk file=<pathToVHD>
DISKPART> detail vdisk //查看VHD的详细信息
可以看到虚拟大小为256GB
6、拓展vdisk空间
DISKPART> expand vdisk maximum=<sizeInMegaBytes>
//等号后边为空间大小,以MB为单位,默认为256000,我准备拓展到512000
可以看到,更改之后的虚拟大小为500GB
7、退出DISKPART,进入wsl
DISKPART> exit
$wsl
8、在wsl中操作,使wsl知道磁盘大小限制已经更改
bash> sudo mount -t devtmpfs none /dev
//将none挂载到/dev目录下,若返回'mount: /dev: none already mounted on /dev.',可忽略
bash> mount | grep ext4
//得到none挂载到/dev目录下的磁盘路径名
//本句命令返还的信息 '/dev/sdX' 即为磁盘路径名,X可能是a,b,c等
bash> sudo resize2fs /dev/sdX <sizeInMegaBytes>M
大概算了算131072000x4/1024/1024 = 500,vhd大小更改成功
一些注释是按照自己的理解写的,若有不对,感谢指正。