WSL2 Linux子系统调整存储位置

WSL2 默认不支持修改Linux 安装路径,官方提供的方式,只有通过导出、导入的方式实现Linux子系统的迁移。

修改注册表的方式官方不推荐,没有尝试过,仅提供操作方式(自行评估风险,建议备份好数据)

1. 打开 **注册表编辑器** (`regedit`)。
2. 导航到以下路径:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss
3. 找到 `BasePath` 或者 `Default` 键,并将其值修改为你想要的磁盘位置,例如 `D:\WSL`。

WSL2安装的Linux子系统默认都存放在 C盘中。

在实际场景中,会想要将子系统安装在特定的盘中,而不是挤占C盘空间,尤其是一些特殊系统,如在安装有 Stable Diffusion Web UI 的Linux 子系统中,大模型等会需要占用过多的磁盘空间。

为了避免占用过多的C盘,所以需要将已经安装完的Linux子系统进行迁移。

除了迁移、该方式也可以用来备份环境,环境污染了,重新从备份还原一下。

查看当前安装的发行版,并停止

WSL 安装的 Linux 子系统默认安装在:C:\Users\<用户名>\AppData\Local\Packages\<DistroPackageName>\LocalState\ext4.vhdx

例如:我安装的 Ubuntu24.04 ,文件路径为:

C:\Users\Admin\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_79rhkp1fndgsc

## 查看当前安装的Linux子系统发行版(STATE=Running运行中)
PS C:\Users\Admin> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-24.04    Running         2

## 关停需要备份的子系统
PS C:\Users\Admin> wsl --shutdown Ubuntu-24.04

导出子系统到指定目录

## 查看当前 Linux 子系统(Stopped 表示停止)
C:\Users\Admin>wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-24.04    Stopped         2

## 导出 发行版名称=Ubuntu-24.04 的子系统到 D 盘
## 格式: wsl --export <发行版名称> D:\backup\<文件名>.tar
C:\Users\Admin>wsl --export Ubuntu-24.04 D:\mine\virtual_host\backup\ubuntu24_04_back.tar
正在导出,这可能需要几分钟时间。
操作成功完成。

卸载原有的子系统

## 卸载子系统
## 格式: wsl --unregister <发行版名称>
C:\Users\Admin>wsl --unregister Ubuntu-24.04
正在注销。
操作成功完成。

导入备份的子系统到指定路径中

## 导入
## 格式 wsl --import 新名称 新路径 <备份包.tar>
C:\Users\Admin>wsl --import ubuntu2404_AI D:\mine\virtual_host\unbuntu_24_04 D:\mine\virtual_host\backup\ubuntu24_04_back.tar
正在导入,这可能需要几分钟时间。

验证

WSL配置官方文档

keyboardman@papapa-keyboard-man:~$ sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
[sudo] password for keyboardman:
Tue Oct 22 00:53:55 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 565.51.01              Driver Version: 565.90         CUDA Version: 12.7     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 4070 ...    On  |   00000000:01:00.0  On |                  N/A |
|  0%   38C    P8             11W /  285W |     422MiB /  16376MiB |      2%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A        33      G   /Xwayland                                   N/A      |
+-----------------------------------------------------------------------------------------+
### WSL2 安装软件导致 C 盘空间不足解决方案 #### 使用 `wsl --export` 和 `wsl --import` 进行迁移 为了减少WSL2对C盘的空间占用,可以考虑将整个WSL2实例迁移到其他磁盘分区。具体操作如下: 1. **导出当前的WSL2分发版本** 首先停止所有正在运行的WSL2进程并备份现有环境: ```bash wsl --shutdown ``` 接着使用命令导出现有的Ubuntu镜像文件至目标位置(假设为D:\WSL\ubuntu.tar),这一步骤能够创建一个可移植的存档副本[^1]。 ```bash wsl --export Ubuntu D:\WSL\ubuntu.tar ``` 2. **导入已保存的WSL2分发版本到新路径** 创建一个新的目录用于存放新的WSL2实例数据,并通过下面的指令完成导入工作。这里需要注意的是,替换`<NewInstanceName>`为你想要设置的新实例名称以及调整实际的目标文件夹地址[^3]。 ```bash mkdir D:\WSL\UbuntuData wsl --import NewUbuntuInstance "D:\WSL\UbuntuData" "D:\WSL\ubuntu.tar" ``` 3. **验证迁移后的状态** 执行以下命令来确认刚刚的操作是否成功,同时也可以查看目前所有的WSL2发行版列表及其对应的安装位置。 ```bash wsl --list --verbose ``` 4. **卸载旧的WSL2分发版本** 如果一切正常,则可以通过此命令移除原先位于C盘上的Ubuntu实例,从而释放大量宝贵的空间资源。 ```bash wsl --unregister Ubuntu ``` #### 调整 Docker 数据存储位置 如果在WSL2环境中还部署了Docker服务,那么同样应该关注其产生的额外开销。对于这种情况,建议按照特定方法更改默认的数据存储路径,使得容器及相关元数据被放置于非系统盘之中[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值