Windows 的 Linux 子系统安装的 Ubuntu,以及 docker 数据默认存储位置放在 C 盘,使用一段时间之后,C 盘空间快满了,所以需要将wsl2的存储位置迁移到其他位置。

wsl2 数据迁移步骤

使用指令 wsl --list -v 查看 wsl 安装的系统

PS C:\Users\hacper> wsl --list -v
  NAME                   STATE           VERSION
* docker-desktop         Running         2
  Ubuntu                 Running         2
  docker-desktop-data    Running         2
  1. 关闭docker服务

    net stop "com.docker.service"
  2. 关闭wsl

    wsl --shutdown
  3. 迁移Ubuntu数据

    # 导出 Ubuntu 数据到 D:\wsl\docker\tmp\ubuntu.tar
    wsl --export Ubuntu "D:\wsl\docker\tmp\ubuntu.tar"
    # 注销 Ubuntu
    wsl --unregister Ubuntu
    # 将Ubuntu 从 "D:\wsl\docker\tmp\ubuntu.tar" 导入到 "D:\wsl\ubuntu"
    wsl --import Ubuntu "D:\wsl\ubuntu" "D:\wsl\docker\tmp\ubuntu.tar"  --version 2
    # 设置默认用户,不然登录之后是root用户
    ubuntu config --default-user hacper
  4. 迁移docker数据

    # 导出 docker-desktop-data  到 D:\wsl\docker\tmp\docker-desktop-data.tar
    wsl --export docker-desktop-data D:\wsl\docker\tmp\docker-desktop-data.tar
    # 注销 docker-desktop-data
    wsl --unregister docker-desktop-data
    # 重新导入 docker-desktop-data 到 D:\wsl\docker\data\
    wsl --import docker-desktop-data D:\wsl\docker\data\ D:\wsl\docker\tmp\docker-desktop-data.tar --version 2
    
    # 导出 docker-desktop 到 D:\wsl\docker\tmp\docker-desktop.tar 
    wsl --export docker-desktop D:\wsl\docker\tmp\docker-desktop.tar 
    # 注销 docker-desktop
    wsl --unregister docker-desktop
    # 重新导入 docker-desktop 到 D:\wsl\docker\distro\
    wsl --import docker-desktop D:\wsl\docker\distro\ D:\wsl\docker\tmp\docker-desktop.tar --version 2  
  5. 删除导出数据

    迁移成功之后,可以删除原来导出到 D:\wsl\docker\tmp\ 的数据

    D:\wsl\docker\tmp\ubuntu.tar
    D:\wsl\docker\tmp\docker-desktop-data.tar
    D:\wsl\docker\tmp\docker-desktop.tar

注意

使用 wsl --import 指令重新导入数据到新磁盘目录是,注意该目录需要设置取消压缩、加密,否则会导入失败。

扫码关注