Windows系统下WSL从C盘迁移方案

发布于:2025-07-06 ⋅ 阅读:(20) ⋅ 点赞:(0)

原因:一开始装WSL的时候放在了C盘,这下好了,跑了几个深度学习模型训练后,C盘快满了,这可怎么办?可愁坏了。

没关系,山人自有妙计。我们将WSL迁移到D盘或者E盘呀。

一.迁移操作步骤

前期准备:

a.确认WSL发行版名称

wsl -l -v

输出示例:Ubuntu-22.04 Running 2 记录您的发行版名称

b.用户名验证

  • 若忘记Linux用户名,在备份前检查:

    # 在原始WSL中执行
    echo $USER

    这里我的用户名是:fzyz123,你需要替换成你自己的用户名

🛠 迁移操作流程(经实测验证)

步骤1:完全关闭WSL(powershell)

wsl --shutdown

步骤2:创建完整备份(必须步骤)

# 替换"Ubuntu-22.04"为您的发行版名称
wsl --export Ubuntu-22.04 D:\wsl_backup\ubuntu_backup.tar

步骤3:注销当前发行版

wsl --unregister Ubuntu-22.04

此时C盘空间应立即释放(检查磁盘空间变化)

步骤4:迁移到新位置

wsl --import Ubuntu-22.04 D:\wsl\ubuntu D:\wsl_backup\ubuntu_backup.tar --version 2

参数说明

  • Ubuntu-22.04:您的发行版名称

  • D:\wsl\ubuntu新创建的目标目录(建议空目录)

  • --version 2:强制使用WSL2(必须指定)

步骤5:设置默认用户(最关键步骤)

# 创建配置文件(替换YourUsername为您的Linux用户名)
@"
[user]
default=YourUsername
"@ | Out-File -FilePath D:\wsl\ubuntu\etc\wsl.conf -Encoding utf8

步骤6:验证迁移

wsl -d Ubuntu-22.04
# 在WSL内验证:
whoami  # 应显示您的用户名
df -h   # 检查挂载点是否正常

🔄 备选方案(当主方案遇阻时)

若步骤5不生效,使用注册表修改法:

# 获取发行版UUID
wsl -d Ubuntu-22.04 --exec sh -c "echo \$WSL_DISTRO_NAME"

# 修改注册表(替换[UUID]为实际值)
Set-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss\[UUID]" DefaultUid 0x3E8

 🚀 完整修正版迁移流程如下

注意替换成你自己的用户名。

# 1. 关闭WSL
wsl --shutdown

# 2. 正确备份 (注意:无额外参数)
wsl --export Ubuntu-22.04 D:\wsl_backup\fzyz123_backup.tar

# 3. 验证备份 (文件应存在且>1GB)
$backup = Get-Item D:\wsl_backup\fzyz123_backup.tar
"备份文件大小: {0:N2} GB" -f ($backup.Length/1GB)

# 4. 注销原发行版
wsl --unregister Ubuntu-22.04

# 5. 迁移到D盘
wsl --import Ubuntu-22.04 D:\wsl_env\fzyz123 D:\wsl_backup\fzyz123_backup.tar --version 2

# 6. 设置用户 (使用您的用户名fzyz123)
@"
[user]
default=fzyz123
"@ | Out-File -FilePath D:\wsl_env\fzyz123\etc\wsl.conf -Encoding utf8

# 7. 启动验证
wsl -d Ubuntu-22.04 -e echo "迁移成功! 当前用户: $(whoami)"

二.conda不可用问题

🚨 针对深度学习的特殊检查

迁移后务必验证训练环境:

# 在WSL内执行:
# 1. 检查CUDA
python -c "import torch; print(f'PyTorch {torch.__version__}, CUDA: {torch.cuda.is_available()}')"

# 2. 检查存储挂载
df -h | grep -E 'Filesystem|/mnt/d'

# 3. 验证用户环境变量
echo $PATH
conda info --envs  # 或 pip list

这里如果出现问题,多半是Conda 环境问题。很可能是由于迁移导致的路径变化或环境变量丢失造成的。如果验证发现conda不可用,那么我们需要正确的配置conda路径,即可。

🔧 Conda 环境恢复方案(针对迁移后问题)

步骤1:定位 Conda 安装位置

# 查找 conda 安装路径
find ~ -name "conda" -type f 2>/dev/null

# 典型位置可能是:
# /home/fzyz123/miniconda3/bin/conda
# /home/fzyz123/anaconda3/bin/conda

步骤2:将 Conda 添加到 PATH

# 编辑 bashrc 文件
nano ~/.bashrc

# 在文件末尾添加(根据您的实际路径修改)
export PATH="/home/fzyz123/miniconda3/bin:$PATH"

# 保存后加载配置
source ~/.bashrc

步骤3:重新初始化 Conda

# 初始化 conda
conda init bash

# 关闭并重新打开终端
exit

重新登录 WSL

📊 环境恢复检查清单

步骤 命令 期望结果
Conda 路径 which conda /home/fzyz123/miniconda3/bin/conda
环境列表 conda env list 显示您的所有环境
环境激活 conda activate your_env 提示符变化 (your_env) fzyz123@AI0001
Python 路径 which python ~/miniconda3/envs/your_env/bin/python
CUDA 可用性 python -c "import torch; print(torch.cuda.is_available())" True

三.数据集路径优化

作为深度学习工程师,数据集路径优化是提高工作效率和系统性能的关键。

为什么需要优化数据集路径?

  1. 空间管理:C盘空间有限(300GB),D/E盘空间充足

  2. 性能考量:WSL访问Windows分区(/mnt/)比内部文件系统慢

  3. 工作流效率:统一路径减少配置错误

  4. 数据安全:避免误删关键数据

优化方案(针对您的Windows+WSL环境)

1. 最佳存储位置选择

2. 环境变量配置(核心优化)

~/.bashrc中添加:

# 数据集根目录
export DATASET_ROOT="/mnt/d/datasets"

# 框架特定缓存路径
export TORCH_HOME="$DATASET_ROOT/torch_cache"
export TFDS_DATA_DIR="$DATASET_ROOT/tfds"
export HF_DATASETS_CACHE="$DATASET_ROOT/huggingface"

# 临时数据集路径
export TEMP_DATASET_DIR="~/.cache/datasets"

3.符号链接优化(解决兼容性问题)

对于必须使用特定路径的工具:

# 创建符号链接
ln -s /mnt/d/datasets ~/datasets
ln -s /mnt/d/checkpoints ~/checkpoints

# Windows端等效命令(管理员权限)
mklink /J "C:\Users\zongh\datasets" "D:\datasets"

以上,这期的内容就到这里结束了,希望能够帮到大家。

码字不易,动动你的小手,点赞收藏关注吧。