使用 wsl –mount 从 WSL2 挂载和访问物理磁盘

最后更新: 29/10/2025
作者: 艾萨克
  • WSL 2 允许您连接物理磁盘和 VHD/VHDX,并使用 wsl --mount 原生挂载 ext4。
  • 光盘 Windows 使用 DRVFS; Linux (ext4)首先使用 --bare、lsblk 和 blkid 识别分区。
  • 使用 wsl --manage 或手动方法(diskpart + resize2fs)管理空间,并使用 e2fsck 进行修复。
  • 请注意以下限制:磁盘空间已满、内核支持的类型以及缺乏支持 USB 在 wsl --mount 中。

WSL 指南——在 WSL2 中挂载和访问物理磁盘

如果你每天都要使用Linux和Windows系统, 无需离开 Windows 电脑即可挂载和读取 ext4 磁盘。 这真是太棒了。借助 WSL 2,这可以通过 wsl.exe --mount 命令实现,该命令允许您将物理磁盘以及 VHD/VHDX 直接挂载到已安装的 Linux 发行版上。

在这本实用且非常全面的指南中,我将一步一步地告诉你: 如何识别磁盘、挂载特定分区以及选择文件系统类型您将学习如何从 Windows 资源管理器访问数据以及如何解决常见错误。您还将了解如何增加 WSL 2 虚拟磁盘的大小以及目前存在的限制。

什么是 wsl-mount 以及何时使用它

借助 WSL 2,我们可以在 Windows 上运行真正的 Linux 内核,正因如此, 使用 ext4 等原生 Linux 文件系统挂载磁盘和分区此操作的关键命令是 wsl.exe –mount,它将物理磁盘(或 VHD)附加到 WSL 2 轻量级虚拟机并将其挂载到发行版中。

区分不同情况很重要:如果卷格式化为 Windows 格式(例如, NTFS 文件系统可从 Windows 访问。),您可以使用 drvfs 在 WSL 中将其公开,而无需使用 wsl --mount。但是,当涉及到…… Linux 格式化磁盘(ext4 等) Windows 无法识别的 wsl –mount 命令就派上用场了。

有一个重要的限制: wsl –mount 目前不支持 USB 设备、U盘或 SD 读卡器如果连接 USB/SATA 硬盘盒或 USB 扩展坞,则组件可能会出现故障。在这种情况下,微软建议查阅相关指南。 USB 设备连接 虽然使用 usbipd-win 并不等同于将它们挂载为 ext4 块。

要了解您的计算机是否兼容从 WSL 挂载磁盘,您必须处于以下状态: Windows 11 或者使用从 Microsoft Store 安装的 WSL 版本。使用以下命令检查您的版本:

wsl.exe --version

wsl 接口 --mount 和文件类型

要求、安装和初始检查

首先,请确保您符合以下要求: Windows 10(非 S 版本)或 Windows 11必须在 BIOS/UEFI 中启用虚拟化,并且必须安装适用于 Linux 的 Windows 子系统和虚拟机平台功能。在现代计算机上,通常一切都已准备就绪,但最好还是进行检查。

虚拟化可以从以下方面进行验证: 任务经理 (性能选项卡):如果出现 虚拟化:已启用完美。如果不行,请在 BIOS/UEFI 中启用它,必要时可以强制激活。 引导 搭配:

bcdedit /set hypervisorlaunchtype auto

要自动安装 WSL,请打开 PowerShell的 o CMD 以管理员身份运行 单个命令:

wsl --install

此命令启用所需功能并默认安装 Ubuntu,但您也可以选择其他发行版。 wsl –install -d Debian 或者从列表中选择其他选项:

wsl --list --online

安装完成后,您将能够在 WSL 1 和 WSL 2 之间切换,尽管 安装光盘需要 WSL 2检查活动版本:

wsl --list --verbose

如果你想体验 终端 现代 Windows Terminal(最好是预览版)与 WSL 配合使用效果很好。 您可以将主文件夹设置为 ~安装带有图标的字体(例如 Nerd Fonts),并为每个发行版自定义配置文件。

  掌握 VirtualBox:基本命令和实例讲解

从 WSL 访问 Windows 驱动器 (drvfs)

当卷已在 Windows 中挂载时(例如,驱动器) NTFS D:) 不需要 wsl-mount你可以通过以下方式在 Linux 中暴露它: drvfs 创建目录并按如下方式挂载:

sudo mkdir -p /mnt/d
sudo mount -t drvfs D: /mnt/d

然后你将拥有 D:在 /月/日 这样你就可以在 Linux 系统下处理文件了。如果你需要在 Windows 和 Linux 系统之间转换路径,wslpath 可以解决这个问题:

# Windows a Linux
wslpath "C:\\Users\\tu_usuario\\Documents"

# Linux a Windows
wslpath -w "/home/tu_usuario/proyecto"

您也可以 从 Windows 浏览 WSL 文件系统 使用资源管理器:转到 \\wsl$\Distro\home\user 进入您的发行版,并像使用网络文件夹一样使用它。

使用 wsl --mount 挂载 Linux 磁盘 (ext4)。

对于 Windows 无法读取的 Linux 格式磁盘(例如 ext4,许多发行版中的标准文件系统`wsl --mount` 命令允许您将它们连接到 WSL 2,列出它们的分区并进行挂载。以下是两种最常见的场景。

在 WSL2 中挂载 ext4 磁盘

场景 A:未分区的磁盘

首先,使用 PowerShell 识别磁盘;可以使用 CIM 或 WMIC; 两者都列出了物理驱动器 系统中存在:

# PowerShell (recomendado)
Get-CimInstance -Query "SELECT * from Win32_DiskDrive"

# WMIC (obsoleto, pero aún útil en muchos equipos)
wmic diskdrive list brief

查看格式化的 DeviceID 列 \\.\PHYSICALDRIVEX找到后:

wsl.exe --mount \\.\PHYSICALDRIVEX

如果没有 分区表, WSL 将尝试直接将其挂载为 ext4 文件系统。 (默认行为)。如果不是 ext4,您可以使用 --type 指定文件系统类型:

wsl.exe --mount \\.\PHYSICALDRIVEX --type vfat

方案 B:分区磁盘

当你不知道里面是什么的时候,反而更好。 无需挂载即可连接磁盘。 使用 --bare 选项并从 Linux 列出分区:

# En PowerShell
wsl.exe --mount \\.\PHYSICALDRIVEX --bare

现在,在 WSL 2 中,列出 阻塞设备 及其分区:

lsblk

你会看到类似这样的内容: /dev/sdb、/dev/sdb1、/dev/sdb2…。 至 识别文件系统 对于每个分区,使用:

sudo blkid /dev/sdb1

一旦你有了清晰的索引和类型, 从 Windows 挂载分区 指定两个参数:

wsl.exe --mount \\.\PHYSICALDRIVEX --partition 3 --type ext4

默认情况下,挂载点是在配置值下创建的。 自动挂载根目录即 /mnt/wsl。这样,您的磁盘就会出现在该目录下的一个文件夹中,您可以从 Windows 系统导航到该文件夹​​。 \\wsl$\YourDistro\mnt\wsl\Name 访问数据。

选项、挂载名称、分区和卸载样式

如果您没有另行指定,WSL 2 会尝试将整个磁盘挂载为 ext4 文件系统,但您可以使用以下选项进行微调: -类型, -分割, -选项ext4 选项示例:

wsl.exe --mount \\.\PHYSICALDRIVEX --options "data=ordered"

如果磁盘图与自动安装不匹配, –bare 允许您在 WSL 内部阻止该设备 因此,您可以从 Linux 系统手动挂载它(使用 mount、fsck 等命令)。您还可以使用 `--name` 参数自定义挂载点名称。

wsl.exe --mount \\.\PHYSICALDRIVEX --name mis_datos

卸载并拆解磁盘 来自 WSL 2:

wsl.exe --unmount \\.\PHYSICALDRIVEX
# Si omites la ruta, desmonta todos los discos adjuntos
wsl.exe --unmount

需要考虑的当前限制

  • 只能连接完整光盘。 (不是松散分区)。无法使用 wsl –mount 读取 Windows 启动磁盘分区。
  • 仅内核原生支持的文件系统wsl --mount 命令不使用 ntfs-3g 等用户空间控制器。
  • 内核不支持的系统可以在之后挂载。 –裸露的FUSE 从Linux。
  • 不支持 USB、U盘或 SD 卡。 通过 wsl --mount 命令挂载。检查 usbipd-win 是否能够重定向 USB,但需要注意的是,这与之前的流程不同。
  如何使用键盘显示 Excel 中隐藏的单元格? - 最佳捷径

使用 WSL 挂载 VHD/VHDX 虚拟磁盘

除了实体光盘,你还可以 挂载虚拟硬盘文件 (VHD/VHDX)。首先, 在 Windows 系统中附加 VHD 文件。 使用管理员权限获取磁盘编号:

Write-Output "\\.\PhysicalDrive$((Mount-VHD -Path <pathToVHD> -PassThru | Get-Disk).Number)"

按照该路径,像操作物理磁盘一样,按照前面的章节进行操作。您也可以使用 –vhd 直接挂载 .vhdx 文件时:

wsl.exe --mount <path-to.vhdx> --vhd

每个 WSL 2 发行版都将其根文件系统存储在一个文件中。 ext4.vhdx它通常位于 %LocalAppData%\Packages\LocalState 目录下。要操作此文件(例如,手动挂载它),请确保: 使用 wsl –shutdown 命令停止 WSL 在触摸它之前。

WSL 中的 VHD 和空间扩展

WSL 2 中的磁盘空间以及如何增加它

WSL 2 为每个发行版使用动态 VHD,格式为 ext4最新版本中,存储空间可根据需要扩展,默认最大容量为 1 TB(之前为 512 GB 或 256 GB)。要查看可用空间,您可以运行:

wsl.exe --system -d <nombre-distro> df -h /mnt/wslg/distro
# Si no te funciona, actualiza WSL desde Store o usa: wsl df -h /

出口详细说明 总尺寸、已用尺寸、可用尺寸和百分比如果空间不足,可以使用 wsl –manage(WSL 2.5 或更高版本)扩展 VHD,或者使用 diskpart 和 resize2fs 手动扩展。

使用 wsl –manage 进行扩展(推荐)

第一 关闭 WSL:

wsl.exe --shutdown

然后 通过传递有效的内存字符串来调整大小 (仅限以 B、MB、GB 或 TB 开头的整数):

wsl --manage <nombre-distro> --resize 512GB

如果一切顺利,您将会收到来自以下机构的消息: e2fsck 和 resize2fs 表示手术已完成。

逐步手动放大

如果您更喜欢传统方法,以下是简要流程,它在以下情况下非常有效: 您没有 wsl –manage 命令:

  1. 关闭 WSL: wsl.exe –关机
  2. 找到你的发行版中的 ext4.vhdx 文件(如下所示): 脚本 找到它)。
  3. 以管理员身份打开 CMD/PowerShell,然后输入 diskpart:
diskpart
  1. 按路径选择 VHD(替换) ):
Select vdisk file="<pathToVHD>"
  1. 查看当前虚拟尺寸:
detail vdisk
  1. 确定新的大小(以 MB 为单位)(例如,从 512 GB 到 1024 GB → 1024000 MB),然后进行扩展:
expand vdisk maximum=<sizeInMegaBytes>
  1. 退出 diskpart,启动发行版并强制调整 ext4 文件系统的大小:
sudo mount -t devtmpfs none /dev
mount | grep ext4
# Identifica el dispositivo, por ejemplo /dev/sdb
sudo resize2fs /dev/sdb 2048000M

此后, ext4.vhdx 现在将具有新的大小 df -h 将反映出更多可用空间。

解决 wsl-mount 的常见问题

使用 PowerShell 挂载时常见的错误是: “磁盘已连接,但无法挂载(代码 -22)”在 WSL 中运行 `dmesg` 命令可查看更多详细信息。类似“EXT4-fs: VFS: 找不到 ext4 文件系统”这样的消息通常表示您指向的分区不正确、卷不是 ext4 文件系统,或者您需要使用 `-bare` 参数并手动挂载。

如果你将磁盘连接到 USB 外壳或适配器请注意,`wsl --mount` 不支持 USB。即使 `lsblk` 显示 `sdd`、`sde` 等,自动挂载也可能因此失败。在这种情况下,请尝试以下方法:

  • 附带 -裸 在 WSL 中检查分区:lsblk 和 sudo blkid /dev/sdXN。
  • 如果文件系统不是 ext4(例如,xfs、vfat),请注明。 -类型 骑行时。
  • 如果磁盘使用 LVM、RAID 或加密wsl-mount 无法直接处理它。
  • 检查分区样式(MBR/GPT)以及索引是否通过验证。 -分割 是正确的。
  如何提高 Windows 文件资源管理器的速度

另一种情况是启动发行版 只读模式 断电后,您会看到“挂载分发磁盘时出错;已将其挂载为只读备用磁盘”的消息,并且您将无法对其进行写入操作。要解决此问题,请以管理员身份从 PowerShell 运行以下命令:

  1. WSL联赛关闭: wsl.exe –关机
  2. 以裸挂载模式挂载发行版的 VHD:
wsl.exe --mount <path-to-ext4.vhdx> --vhd --bare
  1. 使用以下方式识别设备 wsl.exe lsblk 并使用 e2fsck 进行修复(替换) ):
wsl.exe sudo e2fsck -f /dev/<device>
  1. 拆卸: wsl.exe –unmount 然后重启发行版。

如果你需要 找到 ext4.vhdx 文件 在指定的发行版中,使用 PowerShell 运行以下命令:

(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<distribution-name>' }).GetValue("BasePath") + "\ext4.vhdx"

最后,如果您使用的是 Windows 10 并且没有看到该功能,请记住 wsl --mount 支持尚未推出。 它最初出现在 Insider 预览版(例如 20211)中,后来通过 WSL 进入了 Microsoft Store。从应用商店安装 WSL 版本并进行更新 wsl –更新 获取最新功能,或升级到 Windows 11。

能帮你节省时间的实用 WSL 命令

为了保持环境的更新,您可以 更新 WSL 内核 手动操作,如果某些内容仍然无法说服你,请撤销:

wsl --update
wsl --update rollback

关闭所有实例(最好在调整 VHD 大小或挂载 VHDX 之前): wsl – 关闭如果发行版崩溃,请自行完成:

wsl --terminate <NombreDistro>

迁移或备份导出为 TAR 文件,然后将新的发行版导入到不同的路径。您甚至可以在导入过程中选择 WSL 1 或 2。

wsl --export <NombreDistro> backup-wsl.tar
wsl --import <NombreDistroNueva> C:\wsl\debian backup-wsl.tar --version 2

如果你要从头开始重新安装一个发行版,请记住: –unregister 会删除所有数据 与该实例相关的:

wsl --unregister <NombreDistro>

当您需要在 Windows 系统中挂载或卸载设备时,请务必准备好以下信息: 快速参考 来自汇编命令本身:

# Montar disco físico completo en ext4 (por defecto)
wsl --mount \\.\PHYSICALDRIVEX

# Adjuntar sin montar para decidir después
wsl --mount \\.\PHYSICALDRIVEX --bare

# Montar partición concreta y tipo específico
wsl --mount \\.\PHYSICALDRIVEX --partition 1 --type ext4

# Montar VHD/VHDX
wsl --mount C:\\ruta\\disco.vhdx --vhd

# Desmontar (uno o todos)
wsl --unmount \\.\PHYSICALDRIVEX
wsl --unmount

有了以上所有条件,您就可以拥有强大的工作流程: 访问 ext4 磁盘、处理 VHD、扩展存储空间以及修复错误 无需放弃 Windows。WSL 2 集成已经足够成熟,可以为在两个系统之间切换的开发人员和管理员提供一个稳定的解决方案。

如何从 Windows 11 访问 Linux 分区
相关文章:
如何从 Windows 11 访问 Linux 分区:WSL、网络和应用程序