当前位置: 首页 > news >正文

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

三.数据集路径优化

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

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

  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"

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

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

http://www.lryc.cn/news/579836.html

相关文章:

  • Vue-19-前端框架Vue之应用基础组件通信(二)
  • 算法学习笔记:6.深度优先搜索算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
  • 【办公类-54-07】20250901 2025学年第一学期班级点名册模版(双休国定假涂成灰色、修改标题和页眉,批量导出PDF)
  • 使用alist+RaiDrive+webdav将百度夸克网盘变为本地电脑磁盘方法教程
  • 基于微信小程序的校园二手交易平台、微信小程序校园二手商城源代码+数据库+使用说明,layui+微信小程序+Spring Boot
  • 如何搭建 OLAP 系统?OLAP与数据仓库有什么关系?
  • 推荐算法系统系列>推荐数据仓库集市的ETL数据处理
  • BLDC电机-运动控制---stm32时钟树定时器SYSTICKRTC的学习
  • Django Channels WebSocket实时通信实战:从聊天功能到消息推送
  • 前端查询条件加密传输方案(SM2加解密)
  • 浏览器(Chrome /Edge)高效使用 - 内部命令/快捷键/启动参数
  • 服务器如何配置防火墙规则以阻止恶意流量和DDoS攻击?
  • mybatisPlus分页方言设置错误问题 mybatisPlus对于Oceanbase的Oracle租户分页识别错误
  • HarmonyOS免密认证方案 助力应用登录安全升级
  • 使用循环抵消算法求解最小费用流问题
  • Python 制作 pyd(Windows 平台的动态链接库)
  • 【行云流水ai笔记】粗粒度控制:推荐CTRL、GeDi 细粒度/多属性控制:推荐TOLE、GPT-4RL
  • 10分钟搭建 PHP 开发环境教程
  • Java对象哈希值深度解析
  • 支持向量机(SVM)在LIDC-IDRI数据集上的多分类实现(肺癌检测)
  • 三五法则的类的设计
  • 供应链管理:指标评估方式分类与详解
  • Rust 中的返回类型
  • 云原生Kubernetes系列 | etcd3.5集群部署和使用
  • Day51 复习日-模型改进
  • TCP、HTTP/1.1 和HTTP/2 协议
  • 怎么更改cursor字体大小
  • JavaEE初阶第七期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(五)
  • ElasticSearch快速入门-1
  • MSPM0G3507学习笔记(一) 重置版:适配逐飞库的ti板环境配置