Windows系统下WSL从C盘迁移方案
原因:一开始装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 |
三.数据集路径优化
作为深度学习工程师,数据集路径优化是提高工作效率和系统性能的关键。
为什么需要优化数据集路径?
-
空间管理:C盘空间有限(300GB),D/E盘空间充足
-
性能考量:WSL访问Windows分区(
/mnt/
)比内部文件系统慢 -
工作流效率:统一路径减少配置错误
-
数据安全:避免误删关键数据
优化方案(针对您的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"
以上,这期的内容就到这里结束了,希望能够帮到大家。
码字不易,动动你的小手,点赞收藏关注吧。