☰
WSL Ubuntu迁移至D盘:解决C盘空间与性能问题
2026/10/28 7:38:06 网站建设 项目流程

1. 为什么需要调整Ubuntu路径到D盘?

对于使用Windows Subsystem for Linux (WSL)的用户来说,默认安装的Ubuntu系统会占用C盘空间。随着使用时间的增长,以下几个问题会逐渐显现:

  1. C盘空间告急:Ubuntu系统文件、apt安装的软件包、Docker镜像等会快速消耗C盘空间。我的一个项目在运行Docker容器三个月后,C盘就被占用了近50GB。

  2. 性能瓶颈:当C盘是SSD而D盘是更大容量的SSD或HDD时,将Ubuntu迁移到D盘可以更好地利用硬件资源。

  3. 备份管理困难:系统盘上的WSL实例与Windows系统混在一起,不利于单独备份Linux环境。

重要提示:在开始迁移前,请确保D盘有足够的剩余空间(建议至少预留50GB),并备份重要数据。

2. 迁移前的准备工作

2.1 检查当前WSL安装情况

打开PowerShell(管理员权限),运行以下命令查看已安装的WSL发行版:

wsl -l -v

输出示例:

NAME STATE VERSION * Ubuntu Running 2

记录下你的Ubuntu发行版名称(如"Ubuntu"或"Ubuntu-22.04")。

2.2 确定迁移目标路径

在D盘创建目标文件夹,例如:

mkdir D:\WSL\Ubuntu

2.3 导出当前Ubuntu系统

使用wsl --export命令创建备份:

wsl --export Ubuntu D:\WSL\ubuntu_backup.tar

这个过程可能需要几分钟,取决于你的Ubuntu系统大小。我的一个包含多个开发环境的实例导出后达到了28GB。

3. 迁移操作步骤详解

3.1 注销当前Ubuntu实例

在PowerShell中执行:

wsl --unregister Ubuntu

这个操作不会删除你的用户文件,但会移除WSL中的实例注册信息。如果你有未保存的工作,请先退出Ubuntu会话。

3.2 导入到新位置

使用以下命令将备份导入到D盘:

wsl --import Ubuntu D:\WSL\Ubuntu D:\WSL\ubuntu_backup.tar --version 2

参数说明:

  • Ubuntu:发行版名称(与之前一致)
  • D:\WSL\Ubuntu:新的安装目录
  • D:\WSL\ubuntu_backup.tar:备份文件路径
  • --version 2:指定使用WSL 2

3.3 设置默认用户

导入后的系统会默认以root用户登录。要恢复原来的用户,需要:

  1. 首先启动Ubuntu:
wsl -d Ubuntu
  1. 在Ubuntu中编辑/etc/wsl.conf:
sudo nano /etc/wsl.conf
  1. 添加以下内容(将username替换为你的用户名):
[user] default=username
  1. 退出Ubuntu并关闭所有WSL窗口,然后在PowerShell中重启WSL:
wsl --shutdown

4. 迁移后的验证与优化

4.1 验证文件系统位置

在PowerShell中运行:

Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss\ | ForEach-Object {Get-ItemProperty $_.PSPath} | Select-Object DistributionName,BasePath

应该能看到BasePath指向D:\WSL\Ubuntu。

4.2 调整Docker数据存储位置(如适用)

如果你使用Docker Desktop with WSL2:

  1. 打开Docker Desktop设置
  2. 进入Resources → WSL Integration
  3. 确保你的Ubuntu发行版已启用
  4. 进入Resources → Advanced,可以调整磁盘镜像位置

4.3 磁盘性能测试

在Ubuntu中运行以下命令测试磁盘速度:

sudo apt install hdparm hdparm -Tt /dev/sda

比较迁移前后的数值。在我的测试中,从SATA SSD(C盘)迁移到NVMe SSD(D盘)后,读取速度从450MB/s提升到了2100MB/s。

5. 常见问题解决方案

5.1 权限问题

迁移后可能会遇到文件权限错误,特别是对Windows文件的访问。解决方法:

  1. 在/etc/wsl.conf中添加:
[automount] options = "metadata,umask=22,fmask=11"
  1. 重启WSL实例

5.2 路径引用失效

如果之前有脚本使用硬编码的/mnt/c路径,需要更新为新的挂载点。WSL2会自动挂载Windows分区到/mnt/下(如/mnt/d)。

5.3 系统更新问题

有时迁移后apt update会失败,这是因为某些缓存文件路径变化。解决方法是清理缓存:

sudo rm -rf /var/lib/apt/lists/* sudo apt update

6. 进阶配置建议

6.1 使用符号链接优化空间

对于大型开发项目,可以将特定目录符号链接到D盘其他位置:

ln -s /mnt/d/projects ~/projects

6.2 定期清理WSL磁盘空间

WSL2使用的虚拟硬盘不会自动收缩,需要手动压缩:

  1. 在PowerShell中关闭WSL:
wsl --shutdown
  1. 优化磁盘:
diskpart select vdisk file="D:\WSL\Ubuntu\ext4.vhdx" attach vdisk readonly compact vdisk detach vdisk exit

6.3 多发行版管理

如果你有多个WSL发行版,可以在不同磁盘上安装它们。例如:

  • Ubuntu在D盘
  • Kali Linux在E盘

使用wsl --import时指定不同的安装路径即可。

我在实际使用中发现,将开发环境分散到不同物理磁盘可以显著提高多任务处理性能,特别是在同时运行多个容器或编译大型项目时。一个典型的配置可能是:

  • C盘:Windows系统
  • D盘(NVMe SSD):主Ubuntu开发环境
  • E盘(HDD):归档项目和备份

这种配置下,即使同时运行多个内存密集型任务,系统响应也能保持流畅。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询