使用9p virtFS在宿主机和vm之间共享多个文件 sharing multiple host files with guest using 9p virtFS

2023-11-06

目录

前置条件

准备共享目录

编辑qemu.conf


前置条件

根据qemu官方文档,首先准备前置条件,测试条件为pve 7.1-10,omv 5.6.26-1/omv 6.0.19/debian 11/

首先确保guest的kernel中的9p options都设置正确了,kernel设置一般在/boot/config…中,可能会出现多个config文件,通过uname -r确认当前使用的内核,选择对应的config文件更改即可

CONFIG_NET_9P=y
CONFIG_NET_9P_VIRTIO=y
CONFIG_NET_9P_DEBUG=y (Optional)
CONFIG_9P_FS=y
CONFIG_9P_FS_POSIX_ACL=y
CONFIG_PCI=y
CONFIG_VIRTIO_PCI=y

 然后在/etc/modules中添加如下

loop
virtio
9p
9pnet
9pnet_virtio

准备共享目录

host准备想要共享给guest的目录,该目录的权限需要和vm的运行权限相同,我并没有在qemu.conf中找到权限描述。遂去找虚拟机运行的uid gid,首先ps aux|grep vmid找到虚拟机进程,再由cat /proc/pid/status 找出所属uid和gid。确认为root:root

mkdir /tank/omv
chown root:root /tank/omv

编辑qemu.conf

在host也就是pve上,设置目标guest的qemu.conf(具体的路径为/etc/pve/qemu-server/VMID.conf),如果host支持的话直接编辑xml会更省力

在qemu.conf中添加(此处我共享了多个文件,在网上死活找不到共享多个文件的教程,args这行参数就始终写不对,最后被我试出来了--|)

args:-fsdev local,path=/tank/omv,security_model=passthrough,id=fsdev0,writeout=immediate -device virtio-9p-pci,fsdev=fsdev0,mount_tag=omv -fsdev local,path=/mnt/pve/parity1_10T,security_model=passthrough,id=fsdev1,writeout=immediate -device virtio-9p-pci,fsdev=fsdev1,mount_tag=parity1 -fsdev local,path=/mnt/pve/da    ta1_10T,security_model=passthrough,id=fsdev2,writeout=immediate -device virtio-9p-pci,fsdev=fsdev2,mount_tag=data1

guest中vi /etc/fstab

omv /mnt/omv 9p trans=virtio,version=9p2000.L,msize=1000000000  0   0
parity1 /mnt/parity1 9p trans=virtio,version=9p2000.L,msize=1000000000 0 0
data1 /mnt/data1 9p trans=virtio,version=9p2000.L,msize=1000000000 0 0

最后 关闭虚拟机,再开启(不是重启)

mount测试一下,不回显表示成功,可以写入/etc/fstab中了

mount -t 9p -o trans=virtio omv /mnt/zfs/

接下来就和OpenMediaVault:你的开源 NAS 系统 - 知乎中的操作一致了

参考:

[转载]VirtFS 虚拟化技术简介 - 知乎

qemu中device和driver的区别 使用9p文件系统_weixin_30741653的博客-CSDN博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用9p virtFS在宿主机和vm之间共享多个文件 sharing multiple host files with guest using 9p virtFS 的相关文章

  • Linux 中的无缓冲 I/O

    我正在写入大量的数据 这些数据数周内都不会再次读取 由于我的程序运行 机器上的可用内存量 显示为 空闲 或 顶部 很快下降 我的内存量应用程序使用量不会增加 其他进程使用的内存量也不会增加 这让我相信内存正在被文件系统缓存消耗 因为我不打算
  • 使用 grep 查找包含所有搜索字符串的行

    我有一个文件 其中包含很多与此类似的行 id 2796 some model Profile message type MODEL SAVE fields account 14 address null modification times
  • Jenkins中找不到环境变量

    我想在詹金斯中设置很多变量 我试过把它们放进去 bashrc bash profile and profile of the jenkins用户 但 Jenkins 在构建发生时找不到它们 唯一有效的方法是将所有环境变量放入Jenkinsf
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 我可以从命令行打印 html 文件(带有图像、css)吗?

    我想从脚本中打印带有图像的样式化 html 页面 谁能建议一个开源解决方案 我使用的是 Linux Ubuntu 8 04 但也对其他操作系统的解决方案感兴趣 你可以给html2ps http user it uu se jan html2
  • Linux中的定时器类

    我需要一个计时器来以相对较低的分辨率执行回调 在 Linux 中实现此类 C 计时器类的最佳方法是什么 有我可以使用的库吗 如果您在框架 Glib Qt Wx 内编写 那么您已经拥有一个具有定时回调功能的事件循环 我认为情况并非如此 如果您
  • 加载数据infile,Windows和Linux的区别

    我有一个需要导入到 MySQL 表的文件 这是我的命令 LOAD DATA LOCAL INFILE C test csv INTO TABLE logs fields terminated by LINES terminated BY n
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 尝试安装 LESS 时出现“请尝试以 root/管理员身份再次运行此命令”错误

    我正在尝试在我的计算机上安装 LESS 并且已经安装了节点 但是 当我输入 node install g less 时 出现以下错误 并且不知道该怎么办 FPaulMAC bin paul npm install g less npm ER
  • 如何将目录及其子目录中的所有 PDF 文件复制到一个位置?

    如何全部复制PDF文件从目录及其子目录到单个目录 实际上还有更多的文件 并且深度有些任意 假设四个目录的最大深度是公平的 我想这些文件需要重命名 如果a pdf例如 位于多个目录中 因为我会adding https ebooks stack
  • Linux 内核标识符中前导和尾随下划线的含义是什么?

    我不断遇到一些小约定 比如 KERNEL Are the 在这种情况下 是内核开发人员使用的命名约定 还是以这种方式命名宏的语法特定原因 整个代码中有很多这样的例子 例如 某些函数和变量以 甚至 这有什么具体原因吗 它似乎被广泛使用 我只需
  • NPTL 和 POSIX 线程有什么区别?

    NPTL 和 POSIX 线程之间的基本区别是什么 这两者是如何演变的 POSIX 线程 pthread 不是一个实现 它是几个函数的 API 规范 纸上的标准 英文 其名称以pthread 以及定义在
  • Linux 可执行文件与 OS X“兼容”吗?

    如果您在基于 Linux 的平台上用 C 语言编译一个程序 然后将其移植以使用 MacOS 库 它会工作吗 来自编译器的核心机器代码在 Mac 和 Linux 上兼容吗 我问这个问题的原因是因为两者都是 基于 UNIX 的 所以我认为这是真
  • 在 Linux 上使用多处理时,TKinter 窗口不会出现

    我想生成另一个进程来异步显示错误消息 同时应用程序的其余部分继续 我正在使用multiprocessingPython 2 6 中的模块来创建进程 我试图用以下命令显示窗口TKinter 这段代码在Windows上运行良好 但在Linux上
  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包
  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M

随机推荐

  • Monkey命令详解

    命令 adb shell monkey 命令参数 所有的参数都需要放在monkey和设置的次数之间 参数的顺序可以调整 若带了 p p必须放在monkey之后 参数必须在 p和次数之间 2 monkey基础命令 adb shell monk
  • An error happened during template parsing 错误解决

    学习记录 idea启动web项目出现问题 An error happened during template parsing 出现原因 web资源路径没有正确导入 解决方法 添加或修改正确的路径
  • 一步步教你修改Windows本地hosts文件,轻松修改域名指向!

    一步步教你修改Windows本地hosts文件 轻松修改域名指向 简介 一 什么是hosts文件 二 准备工作 二 定位hosts文件 三 修改hosts文件 四 刷新DNS缓存 五 验证修改结果 结论 简介 在前端开发过程中 我们经常需要
  • 【Django学习笔记 - 18】:drf请求响应简介、基类(APIView、GenericAPIView)、mixin扩展类与三级视图、视图集与路由

    文章目录 drf请求响应简介 请求Request 常用属性 响应Response 构造方式 参数说明 Response常用属性 基类 APIView的使用 使用案例 案例一 查看drf的结构 案例二 使用post请求获取表单和非表单数据 案
  • 【Vue】学习笔记-组件传值

    Vue 学习笔记 组件传值 前言 1 父级向子级传递数据 2 子级向父级传递数据 常见错误总结 前言 组件之间的传值可以分为三种 1 父级向子级传递数据 2 子级向父级传递数据 3 非父子级传递数据 本文主要讲解父级向子级传递数据和子级向父
  • 探索接入网和网络运营商——ADSL接入网的结构和工作方式

    1 互联网的基本机构和家庭 公司网络是相同的 互联网的基本工作方式和家庭 公司网络一样 互联网也是通过路由器来转发包的 而且路由器的基本结构和工作方式也并没有什么不同 当然也有不同之处 其中之一就是与转发设备间的距离 在家庭 公司网络中 与
  • 海外有哪些流行的支付方式?

    大家好 我是老三 很久没写支付相关的文章了 这期给大家讲一讲 海外都在用哪些支付方式 简介 我们先来看下两个主流电商产品的美国站的支付方式 在国内 想必大家都习惯了支付宝和微信支付二分天下 这两种支付方式基本上覆盖了90 的支付需求 但是在
  • vue 使用cos-js-sdk-v5 进行文件其它方式的上传操作

    首先进行安装 npm install cos js sdk v5 下面是讲http与其结合 封装的js多次可使用 import COS from cos js sdk v5 封装http请求 function http method get
  • 【华为OD机试】代表团坐车【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 某组织举行会议 来了多个代表团同时到达 接待处只有一辆汽车 可以同时接待多个代表团 为了提高车辆利用率 请帮接待员计算可以坐满车的接待方案 输出方案数量 约束 1 一
  • 对于随机森林的通俗理解

    一 决策树 决策树是机器学习最基本的模型 在不考虑其他复杂情况下 我们可以用一句话来描述决策树 如果得分大于等于60分 那么你及格了 这是一个最最简单的决策树的模型 我们把及格和没及格分别附上标签 及格 1 没及格 0 那么得到的决策树是这
  • docker 的具名挂载与匿名挂载

    大家好 今天我们分享一下docker 的具名挂载与匿名挂载 以这条命令举例 root localhost docker run d P name nginx02 v etc nginx nginx d8e9b9084cf884e7e0d11
  • 【图像检测】基于DeepPupil Net 实现眼中心定位附matlab代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab仿真内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器 电力系统 信号
  • IEC104协议的参数设置

    本文主要是IEC104协议的参数的定义及个人的理解 如有错误请指正 重要参数 104规约规定了两个参数K和W 其取值为1到32767 其中K表示发送方在有K个I格式报文未得到对方的确认时 将停止数据发送 W表示接收方最迟在接收W个I格式报文
  • 数据库复习基本概念——关系、元组、属性、码、域、分量、形式化定义

    1 关系 Relation 一个关系对应通常说的一张表 2 元组 Tuple 表中的一行即为一个元组 3 属性 Attribute 表中的一列即为一个属性 给每一个属性起一个名称 即属性名 4 码 键 码是数据系统中的基本概念 所谓码就是能
  • CTFweb篇——签到题

    0x00 前言 一个简单的CTF签到题 0x01 打开靶场 0x02 打开靶场地址发现信息 通过题目提示信息使用burpsuit抓包 Send to Repeater 然后查看 Repeater 点击GO 在Response中 Header
  • Git使用常见问题解决方法汇总

    1 在Ubuntu下使用 git clone时出现server certificate verification failed CAfile etc ssl certs ca certificates crt CRLfile none 解决
  • Java Web-servlet技术-重定向与转发

    1 创建Verify java的servlet文件 重写doGet 方法 package myservlet import java io IOException import java io PrintWriter import java
  • JMeter-Eclipse添加自定义函数 MD5加密 32位和16位

    最近公司的接口都是MD5 16位加密 所以要使用加密功能 之前也做过加密 因为用的比较少 所以是写了一个加密方法 导出JAR包 调用的 用起来需要很多设置 并且换算效率也不高 听前同事说 jmeter可以自己写函数 放在函数管理里面 今天自
  • Fabric2.0.0环境搭建及链码操作详解

    安装软件 更新源 sudo apt get update 安装Go cd usr local 上传go的压缩包 sudo rz 解压压缩包 sudo tar zxf go1 14 4 linux amd64 tar gz 配置环境 vim
  • 使用9p virtFS在宿主机和vm之间共享多个文件 sharing multiple host files with guest using 9p virtFS

    目录 前置条件 准备共享目录 编辑qemu conf 前置条件 根据qemu官方文档 首先准备前置条件 测试条件为pve 7 1 10 omv 5 6 26 1 omv 6 0 19 debian 11 首先确保guest的kernel中的