wsl2 中的文件物理存储在哪里?
Where are the files inside wsl2 physically stored?
我已经在我的 windows 机器上安装了 wsl2,但我无法确定文件的实际存储位置。
请注意,我并不是说我想在文件资源管理器中浏览它们——我知道这可以通过在资源管理器中输入 \wsl$\
.
来完成
如果我不得不猜测,我会说文件存储在存储 os 的同一硬盘驱动器中。
其实我有两个相关的问题。
- 文件存储在哪里?
- 如果它们存储在我的 os 的硬盘驱动器中,我可以以某种方式将我的 wsl 重新定位到另一个硬盘驱动器吗?
编辑:
我能够找到安装路径,在我的机器中路径是:
C:\Users\Eliran\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState
有没有办法将它安装到另一个位置?
所有文件都存储在安装目录下的ext4.vhd
个文件中,不能像ext4(obv)
那样直接挂载到windows
有两种方法可以更改上述 vhd 文件的位置,一种是官方的、繁琐的方式,另一种是非官方的快速而肮脏的方式
官方繁琐方式
- 从 CMD/PowerShell
将发行版导出到 wsl.exe --export <Distro> <FileName>
的位置
- 使用
wsl.exe --import <Distro> <InstallLocation> <FileName> [Options]
将发行版导入到不同的位置
这样做的问题是它非常耗时,在你这样做之后,祈祷它导出和导入价值几千兆字节的数千个文件没有任何问题
快速而肮脏的方式
这涉及一个名为 lxrunoffline
的非官方开源 WSL 管理器
要安装它(最多需要一分钟)阅读开发人员的说明 here
如果您是通过从发布页面手动下载二进制文件安装的,请确保将其安装到 PATH 中的目录,例如 C:\Windows
现在过程很简单 lxrunoffline move -n <distroname> -d <destination-folder>
例如lxrunoffline move -n Ubuntu-20.04 -d G:\wsl\
希望我有所帮助
编辑:打字错误
我在 PowerShell 中执行了这些命令,将我的 Ubuntu 发行版从 C: 移动到驱动器 D:\wsl-ubuntu :
PS C:\Users\smarc> mkdir D:\wsl-ubuntu (create new location)
PS C:\Users\smarc> wsl -l -v (list wsl distros)
NAME STATE VERSION
Ubuntu Running 2
PS C:\Users\smarc> wsl --shutdown
PS C:\Users\smarc> wsl -l -v (verify if is stopped)
NAME STATE VERSION
Ubuntu Stopped 2
PS C:\Users\smarc> wsl --export Ubuntu ubuntu.tar
PS C:\Users\smarc> wsl --unregister Ubuntu
PS C:\Users\smarc> wsl --import Ubuntu D:\wsl-ubuntu\ .\ubuntu.tar --version 2
最后重启电脑。
我遇到的唯一问题是启动 Ubuntu 应用程序时的默认用户是 root。我需要执行 $ su sergio
来输入我的个人用户。
您可以在进程结束时删除 ubuntu.tar。
#edit 2021-04-13:正如评论中所指出的,我忘记了“--export”命令。
这是对您最后一个问题的回答:使用符号 links
- 以管理员身份打开命令提示符
- 使用
wsl --shutdown
关闭 wsl 虚拟机
- 将文件夹更改为
C:\Users\Eliran\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\
- 将
LocalState
文件夹移动到另一个位置,例如 Z:\wsl\Ubuntu\
- 用
mklink /J LocalState Z:\WSL\Ubuntu\LocalState
创建符号 link
我还会 edit/create 您的用户文件夹中的 .wslconfig
文件,以将交换文件移动到您存储 WSL 虚拟机的文件夹,也许 edit/add [=51] 选项=] 内核和 RAM 分配
[wsl2]
memory=4GB
processors=2
swap=1GB
swapFile=Z:\WSL\swap.vhdx
memory
是 WSL 将使用的最大 ram;
processors
是分配给您的 WSL 虚拟机的内核;
swap
是交换文件的大小;
swapFile
是您交换的位置,据我所知,所有 WSL 虚拟机都使用它;注意路径中的双斜杠,它们对于路径是必需的。
像往常一样启动 WSL VM。
我已经在我的 windows 机器上安装了 wsl2,但我无法确定文件的实际存储位置。
请注意,我并不是说我想在文件资源管理器中浏览它们——我知道这可以通过在资源管理器中输入 \wsl$\
.
来完成
如果我不得不猜测,我会说文件存储在存储 os 的同一硬盘驱动器中。
其实我有两个相关的问题。
- 文件存储在哪里?
- 如果它们存储在我的 os 的硬盘驱动器中,我可以以某种方式将我的 wsl 重新定位到另一个硬盘驱动器吗?
编辑:
我能够找到安装路径,在我的机器中路径是:
C:\Users\Eliran\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState
有没有办法将它安装到另一个位置?
所有文件都存储在安装目录下的ext4.vhd
个文件中,不能像ext4(obv)
有两种方法可以更改上述 vhd 文件的位置,一种是官方的、繁琐的方式,另一种是非官方的快速而肮脏的方式
官方繁琐方式
- 从 CMD/PowerShell 将发行版导出到
- 使用
wsl.exe --import <Distro> <InstallLocation> <FileName> [Options]
将发行版导入到不同的位置
wsl.exe --export <Distro> <FileName>
的位置
这样做的问题是它非常耗时,在你这样做之后,祈祷它导出和导入价值几千兆字节的数千个文件没有任何问题
快速而肮脏的方式
这涉及一个名为 lxrunoffline
的非官方开源 WSL 管理器要安装它(最多需要一分钟)阅读开发人员的说明 here
如果您是通过从发布页面手动下载二进制文件安装的,请确保将其安装到 PATH 中的目录,例如 C:\Windows
现在过程很简单 lxrunoffline move -n <distroname> -d <destination-folder>
例如lxrunoffline move -n Ubuntu-20.04 -d G:\wsl\
希望我有所帮助
编辑:打字错误
我在 PowerShell 中执行了这些命令,将我的 Ubuntu 发行版从 C: 移动到驱动器 D:\wsl-ubuntu :
PS C:\Users\smarc> mkdir D:\wsl-ubuntu (create new location)
PS C:\Users\smarc> wsl -l -v (list wsl distros)
NAME STATE VERSION
Ubuntu Running 2
PS C:\Users\smarc> wsl --shutdown
PS C:\Users\smarc> wsl -l -v (verify if is stopped)
NAME STATE VERSION
Ubuntu Stopped 2
PS C:\Users\smarc> wsl --export Ubuntu ubuntu.tar
PS C:\Users\smarc> wsl --unregister Ubuntu
PS C:\Users\smarc> wsl --import Ubuntu D:\wsl-ubuntu\ .\ubuntu.tar --version 2
最后重启电脑。
我遇到的唯一问题是启动 Ubuntu 应用程序时的默认用户是 root。我需要执行 $ su sergio
来输入我的个人用户。
您可以在进程结束时删除 ubuntu.tar。
#edit 2021-04-13:正如评论中所指出的,我忘记了“--export”命令。
这是对您最后一个问题的回答:使用符号 links
- 以管理员身份打开命令提示符
- 使用
wsl --shutdown
关闭 wsl 虚拟机
- 将文件夹更改为
C:\Users\Eliran\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\
- 将
LocalState
文件夹移动到另一个位置,例如Z:\wsl\Ubuntu\
- 用
mklink /J LocalState Z:\WSL\Ubuntu\LocalState
创建符号 link
我还会 edit/create 您的用户文件夹中的 .wslconfig
文件,以将交换文件移动到您存储 WSL 虚拟机的文件夹,也许 edit/add [=51] 选项=] 内核和 RAM 分配
[wsl2]
memory=4GB
processors=2
swap=1GB
swapFile=Z:\WSL\swap.vhdx
memory
是 WSL 将使用的最大 ram;processors
是分配给您的 WSL 虚拟机的内核;swap
是交换文件的大小;swapFile
是您交换的位置,据我所知,所有 WSL 虚拟机都使用它;注意路径中的双斜杠,它们对于路径是必需的。
像往常一样启动 WSL VM。