Windows10
教育版64位
WSL 2
Ubuntu 20.04
首先,我们知道WSL 2
使用虚拟化平台将 Linux
分发版与主机 Windows
操作系统一起安装,创建虚拟硬盘 (VHD
) 来存储安装的每个Linux
发行版的文件。 这些 VHD
使用 ext4
文件系统类型 ,并在Windows
硬盘驱动器上表示为 ext4.vhdx
文件:
WSL 2
会自动调整这些 VHD
文件的大小以满足存储需求。 默认情况下,WSL 2
默认安装只会给到1T
的硬盘空间,老版本甚至只有512G
( WSL
版本 0.58.0
之前),更老的版本只有256G
(更早之前)!
这对深度学习来说显然是不够用的,那这个时候又该怎么办呢?
为了解决上述问题,需要给WSL 2
进行扩容。
使用 Linux
df -h
命令检查随 WSL 2
一起安装的 Linux
分发版 VHD
中的可用磁盘空间量:
发现在WSL 2
中确实是1T
的样子。
在Windows
上检查可用磁盘空间,打开 PowerShell
命令行并输入此命令, (替换为
实际分发名称) :
wsl.exe --system -d <distribution-name> df -h /mnt/wslg/distro
输出将包括:
VHD
文件系统的标识符VHD
) 的最大空间量VHD
中当前使用的空间量VHD
(分配大小中剩余的空间量减去)WSL
分配给 VHD
的磁盘空间量在最新版本的 WSL
中始终显示默认最大为1TB
,即使实际 Windows
设备上的磁盘空间量小于此大小。 WSL
将装载一个 VHD
,该 VHD
将在使用时扩展其大小,因此 Linux
分发版会发现它可以增长到分配的最大大小 1TB
。1. 使用wsl.exe --shutdown
命令终止所有 WSL
实例
2. 查找 Linux 分发版的 .vhdx 文件和磁盘路径
打开 PowerShell
并使用以下脚本,将 distribution-name
替换为实际分发名称:
(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '' }).GetValue("BasePath") + "\ext4.vhdx"
结果将显示类似于: %LOCALAPPDATA%\Packages\
的路径。当然,如果你的WSL 2
不是装在C
盘,则会显示:
将此目录路径复制到与计算机上安装的 Linux
分发版关联的 ext4.vhdx
文件。
3. 使用管理员权限打开 Windows
命令提示符,然后通过输入以下命令打开 diskpart
命令解释器:
diskpart
4. 现在会出现一个 DISKPART>
提示。 输入以下命令,将 pathToVHD
替换为步骤 2
中复制的与 Linux
分发关联的文件的目录路径 ext4.vhdx
。
Select vdisk file=""
5. 显示与此虚拟磁盘关联的详细信息,包括 虚拟大小,表示当前分配的 VHD 最大大小:
detail vdisk
6. 将虚拟大小转换为兆字节。
例如,如果虚拟大小:1024 GB
,则将其转换为 1024000
。 你输入的新值必须大于此原始值。 例如,若要将 1024GB
的虚拟大小加倍到 2048GB
,需要转换为 MB
并输入值 :2048000
。
请注意,不要输入高于实际需要的值,因为减小虚拟磁盘大小的过程要复杂得多
。
7. 使用 Windows
命令提示符 DISKPART>
提示输入要分配给此 Linux
发行版的新最大硬盘空间的值
expand vdisk maximum=<sizeInMegaBytes>
8. 退出 DISKPART>
提示
exit
9. 启动此 Linux
分发版。 (确保它在 WSL 2
中运行。可以使用命令确认这一点: wsl.exe -l -v
。)
10. 让 WSL
知道它可以通过从 WSL
分发命令行运行这些命令来扩展此分发的文件系统大小。
sudo mount -t devtmpfs none /dev
mount | grep ext4
可能会看到以下消息,它响应第一个 mount
命令:mount: /dev: none already mounted on /mnt/wsl.
可以放心地忽略此消息。
11. 复制10中得到的名称,用于修改硬盘空间大小
该名称类似于:/dev/sdX
(X 表示任何其他字符)。 在下面的示例中,X
的值是 c
:
sudo resize2fs /dev/sdc <sizeInMegabytes>M
使用上面的示例,我们将 vhd
大小更改为 2048000
,因此命令为: sudo resize2fs /dev/sdc 2048000M
。
PS: 可能需要安装 resize2fs。 如果是这样,可以使用此命令进行安装:sudo apt install resize2fs。
输出将类似于以下内容:
resize2fs 1.45.5 (07-Jan-2020)
/dev/sdc 上的文件系统已被挂载于 /;需要进行在线调整大小
old_desc_blocks = 128, new_desc_blocks = 250
/dev/sdc 上的文件系统大小已经调整为 524288000 个块(每块 4k)。
此 Linux
发行版的虚拟驱动器 (ext4.vhdx
) 现已成功扩展到新大小:
渣男!都看到这里了,还不赶紧点赞
,评论
,收藏
走一波?