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


    一、问题引入

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

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

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

    wsl的安装及迁移至其他盘

    1. 整体流程

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

    2. 查看wsl状态

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

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

    3. 导出系统镜像

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

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

    4. 注销原有的linux系统

    wsl --unregister Ubuntu
    
    • 1

    5. 查看系统状态

    查看是否真的注销成功。

    wsl -l -v
    
    • 1

    6. 导入系统

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

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

    7. 修改默认用户

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

    ubuntu.exe config --default-user vincent
    
    • 1

    在导入任意盘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
    
    • 1

    4. 查看wsl状态

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

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

    5. 开始移动

    cd d:\move-wsl-master
    .\move-wsl.ps1
    
    • 1
    • 2

    在这里插入图片描述
    选择要移动的目标,比如移动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
    
    • 1

    2. 运行diskpart释放空间

    # open window Diskpart
    diskpart
    
    # 选择虚拟机文件执行瘦身
    select vdisk file="D:\WSL\docker-desktop-data\ext4.vhdx"
    
    attach vdisk readonly
    compact vdisk
    detach vdisk
    exit
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    五、FAQ

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

    在这里插入图片描述

    错误原因:
    磁盘空间不足导致WSL系统奔溃
    
    解决办法:
    清理磁盘垃圾,腾出磁盘空间
    
    # 停止WSL
    net stop LxssManager
    
    # 重新打开wsl终端
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    (数据结构)算法的时间复杂度
    初识OpenGL (-)坐标空间
    打造千万级流量秒杀系统第六课 云架构:基础设施是如何做到高可用的?
    三、C语言常用运算符
    Vue封装的过度与动画
    自拟实现消息队列(MQ)基于Rabbit MQ(含概念和源码)巨详细!!!!!含思维导图
    synchronized 与 spring事务 @Transactional 的介绍使用
    FFmpeg的详细介绍
    2022牛客多校十 E-Reviewer Assignment(匈牙利算法)
    驱动——设备树属性获取相关实验
  • 原文地址:https://blog.csdn.net/m0_37605642/article/details/127812965