[请教] wsl2 物理挂载硬盘最佳实践

267 天前
 MasterCai

wsl2 的空间快用完了,想加一块新的硬盘给 wsl2 用,不想通过网络方式访问。

参考了微软的官方教程, 尝试了“装载未分区的磁盘”(删除分区后尝试的)和“装载分区磁盘”(新建简单卷后尝试的)都不成功,甚至一度把硬盘玩脱机了。 也看到了 csdn 上有一些其他方案,但是感觉不太靠谱没有尝试。

想请教一下各位是怎么给 wsl2 挂载硬盘的呢,不通过 windows 这一层,直接挂载到 wsl2 上(整盘挂载就行),希望能分享一下。

1158 次点击
所在节点    程序员
3 条回复
ikas
267 天前
找个磁盘工具直接格式化为 ext4,然后挂载就好了
目前我就是挂了一个 ssd 用来编译 aosp

找到你要的序号与分区
GET-CimInstance -query "SELECT * from Win32_DiskDrive"
挂载
wsl --mount \\.\PHYSICALDRIVE1 -p 4
Projection
267 天前
看了一下文档,文档说的「未分区硬盘」和「分区硬盘」确实有一定误导性。


「未分区硬盘」不是指分了区但分区数量为 0 的硬盘。「未分区硬盘」是说把文件系统直接部署上整个硬盘上,不进行分区。比如 Linux 命令 `mkfs.ext4 /dev/nvme0` 是把 ext4 文件系统直接建立在一个块设备上。
「分区硬盘」是说需要提前对硬盘进行分区,使用 GPT 或 MBR 分区表的那种。「分区硬盘」确实就是字面意思,不过你新建的 NTFS 分区肯定是不好用的,后面代码说明了如何不使用其他工具来创建 ext4 分区。

创建「分区硬盘」的操作方法是:

# 👇 PowerShell 中执行
Get-CimInstance -query "SELECT * from Win32_DiskDrive"
# 一定要加 --bare 因为此时还没有 Linux 用的文件系统
wsl --mount \\.\PHYSICALDRIVE3 --bare
# 👇 WSL 中执行
lsblk # 找到需要分区的块设备
sudo fdisk /dev/sdd # 创建分区
sudo mkfs.ext4 /dev/sdd1 # 创建文件系统
# 👇 PowerShell 中执行
wsl --unmount \\.\PHYSICALDRIVE3
wsl --mount \\.\PHYSICALDRIVE3 -p 1
# 👇 WSL 中执行
cd /mnt/wsl/PHYSICALDRIVE3p1 # 开始你的操作

以后挂载和卸载使用如下命令就可以了:
wsl --mount \\.\PHYSICALDRIVE3 -p 1
wsl --unmount \\.\PHYSICALDRIVE3
MasterCai
267 天前
@Projection 原来是这样,明白了。感谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/966531

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX