如何管理 WSL2 磁盘空间

0    387    1

Tags:

👉 本文共约4708个字,系统预计阅读时间或需18分钟。

本指南介绍如何管理使用 WSL 2 安装的 Linux 发行版使用的磁盘空间,包括:

适用于 Linux 的 Windows 子系统 (WSL 2) 使用虚拟化平台将 Linux 分发版与主机 Windows 操作系统一起安装,创建虚拟硬盘 (VHD) 来存储安装的每个 Linux 发行版的文件。 这些 VHD 使用 ext4 文件系统类型 ,并在 Windows 硬盘驱动器上表示为 ext4.vhdx 文件。

WSL 2 会自动调整这些 VHD 文件的大小以满足存储需求。 默认情况下,WSL 2 使用的每个 VHD 文件最初在 WSL 版本 0.58.0 之前分配了 1TB 的最大磁盘空间量 (,此默认值在) 之前设置为最大 512GB 和 256GB。

如果 Linux 文件所需的存储空间超过此最大大小,则会看到指示磁盘空间不足的错误。 若要修复此错误,请按照以下 有关如何扩展 WSL 2 虚拟硬盘大小的指南进行操作。

如何检查可用磁盘空间

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

若要检查可用磁盘空间,请打开 PowerShell 命令行并输入此命令, (替换为<distribution-name>实际分发名称) :

PowerShell复制

如果此命令不起作用,请使用 命令升级到 WSL wsl --update 的应用商店版本,或尝试 wsl df -h /

输出将包括:

  • 文件系统:VHD 文件系统的标识符
  • 大小:磁盘的总大小 (分配给 VHD) 的最大空间量
  • 已用:VHD 中当前使用的空间量
  • 可用:VHD (分配大小中剩余的空间量减去)
  • Use%:已用/已分配大小) (剩余磁盘空间的百分比
  • 装载位置:装载磁盘的目录路径

如果发现即将达到分配给 VHD 的可用磁盘空间量,或者由于没有剩余磁盘空间而收到错误,请参阅下一部分,了解如何扩展分配给与 Linux 分发版关联的 VHD 的最大磁盘空间量的步骤。 WSL 分配给 VHD 的磁盘空间量在最新版本的 WSL) 中始终显示默认最大 (1TB,即使实际 Windows 设备上的磁盘空间量小于此大小。 WSL 将装载一个 VHD,该 VHD 将在使用时扩展其大小,因此 Linux 分发版会发现它可以增长到分配的最大大小 1TB。

如何扩展 WSL 2 虚拟硬盘的大小

若要将 Linux 分发版的 VHD 大小扩展到 超过默认的最大 分配磁盘空间量 1TB,请执行以下步骤。 (对于尚未更新的早期 WSL 版本,此最大默认值可能设置为 512GB 或 256GB) 。

  1. 使用 wsl.exe --shutdown 命令终止所有 WSL 实例

  2. 将目录路径复制到与计算机上安装的 Linux 分发版关联的 ext4.vhdx 文件。 有关帮助,请参阅 如何查找 Linux 分发版的 vhdx 文件和磁盘路径

  3. 使用管理员权限打开 Windows 命令提示符,然后通过输入以下命令打开 diskpart 命令解释器:

    Windows 命令提示符复制

  4. 现在会出现一个 DISKPART> 提示。 输入以下命令,将 <pathToVHD> 替换为步骤 2) 中复制的与 Linux 分发 (关联的文件的目录路径 ext4.vhdx

    Windows 命令提示符复制

  5. 显示与此虚拟磁盘关联的详细信息,包括 虚拟大小,表示当前分配的 VHD 最大大小:

    Windows 命令提示符复制

  6. 需要将 虚拟大小 转换为兆字节。 例如,如果 虚拟大小:512 GB,则将其转换为 512000。 你输入的新值必须大于此原始值。 例如,若要将 512 GB 的虚拟大小加倍到 1024 GB,需要转换为 MB 并输入值 :1024000。 请注意,不要输入高于实际需要的值,因为减小虚拟磁盘大小的过程要复杂得多。

  7. 使用 Windows 命令提示符 DISKPART> 提示输入要分配给此 Linux 发行版的新最大大小的值:

    Windows 命令提示符复制

  8. 退出 DISKPART> 提示:

    Windows 命令提示符复制

  9. 启动此 Linux 分发版。 (确保它在 WSL 2 中运行。可以使用命令确认这一点: wsl.exe -l -v。) 不支持 WSL 1。

  10. 让 WSL 知道它可以通过从 WSL 分发命令行运行这些命令来扩展此分发的文件系统大小。 可能会看到以下消息,它响应第一个 mount 命令:“/dev: /dev 上未装载任何内容。”可以放心地忽略此消息。

    Bash复制

  11. 复制此项的名称,该名称类似于:/dev/sdX(X 表示任何其他字符)。 在下面的示例中,X 的值是 b:

Bash复制

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

备注

可能需要安装 resize2fs。 如果是这样,可以使用此命令进行安装:sudo apt install resize2fs

输出将类似于以下内容:

Bash复制

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复