multipass中文文档-提高挂载性能(代码片段)

但老师 但老师     2023-03-13     582

关键词:

总目录(待翻译完完善)

1. 概览

2. 教程

3. 使用指引

   3.1 安装Multipass

     3.1.1 基于Linux

     3.1.2 基于macOS

     3.1.3 基于Windows

   3.2 管理实例

     3.2.1 创建实例

     3.2.2 修改实例

     3.2.3 使用实例

     3.2.4 使用实例命令别名

     3.2.5 与实例共享数据

     3.2.6 移除实例

   3.3 管理Multipass

     3.3.1 设置驱动

     3.3.2 授权客户端使用Multipass服务

     3.3.3 远程使用Multipass

     3.3.4 提高挂载性能

     3.3.5 使用Packer打包Multipass镜像

     3.3.6 设置图像界面

     3.3.7 使用不同的macOS终端

   3.4 问题排查

     3.4.1 连接日志

     3.4.2 网络问题排查


如何提高Multipass挂载性能

也见: 如何与实例共享数据, mount

Multipass默认使用SSHFS在实例上挂载主机文件夹. 这提供了一个在性能, 安全和功能之间比较好的中和方案, 其他方法也可以手动完成这个任务.

我们在很多挂载方法上进行了彻头彻尾的测试. 在这里, 我们将简述如何使用我们找到的高效方法在每个系统上如何创建共享, 如何在Multipass实例中挂载他们

内容:


SMB/CIFS挂载

在我们的测试中, SMB在Multipass所有搭建中都是性能优良的. Windows和MacOS提供了一个系统SMB服务器, Linux上也是很容易安装的(较新核心版本提供了一个系统服务器, 而我们在这描述的也可以针对于老旧Linux版本).

使用SMB共享文件夹

Windows

首先, 这一部分是可选操作, 我们可以启动在Windows中内置的SMB服务器上的RDMA. 在控制面板中, 我们可以找到Windows功能开关. 在这个窗口, 我们需要启用SMB驱动. Windows可能需要启动.

然后, 我们可以用PowerShell共享文件夹. 看下面的命令:

New-SmbShare -Name "share_name" -Path "C:\\my_path"

我们会在主机上创建一个名为\\\\hostname\\share_name的共享. 命令New-SmbShare有很多选项可以控制连接和编码, 但是这不是这篇文章的话题.


MacOS

这些完全可以使用界面操作(GUI)完成, 只是有些步骤从命令行操作比较简单. 如果可以, 我们后面会展示后者.

我们需要按照下面的命令启动共享系统:

$ sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server.plist EnabledServices -aaray disk
$ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smbd.plist

然后, 去共享指定文件夹:

$ sudo sharing -a /my_path/

最后, 我们需要允许用户通过SMB连接到共享文件夹. 因此, 我们需要导航到系统偏好(System Preferences), 找到共享图标. 在共享菜单有一个选项按钮. 这个按钮会打开一个窗口, 我们可以在其中选择哪些用户能够挂载. 接下来选择想要授权的用户并输入密码.

所有这些步骤会在主机上创建一个名为//hostname/my_path/的挂载点.


Linux

在Ubuntu(或其他任何基于Debian的发行版)中, samba-common包包含了SMB服务器. 我们可以使用命令安装它

$ sudo apt update && sudp apt install -y samba-common

然后, 编辑文件/etc/samba/smb.conf, 使我们可以添加共享, 新增词条, 如下:

[test_smb_mount]
  comment = smb mount test
  path = /my_path/
  read only = no
  browsable = yes
  kernel oplocks = yes

在实例中使用SMB共享挂载文件夹

一旦主机操作系统可以共享文件夹, 我们就可以在实例中挂载它. 为此, 需要cifs-tools包, 可以用下面命令安装

$ sudo apt upadte && sudo apt install -y cifs-utils

挂载需要下面命令行最终完成

$ sudo mount -t cifs //hostname/my_path_or_share_name mount_folder/ -o user=my_name,uid=1000

my_name是主机上共享文件夹的用户. 在终端中会被要求输入密码, 输入就完成了.

这一步可选. 我们可以在/etc/fstab新增一行, 让操作系统启动时自动挂载文件夹, 或至少不需要指定挂载名称或选项. 命令行应如下:

//hostname/my_path_or_share_name mount_folder/ cifs user=my_name,uid=1000 0 0

这个文件中的词条使用空格或者制表符分隔. 第一个是共享名称或路径, 第二个是要挂载文件夹的目录, 第三个是挂载类型, 第四个是一个逗号分隔的选项列表(添加noatuo避免启动时挂载), 最后两个选项最好保持为0.

假设noauto在选项中被指定了, 文件夹就需要用下面方式挂载

$ sudo mount mount_folder/

virtio-fs挂载

如果在Linux上使用LXD后端, 我们可受益于有一个优良的文件系统挂载, 鉴于系统运行时无法挂载的花销. 使用下面命令在实例上挂载文件夹

$ lxc --project multipass config device add lxdinstance mount_lxd disk source=/my_path path=//mount_folder

鉴于lxdinstance是实例名称, mount_lxd是一个挂载过于随意的设备名称, source指定了共享路径, path指定了源文件(source)需要挂载的目录. 只需要这个命令, LXD搞定了所有事情: 无需在实例运行命令.

virtio-fs也在qemu和libvirt后端可用, 尽管需要额外安装.


NFS挂载

Linux和MacOS在系统上提供了NFS服务器.


使用NFS共享文件夹

MacOS

MacOS上的NFS服务器是使用nfsd命令和文件/etc/exports控制. 我们通过新增文件夹到文件中去共享, 使用类似于下面的一行文本:

/my_path -mapall=host_user -network 192.168.0.0 -mask=255.255.0.0

-network-mask控制着共享可以连接到的网络. 然后, 我们使用命令启动服务器

$ sudo nfsd start

(或者服务器已经正在运行则使用restart)


Linux

在Ubuntu(或其他任何基于Debian的发行版), nfs-kernel-server包包含了核心中需要使用NFS服务器的文件. 我们可以用命令安装它

$ sudo apt update && sudo apt install -y nfs-kernel-server

用下面命令共享文件夹:

$ sudo exportfs *:/my_path

*表示"导出任何主机"; 我们在这可以指定主机名或IP地址


在实例中使用NFS共享挂载文件夹

我们首先需要使用下面命令在实例中安装NFS客户端

$ sudo apt update && sudo apt install -y nfs-common

然后, 我们可以用下面命令挂载共享文件夹

$ sudo mount -t nfs HPST_IP:/my_path /mount_folder -o user=host_user, uid=instance_uid,gid=instance_gid

原文链接

How to improve mounts performance in Multipass

multipass中文文档-教程(代码片段)

...xff08;待翻译完完善)1.概览2.教程3.使用指引  3.1安装Multipass    3.1.1基于Linux    3.1.2基于macOS    3.1.3基于Windows  3.2管理实例    3.2.1创建实例    3.2.2修改实例    3.2.3使用实例    3.2.4使用实例命令别名    3.2... 查看详情

multipass中文文档-使用multipass服务授权客户端(代码片段)

...xff08;待翻译完完善)1.概览2.教程3.使用指引  3.1安装Multipass    3.1.1基于Linux    3.1.2基于macOS    3.1.3基于Windows  3.2管理实例    3.2.1创建实例    3.2.2修改实例    3.2.3使用实例    3.2.4使用实例命令别名    3.2... 查看详情

multipass中文文档-使用不同的macos终端(代码片段)

...xff08;待翻译完完善)1.概览2.教程3.使用指引  3.1安装Multipass    3.1.1基于Linux    3.1.2基于macOS    3.1.3基于Windows  3.2管理实例    3.2.1创建实例    3.2.2修改实例    3.2.3使用实例    3.2.4使用实例命令别名    3.2... 查看详情

multipass中文文档-远程使用multipass(代码片段)

...xff08;待翻译完完善)1.概览2.教程3.使用指引  3.1安装Multipass    3.1.1基于Linux    3.1.2基于macOS    3.1.3基于Windows  3.2管理实例    3.2.1创建实例    3.2.2修改实例    3.2.3使用实例    3.2.4使用实例命令别名    3.2... 查看详情

multipass中文文档-概览

...(待翻译完完善)1.概览2.教程3.使用指引3.1安装Multipass3.1.1基于Linux3.1.2基于macOS3.1.3基于Windows3.2管理实例3.2.1创建实例3.2.2修改实例3.2.3使用实例3.2.4使用实例命令别名3.2.5与实例共享数据3.2.6移除实例3.3管理Multipass3.3.1设置... 查看详情

multipass中文文档-运行docker容器(代码片段)

在Multipass中运行Docker容器工作流键值总结在Multipass中运行Docker容器分类multipass难度2作者nathan.hart@canonical.com概览Multipass团队最近发布了一项新的Docker工作流,可以让用户在任何平台连接到开箱即用的Docker.这项新的工作流让macOS,W... 查看详情

multipass中文文档-运行docker容器(代码片段)

在Multipass中运行Docker容器工作流键值总结在Multipass中运行Docker容器分类multipass难度2作者nathan.hart@canonical.com概览Multipass团队最近发布了一项新的Docker工作流,可以让用户在任何平台连接到开箱即用的Docker.这项新的工作流让macOS,W... 查看详情

multipass中文文档-使用multipass服务授权客户端(代码片段)

...xff08;待翻译完完善)1.概览2.教程3.使用指引  3.1安装Multipass    3.1.1基于Linux    3.1.2基于macOS    3.1.3基于Windows  3.2管理实例    3.2.1创建实例    3.2.2修改实例    3.2.3使用实例    3.2.4使用实例命令别名    3.2... 查看详情

multipass中文文档-设置驱动(代码片段)

...xff08;待翻译完完善)1.概览2.教程3.使用指引  3.1安装Multipass    3.1.1基于Linux    3.1.2基于macOS    3.1.3基于Windows  3.2管理实例    3.2.1创建实例    3.2.2修改实例    3.2.3使用实例    3.2.4使用实例命令别名    3.2... 查看详情

multipass中文文档-设置驱动(代码片段)

...xff08;待翻译完完善)1.概览2.教程3.使用指引  3.1安装Multipass    3.1.1基于Linux    3.1.2基于macOS    3.1.3基于Windows  3.2管理实例    3.2.1创建实例    3.2.2修改实例    3.2.3使用实例    3.2.4使用实例命令别名    3.2... 查看详情

multipass中文文档-移除实例(代码片段)

...xff08;待翻译完完善)1.概览2.教程3.使用指引  3.1安装Multipass    3.1.1基于Linux    3.1.2基于macOS    3.1.3基于Windows  3.2管理实例    3.2.1创建实例    3.2.2修改实例    3.2.3使用实例    3.2.4使用实例命令别名    3.2... 查看详情

multipass中文文档-移除实例(代码片段)

...xff08;待翻译完完善)1.概览2.教程3.使用指引  3.1安装Multipass    3.1.1基于Linux    3.1.2基于macOS    3.1.3基于Windows  3.2管理实例    3.2.1创建实例    3.2.2修改实例    3.2.3使用实例    3.2.4使用实例命令别名    3.2... 查看详情

multipass中文文档-与实例共享数据(代码片段)

...xff08;待翻译完完善)1.概览2.教程3.使用指引  3.1安装Multipass    3.1.1基于Linux    3.1.2基于macOS    3.1.3基于Windows  3.2管理实例    3.2.1创建实例    3.2.2修改实例    3.2.3使用实例    3.2.4使用实例命令别名    3.2... 查看详情

multipass中文文档-使用实例命令别名(代码片段)

...xff08;待翻译完完善)1.概览2.教程3.使用指引  3.1安装Multipass    3.1.1基于Linux    3.1.2基于macOS    3.1.3基于Windows  3.2管理实例    3.2.1创建实例    3.2.2修改实例    3.2.3使用实例    3.2.4使用实例命令别名    3.2... 查看详情

使用multipass管理ubuntuvms(代码片段)

Multipass是一个轻量级的ubuntu虚拟实例管理器,可以很快速的创建一个新的虚拟实例用来做开发测试很方便。Multipass官网Github下载页面下载地址为github提供,可能很慢或打不开,可以复制页面上的的下载链接地址后使用下方代理... 查看详情

通过添加索引提高应用系统性能(代码片段)

目录环境文档用途详细信息环境系统平台:MicrosoftWindows(64-bit)2012版本:5.6.5文档用途数据库性能=应用程序性能,但通常情况下,应用程序性能由底层数据库及其配置决定,这是因为许多应用程序及其ORM࿰... 查看详情

通过添加索引提高应用系统性能(代码片段)

目录环境文档用途详细信息环境系统平台:MicrosoftWindows(64-bit)2012版本:5.6.5文档用途数据库性能=应用程序性能,但通常情况下,应用程序性能由底层数据库及其配置决定,这是因为许多应用程序及其ORM࿰... 查看详情

vue2中文文档:笔记(代码片段)

声明式渲染Vue.js的核心是,可以采用简洁的模板语法来声明式的将数据渲染为DOM:<divid="app">message//模板语法</div>  varapp=newVue(  //新建vue实例(响应式)el:‘#app‘,      //挂载到#appdata:message:‘HelloVue!‘  /... 查看详情