总目录
1. 概览
2. 教程
3. 使用指引
3.1 安装Multipass - 基于Linux / 基于macOS / 基于Windows
3.2 管理实例 - 创建实例 / 修改实例 / 使用实例 / 使用实例命令别名 / 与实例共享数据 / 移除实例
3.3 管理Multipass - 设置驱动 / 使用Multipass服务授权代理 / 远程使用Multipass / 提高挂载性能 / 使用Packer打包Multipass镜像 / 设置图像界面 / 使用不同的macOS终端 / 配置Multipass外部储存位置 👈
3.4 问题排查 - 连接日志 / 网络问题处理
[自版本1.11.0起]
这篇文档教授了如何配置Multipass的外部存储位置, 以缓存镜像, 存储实例, 和其他用户信息
内容
- 配置新位置
- Linux
- macOS
- Windows
- 回退为默认位置
- Linux
- macOS
- Windows
配置新位置
配置新位置有时候会很有用, 例如, 你想从启动分区释放一些存储空间.
⚠︎警告:
- Multipass在到期后不会迁移现存实例或者清除之前缓存的镜像. 因此, 你需要重新下载Ubuntu镜像, 并重新初始化VM实例. 在Windows上, 这有时候意味着Multipass服务无法授权代理. 如果这些发生了, 并且你的口令无法授权, 那你就需要从旧地址复制数据到新地址.
- 在Windows服务管理里停止Multipass服务
- 从旧的Multipass目录复制所有内容到新地址.(默认的Multipass存储地址是:C:\ProgramData\Multipass)
- 启动Multipass服务
- 同样的, 卸载Multipass的时候, 卸载器也不会自动删除自定义位置的数据, 需要你手动删除.
Linux
首先, 停止Multipass虚拟机:
$ sudo snap stop multipass
根据新的Multipass软件接口位置, 你需要分别链接各自的接口. 因为软件的封闭性, 这个目录需要定位在/home
或者任一可移除的挂载点:
$ sudo snap connect multipass:removable-media $ for /mnt or /media
$ sudo snap connect multipass:all-home $ for /home/*
然后, 创建新目录
$ mkdir -p <path>
$ sudo chown root <path>
最后, 使用上面创建的绝对路径创建一个override配置文件以替换<path>
并重启Multipass虚拟机.
$ sudo mkdir /etc/systemd/system/snap.multipass.multipassd.service.d/
$ sudo tee /etc/systemd/system/snap.multipass.multipassd.service.d/override.conf <<EOF
[Service]
Environment=MULTIPASS_STORAGE=<path>
EOF
$ sudo systemctl daemon-reload
$ sudo snap start multipass
macOS
在macOS上, 使用root
和新位置的绝对路径替换<path>
, 以运行下列命令:
$ launchctl stop /Library/LaunchDaemons/com.canonical.multipassd.plist
$ tee /Library/LaunchDaemons/setenv.MULTIPASS_STORAGE.plist <<\EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>setenv.MULTIPASS_STORAGE</string>
<key>ProgramArguments</key>
<array>
<string>/bin/sh</string>
<string>-c</string>
<string>
if [ -z "$( /bin/launchctl getenv MULTIPASS_STORAGE )" ]; then
/bin/launchctl setenv MULTIPASS_STORAGE "<path>"
/bin/launchctl unload /Library/LaunchDaemons/com.canonical.multipassd.plist
/bin/launchctl load /Library/LaunchDaemons/com.canonical.multipassd.plist
fi
</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
EOF
$ launchctl load /Library/LaunchDaemons/setenv.MULTIPASS_STORAGE.plist
Windows
在Windows上, 以管理员身份打开PowerShell命令提示器, 并使用新地址的绝对位置替换<path>
, 执行下列命令:
PS> Stop-Service Multipass
PS> Set-ItemProperty -Path "HKLM:System\CurrentControlSet\Control\Session Manager\Environment" -Name MULTIPASS_STORAGE -Value "<path>"
PS> Start-Service Multipass
回退为默认位置
Linux
$ sudo snap stop multipass
尽管是非必须的, 也要确保Multipass没有连接到不需要的目录, 分别断开已设置好的自定义存储位置接口.
$ sudo snap disconnect multipass:removable-media # for /mnt or /media
$ sudo snap disconnect multipass:all-home # for /home/*
然后, 移除override配置文件并重启Multipass虚拟机.
$ rm /etc/systemd/system/snap.multipass.multipassd.service.d/override.conf
$ sudo systemctl daemon-reload
$ sudo snap start multipass
macOS
在macOS上, 使用root
执行下列命令:
$ launchctl stop /Library/LaunchDaemons/com.canonical.multipass.plist
$ rm /Library/LaunchDaemons/setenv.MULTIPASS_STORAGE.plist
$ launchctl load /Library/LaunchDaemons/setenv.MULTIPASS_STORAGE.plist
Winodws
在Windows上, 使用较高权限在PowerShell中执行下列命令:
PS> Stop-Service Multipass
PS> Remove-ItemProperty -Path "HKLM:System\CurrentControlSet\Control\Session Manager\Environment" -Name MULTIPASS_STORAGE
PS> Start-Service Multipass