thumbnail

软件环境

Windows11 工作站版 64位

WSL 2 Ubuntu 22.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进行扩容。

3.1.检查可用磁盘空间

使用 Linux df -h 命令检查随 WSL 2 一起安装的 Linux 分发版 VHD 中的可用磁盘空间量:

发现在WSL 2中确实是1T的样子。、

扩展 WSL 2 虚拟硬盘的大小

  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 '<distribution-name>' }).GetValue("BasePath") + "\ext4.vhdx"

结果将显示类似于: %LOCALAPPDATA%\Packages\\LocalState\.vhdx的路径。

将此目录路径复制到与计算机上安装的 Linux 分发版关联的 ext4.vhdx 文件。

  1. 使用管理员权限打开 Windows 命令提示符,然后通过输入以下命令打开 diskpart 命令解释器:
diskpart
  1. 现在会出现一个 DISKPART> 提示。 输入以下命令,将 pathToVHD替换为步骤 2中复制的与 Linux 分发关联的文件的目录路径 ext4.vhdx 。
Select vdisk file="<pathToVHD>"
  1. 显示与此虚拟磁盘关联的详细信息,包括 虚拟大小,表示当前分配的 VHD 最大大小:
detail vdisk
  1. 将虚拟大小转换为兆字节。

例如,如果虚拟大小:1024 GB,则将其转换为 1024000。 你输入的新值必须大于此原始值。 例如,若要将 1024GB 的虚拟大小加倍到 2048GB,需要转换为 MB 并输入值 :2048000

当然,虽然说比较复杂,但是也是有办法能减小虚拟磁盘大小的,可以参考大佬的一篇文章:如何给WSL2缩减硬盘(即减小虚拟大小)?

  1. 使用 Windows 命令提示符 DISKPART> 提示输入要分配给此 Linux 发行版的新最大硬盘空间的值
expand vdisk maximum=<sizeInMegaBytes>
  1. 退出 DISKPART> 提示
exit
  1. 启动此 Linux 分发版。 (确保它在 WSL 2 中运行。可以使用命令确认这一点: wsl.exe -l -v。)
  2. 让 WSL 知道它可以通过从 WSL 分发命令行运行这些命令来扩展此分发的文件系统大小。
sudo mount -t devtmpfs none /dev
mount | grep ext4

可能会看到以下消息,它响应第一个 mount 命令:mount: /dev: none already mounted on /mnt/wsl.可以放心地忽略此消息。

  1. 复制10中得到的名称,用于修改硬盘空间大小

该名称类似于:/dev/sdX(X 表示任何其他字符)。 在下面的示例中,X 的值是 c

 sudo resize2fs /dev/sdc <sizeInMegabytes>M

使用上面的示例,我们将 vhd 大小更改为 2048000,因此命令为: sudo resize2fs /dev/sdc 2048000M

输出将类似于以下内容:

resize2fs 1.45.5 (07-Jan-2020)
/dev/sdc 上的文件系统已被挂载于 /;需要进行在线调整大小
old_desc_blocks = 128, new_desc_blocks = 250
/dev/sdc 上的文件系统大小已经调整为 524288000 个块(每块 4k)。

结果

此 Linux 发行版的虚拟驱动器 (ext4.vhdx) 现已成功扩展到新大小:


参考文章

本文大部分内容参考自:

https://blog.csdn.net/qq_15969343/article/details/129119789