登峰造极境

  • WIN
    • CSharp
    • JAVA
    • OAM
    • DirectX
    • Emgucv
  • UNIX
    • FFmpeg
    • QT
    • Python
    • Opencv
    • Openwrt
    • Twisted
    • Design Patterns
    • Mysql
    • Mycat
    • MariaDB
    • Make
    • OAM
    • Supervisor
    • Nginx
    • KVM
    • Docker
    • OpenStack
  • WEB
    • ASP
    • Node.js
    • PHP
    • Directadmin
    • Openssl
    • Regex
  • APP
    • Android
  • AI
    • Algorithm
    • Deep Learning
    • Machine Learning
  • IOT
    • Device
    • MSP430
  • DIY
    • Algorithm
    • Design Patterns
    • MATH
    • X98 AIR 3G
    • Tucao
    • fun
  • LIFE
    • 美食
    • 关于我
  • LINKS
  • ME
Claves
长风破浪会有时,直挂云帆济沧海
  1. 首页
  2. Platforms
  3. WINDOWS
  4. 正文

windows wsl挂载本地vhdx、扩展vdhx磁盘与wsl常见问题

2024-11-26

需求背景

wsl2 ubuntu磁盘满了,需要扩展磁盘。百度了一圈发现,要么把本地整个空白硬件磁盘挂载到ubuntu wsl2中,要么挂载本地vhdx文件。

结论:折腾了几个小时,发现挂载vhdx小问题太多,建议放弃。直接看扩展wsl磁盘章节,直接把wsl磁盘扩大即可。

wsl挂载vhdx过程

新建vhdx

用管理员权限运行命令,新建vhdx磁盘:

手动在windows d盘建立vhdx目录,然后运行一下命令:

New-VHD -Path d:\vhdx\newdisk.vhdx -SizeBytes 1024GB -Dynamic

执行后,发现d:\vhdx目录下面多了newdisk.vhdx文件:

初始化vhdx

powershell中运行下列命令,挂载vhdx至系统磁盘:

Mount-VHD -Path d:\vhdx\newdisk.vhdx

运行后,打开windows磁盘管理后,发现多了一个空白磁盘:(经过博主重启windows后验证,重启windows后,此虚拟磁盘会消失)

运行一下命令,查看未挂载的虚拟磁盘:

GET-CimInstance -query "SELECT * from Win32_DiskDrive"

powershell查看虚拟磁盘号:

Get-Disk

初始化磁盘,2是Get-Disk获取到的磁盘号。

Initialize-Disk -Number 2

给磁盘创建分区,且使用全部空间。

New-Partition -DiskNumber 2 -UseMaximumSize

连接VHD磁盘,\\.\PHYSICALDRIVE2是上面查询得到的。--bare:以裸设备的形式挂载驱动器,不会自动尝试挂载任何文件系统。这在需要手动处理分区或文件系统时很有用。

 wsl --mount \\.\PHYSICALDRIVE2 --bare

挂载磁盘

进入wsl

wsl

查看磁盘

lsblk

格式化sdc2至ext4格式

mkfs -t ext4 /dev/sdc2

创建挂载路径,一般都是挂载到/mnt/目录下。

mkdir /mnt/mydisk

手动挂载磁盘

mount /dev/sdc2 /mnt/mydisk

查看挂载结果

df -h

可以看到已经挂载成功!

查看windows vhdx目录,此时大小为17MB左右。(如果创建10TB虚拟磁盘,此文件大约是170MB左右)

开机自动挂载

查询磁盘UUID

blkid

可以看到UUID为:"dfaa0de4-967d-4e36-85d8-adf66eebe00a"

sudo vim /etc/fstab

打开后,添加如下内容:
UUID=dfaa0de4-967d-4e36-85d8-adf66eebe00a /mnt/mydisk ext4 defaults 0 2

关闭wsl,再进入,看磁盘发现并没有自动挂载。那就得继续折腾。

windows自启时,实现自动挂载

打开powershell执行脚本的功能

因为下面的命令,都使用另外powershell,所以必须打开:

Get-ExecutionPolicy
Set-ExecutionPolicy RemoteSigned

本地新建一个启动脚本,博主放在了d:/iios/wsl.ps1文件中。

博主实现了启动挂载,并且执行了启动clickhouse服务。

Mount-VHD -Path d:\vhdx\newdisk.vhdx
wsl --mount \\.\PHYSICALDRIVE2 --bare

wsl -- /bin/bash -c "mount -a && clickhouse start"

新建windows计划任务,实现开机自启,配置如下:

经过博主配置后,重启物理机后,实现了wsl自动挂载,并且启动了clickhouse服务。

但是问题还是比较多,比如偶尔挂载不上。这个方案比较坑,建议放弃。

常见问题

wsl2的ip不固定怎么办?

经过bing可知,本质原因是默认wsl2版本太低。执行一下命令升级版本,或者安装wsl_update_x64.msi升级补丁。

在线升级版本:

wsl --update

验证版本,如果没有出现详细版本,则代表wsl版本太低,需要回到上一步升级wsl.

wsl --version

升级完wsl版本后,重启wsl就会发现,此时子系统的ip已经是固定的了。

默认wsl2容器磁盘太小怎么办

如何管理 WSL 磁盘空间 | Microsoft Learn

1、查看wsl磁盘路径。

先查看子系统名称,我的是Ubuntu-22.04

wsl --list

以下命令查看wls磁盘路径:

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

可以看到博主的路径是:C:\Users\think\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx

2、停止wsl

wsl --shutdown

3、vhdx扩容

powershell运行一下命令

diskpart

会出现DISKPART>提示后,执行一下命令,替换自己的vhdx文件路径:

Select vdisk file="C:\Users\think\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx"

显示磁盘大小:

detail vdisk

扩展磁盘大小,把<sizeInMegaBytes>替换成实际的容量:

比如博主想扩展性10TB,就输入1024*1024*10=10485760

expand vdisk maximum=<sizeInMegaBytes>
实际输入:
expand vdisk maximum=10485760

4、wsl扩充

进入容器

wsl

输入一下命令,不知道有啥用

sudo mount -t devtmpfs none /dev
mount | grep ext4

查看wsl根路径的磁盘是不是sdc

df -h

可以看到根目录是sdc磁盘:

执行一下命令,扩展磁盘,注意修改根路径

sudo resize2fs /dev/sdc 10485760M

扩展过程比较慢,需要10分钟。扩展中,可以看到vhdx文件体积在逐渐增加。

扩展好后,就会发现根路径磁盘容量大小已经变了。

wsl如何免登录自启并启动一个服务,例如clickhouse:

手动启动的命令:

wsl -- /bin/bash -c "clickhouse start"

定时任务的启动命令,一定要这么配置,双引号一定要添加,否则起不起来:

"C:\Program Files\WSL\wsl.exe" -- /bin/bash -c "clickhouse start"
标签: 暂无
最后更新:2024-11-27

代号山岳

知之为知之 不知为不知

点赞
< 上一篇

COPYRIGHT © 2099 登峰造极境. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备14031139号-5

川公网安备51012202000587号