【WSL2教程】WSL迁移到非系统盘

一、问题引入

默认情况下,WSL会安装在C盘(系统盘),而C盘空间有限,随着WSL子系统的使用,C盘空间越来越少,最后有可能出现C盘不足导致WSL系统崩溃。

有效的解决方法是,将WSL子系统迁移到其他盘(非系统盘)

二、WSL磁盘迁移(方式一)

wsl的安装及迁移至其他盘

1. 整体流程

亲测有效
在这里插入图片描述

2. 查看wsl状态

查看wsl下的Linux是否为关闭状态,当wsl为Stopped才能进行下一步。

wsl -l -v
C:\Users\xxx\Desktop>wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Stopped         2

3. 导出系统镜像

以压缩包的形式导出到其他盘。

wsl --export Ubuntu D:\UbuntuWSL\ubuntu.tar

4. 注销原有的linux系统

wsl --unregister Ubuntu

5. 查看系统状态

查看是否真的注销成功。

wsl -l -v

6. 导入系统

wsl --import <导入的Linux名称> <导入盘的路径> <ubuntu.tar的路径> --version 2 (代表wsl2)

 wsl --import Ubuntu D:\UbuntuWSL\ D:\UbuntuWSL\ubuntu.tar --version 2

7. 修改默认用户

打开wsl ubuntu之后,默认以root身份登录。

ubuntu.exe config --default-user vincent

在导入任意盘linux系统时,我起名Ubuntu,所以这里是ubuntu.exe;如果你起的名字是Ubuntu-20.04,那这里就是ubuntu2004.exe;如果你起的名字是ubuntu-18.04,那这里就是ubuntu1804.exe。

vincent是原有wsl ubuntu的用户名称。

三、WSL磁盘迁移(方式二)

拯救被WSL占满的C盘

1. 整体流程

亲测有效
在这里插入图片描述

2. 下载Move WSL工具

3. 停止WSL子系统

在PowerShell中运行如下命令,停止正在运行的Linux子系统。

wsl --shutdown

4. 查看wsl状态

查看wsl下的Linux是否为关闭状态,当wsl为Stopped才能进行下一步。

wsl -l -v
C:\Users\xxx\Desktop>wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Stopped         2

5. 开始移动

cd d:\move-wsl-master
.\move-wsl.ps1

在这里插入图片描述
选择要移动的目标,比如移动Ubuntu-18.04,则输入 1 并回车,然后会提示让我们输入移动的目标路径。
在这里插入图片描述

输入目标路径如 D:\WSL 然后回车,便会执行移动。根据移动目标的大小,时间可长可短,请耐心等待。
在这里插入图片描述
移动过程中,可以看到脚本会先将移动目标导出到一个tar文件,然后再将tar文件导入到 ext4.vhdx 文件中。

移动完成后,脚本会删掉原来C盘中的相应内容,释放C盘空间。

6. 修改默认用户

操作步骤,参考方式一。

四、回收Docker环境中的空间

Docker用久了会残留很多无用的Image。这些Image文件少则几十上百兆,多则几个G,给本就捉襟见肘的磁盘空间造成巨大浪费, 这时可以删掉不需要的Image文件。但你可能愕然发现,即使删掉了好几个Image,磁盘依然没有苗条下来。

这是因为ext4.vhdx磁盘空间会根据加载的数据自动增长,但是无法自动回收。下面是手动回收的步骤。

1. 停止WSL子系统

在PowerShell中运行如下命令,停止正在运行的Linux子系统。

wsl --shutdown

2. 运行diskpart释放空间

# open window Diskpart
diskpart

# 选择虚拟机文件执行瘦身
select vdisk file="D:\WSL\docker-desktop-data\ext4.vhdx"

attach vdisk readonly
compact vdisk
detach vdisk
exit

五、FAQ

Q:WSL出现“灾难性故障”

在这里插入图片描述

错误原因:
磁盘空间不足导致WSL系统奔溃

解决办法:
清理磁盘垃圾,腾出磁盘空间

# 停止WSL
net stop LxssManager

# 重新打开wsl终端
  • 49
    点赞
  • 206
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
要将WSL 2子系统迁移到D盘,您可以按照以下步骤操作: 1. 首先,确保已经安装并启用了WSL 2。如果尚未完成此操作,请参考官方文档进行安装和配置。 2. 打开命令提示符或PowerShell,并输入以下命令以查看已安装的WSL子系统列表: ``` wsl --list ``` 3. 选择要迁移WSL子系统,并记录下其名称。 4. 输入以下命令以停止该WSL子系统: ``` wsl --terminate <子系统名称> ``` 5. 输入以下命令以将该WSL子系统导出为tar文件: ``` wsl --export <子系统名称> <导出路径\导出文件名.tar> ``` 例如,可以使用以下命令将子系统导出到D盘根目录下的wsl.tar文件中: ``` wsl --export <子系统名称> D:\wsl.tar ``` 6. 导出完成后,输入以下命令以删除该WSL子系统: ``` wsl --unregister <子系统名称> ``` 7. 输入以下命令以导入之前导出的tar文件,并创建一个新的子系统: ``` wsl --import <新子系统名称> <新子系统安装路径> <tar文件路径> ``` 例如,可以使用以下命令将之前导出的wsl.tar文件导入到D盘根目录下的wsl_new目录中,并命名为"new_wsl": ``` wsl --import new_wsl D:\wsl_new D:\wsl.tar ``` 8. 输入以下命令以启动新的WSL子系统: ``` wsl -d <新子系统名称> ``` 现在,您应该已成功将WSL 2子系统迁移到D盘上的新路径。请确保替换命令中的`<子系统名称>`,`<导出路径\导出文件名.tar>`,`<新子系统名称>`,`<新子系统安装路径>`和`<tar文件路径>`为实际的值。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花花少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值