• 【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
  • 相关阅读:
    物流“独角兽”官微声讨 CEO:拖欠工资,云鸟真的“飞”跑了
    【System Verilog and UVM基础入门4】程序和接口
    【spring cloud】(四)服务网关——gateway
    leetcode每日一题第三十一天-剑指 Offer 56 - I. 数组中数字出现的次数(middle)
    黑客之批处理编写
    数据库系统原理与应用教程(006)—— 编译安装 MySQL5.7(Linux 环境)
    AI智慧安防智能监控平台EasyCVR隔天设备录像播放失败是什么原因?该如何解决?
    人工智能:科技魔法赋予生活新意
    【Spring注解必知必会】深度解析@Configuration注解
    科技对金融业的告白信,有百融云创的落款
  • 原文地址:https://blog.csdn.net/m0_37605642/article/details/127812965