编辑
2024-01-19
工作知识
0
请注意,本文编写于 504 天前,最后修改于 451 天前,其中某些信息可能已经过时。

目录

wsl2使用vhdx虚拟磁盘
ext4的img挂载
vhdx在wsl的挂载

wsl2使用vhdx虚拟磁盘

windwos的wsl如果直接使用windows的盘符来存储文件可以发现速度非常的慢。如下

dd if=/dev/zero of=test.img status=progress 4970496 bytes (5.0 MB, 4.7 MiB) copied, 1 s, 5.0 MB/s^C 16147+0 records in 16147+0 records out 8267264 bytes (8.3 MB, 7.9 MiB) copied, 1.66701 s, 5.0 MB/s

可以发现速度为5m/s,这个是不可忍受的。为了使得wsl使用更快,有两种方式

  1. wsl直接挂载ext4的img格式
  2. wsl挂载虚拟磁盘vhdx

ext4的img挂载

  • 制作ext4分区
dd if=/dev/zero of=wsl_code.img count=10240

此时会产生5.12M的wsl_code.img 此时格式化分区为ext4,并扩大分区为100G

mkfs.ext4 wsl_code.img resize2fs wsl_code.img 100G

此时对于wsl来说,开机挂载这个img即可,如下

mount /mnt/k/wsl_code.img ~/wsl_code/

vhdx在wsl的挂载

对于wsl官方文档,推荐使用vhdx的格式,主要方法如下:

  • 计算机管理--->磁盘管理--->操作--->创建VHD--->位置--->虚拟硬盘大小--->VHDX
  • 计算机管理--->磁盘管理--->操作--->附加VHD--->位置--->确定
    这样vhdx格式的虚拟磁盘已经创建好,接下来挂载在wsl上
1. PowerShell以管理员权限打开 2. 输入命令: GET-CimInstance -query "SELECT * from Win32_DiskDrive" PS C:> GET-CimInstance -query "SELECT * from Win32_DiskDrive" DeviceID Caption Partitions Size Model -------- ------- ---------- ---- ----- \\.\PHYSICALDRIVE1 UNITEK USB3.0 TO SATA SCSI Disk Device 1 1000202273280 UNITEK USB3.0 TO SATA SCSI Disk D... \\.\PHYSICALDRIVE0 KIOXIA-EXCERIA SSD 4 500105249280 KIOXIA-EXCERIA SSD \\.\PHYSICALDRIVE2 Microsoft 虚拟磁盘 1 966363471360 Microsoft 虚拟磁盘 找到自己创建的虚拟磁盘的Windows磁盘标号: \\.\PHYSICALDRIVE2 3. 关闭wsl wsl --shutdown 4. 挂载虚拟磁盘 wsl --mount \\.\PHYSICALDRIVE2 --bare 5. 启动wsl 6. 创建文件系统格式 mkfs.ext4 /dev/sdc1 7. 挂载文件系统格式 mount /dev/sdc1 wsl_code/ 8. 设置label e2label /dev/sdc1 wsl_code 9. 自动挂载 vim /etc/fstab LABEL=wsl_code /root/wsl_code ext4 defaults,nofail 0 1 10. 卸载wsl上的虚拟磁盘 wsl --unmount \\.\PHYSICALDRIVE2

至此,就可以愉快的使用wsl的虚拟磁盘的内容啦

root@kylin:~/wsl_code# dd if=/dev/zero of=test.img status=progress 2114826752 bytes (2.1 GB, 2.0 GiB) copied, 4 s, 529 MB/s