libvirt qemu添加新类型磁盘格式

目录

前言     

1 qemu部分

1.1 磁盘格式驱动创建

1.2 json文件创建数据结构对象:

2 libvirt部分:

2.1 对应关系设置

2.2参设向指令格式转换


前言     

qemu中有很多虚拟机磁盘格式,比如较为熟悉的qcow2luksraw等。每种磁盘有各自的数据组织模式以及相应实现的独特功能,比如qcow2虚拟磁盘个格式可以实现快照功能,luks实现的是对数据的加密功能。这些独特功能是对应数据管理与存储模式的外在表现,换言之为了实现相应独特功能,需要合理设置一种数据管理存储模式,并把这种模式加入到qemu的磁盘格式驱动中。

1 qemu部分

1.1 磁盘格式驱动创建

raw磁盘格式例来说明一个磁盘格式注册模板:

        首先需要初始化类型为BlockDriver类型的对象,在raw磁盘格式中初始化name为“raw“,如果是自定义的则初始化为自定义的磁盘格式名字即可。初始化的对象包含了该磁盘格式所有操作调用函数,比如打开操作(bdrv_open)写入操作(bdrv_co_pwritev)等,磁盘操作函数的具体逻辑依据具体的数据管理模式而定。

         完成对BlockDriver类型对象初始化后,通过bdrv_register注册到全局变量bdrv_drivers中,该变量是BlockDriver类型的列表。

1.2 json文件创建数据结构对象

1: block-core.json文件中添加用到的数据结构,以raw类型举例:

2:然后把该数据类型插入BlockdevOptions

3:把该对应的驱动名称添加到BlockdevDriver

2 libvirt部分:

2.1 对应关系设置

libvirt的解析代码逻辑中,首先我们需要创建磁盘类型字符串与enum之间的对应关系,目的是通过字符串解析找到回应的enum序号,进而做相应的switch处理。

2.2参设向指令格式转换

libvirt需要根据对应的enum需要把字符串转化为props对象,进而用来创建qemu-kvm启动指令,比如这里的VIR_STORAGE_FILE_RAW通过qemuBlockStorageSourceGetFormatRawProps函数把字符串转化为相应的qemu-kvm指令格式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/44692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言文件操作技术详解

C语言提供了一套强大的文件操作API,允许开发者进行文件读写、访问和管理。本文将深入探讨C语言文件操作的背后的技术,包括基本文件操作、文件读写以及文件权限和属性。我们将通过详细的解释和实用的代码案例来展示如何有效地使用这些技术。 第一部分&am…

C++ //练习 14.52 在下面的加法表达式中分别选用了哪个operator+?列出候选函数、可行函数及为每个可行函数的实参执行的类型转换:

C Primer(第5版) 练习 14.52 练习 14.52 在下面的加法表达式中分别选用了哪个operator?列出候选函数、可行函数及为每个可行函数的实参执行的类型转换: struct LongDouble{//用于演示的成员opeartor;在通常情况下是个…

自动驾驶技术的原理

自动驾驶汽车利用视觉识别功能来感知周围环境并做出驾驶决策。以下是自动驾驶汽车如何利用视觉识别功能及其原理的详细说明: ### 视觉识别在自动驾驶中的应用 1. **目标检测(Object Detection)**:识别并定位道路上的其他车辆、行人…

【安全设备】EDR

一、什么是EDR EDR即集检测、防御、运维功能于一体的主机安全及管理系统。EDR是一款集成了丰富的系统加固与防护、网络加固与防护等功能的主机安全产品。 二、EDR的部署模式 EDR(Endpoint Detection and Response,端点检测和响应)的部署方…

开源项目编译harbor arm架构的包 —— 筑梦之路

GitHub - amy5200/harbor-arm64 先做个记录,空了再验证

矩阵分解及其在机器学习中的应用

阵分解是一种广泛应用于数据挖掘和机器学习领域的技术,它通过将一个高维数据集分解为多个低维的数据集,以降低数据的复杂性、提高计算效率,并发现数据中的隐含结构。本文将详细介绍矩阵分解的基本概念、主要方法及其在机器学习中的应用。 一、…

JWT总结

JWT(JSON Web Tokens)是一种用于在双方之间安全传输信息的简洁的、URL安全的令牌标准。以下是关于JWT的结构、作用、优点以及可能出现的问题的详细解答: 一、JWT的结构 JWT的结构由三个部分组成,它们通过.(点&#x…

fastadmin框架后台列表固定第一行列表固定头部

在列表中,如果列表字段很多,并且每页数量很多,往下拉的时候就不好辨别数据是哪个字段的,对用户造成不好的浏览体验。 通过以下方法,可以实现将列表的第一行,也就是头部,固定在第一行显示&#…

TLS与SSL的区别

目录 一、协议版本二、安全性三、性能四、兼容性五、总结 TLS(Transport Layer Security)和SSL(Secure Sockets Layer)都是为了保障互联网通信安全而设计的协议,主要用于加密客户端与服务器之间的数据传输。尽管它们的…

14-62 剑和诗人36 - 混合专家 (MoE) 扩展 AI 视野

了解混合专家 (MoE) 混合专家 (MoE) 是一种机器学习技术,它将多个“专家”神经网络模型组合成一个更大的模型。MoE 的目标是通过组合专业专家(每个专家专注于不同的子领域)来提高 AI 系统的准确性和能力。 MoE 模型的一些关键特征&#xff1…

探索Kotlin:从K1到K2

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 嘿,小伙伴们!今天我们来聊聊Kotlin,这个在安卓开发圈里越来越火的编程语言。…

苹果手机抹机(马来西亚)操作步骤

苹果手机抹机(马来西亚)操作步骤 操作环境操作步骤 操作环境 苹果6s,没有插卡,就连接上了一个wifi 操作步骤

XML Schema 杂项数据类型

XML Schema 杂项数据类型 XML Schema 提供了多种数据类型,用于定义 XML 文档中元素和属性的结构和内容。除了常见的简单类型(如字符串、整数、日期等)和复杂类型(如元素和属性的组合)之外,XML Schema 还包括一些杂项数据类型,用于处理特定的数据格式和验证需求。本文将…

错位情缘悬疑升级

✨🔥【错位情缘,悬疑升级!关芝芝与黄牡丹的惊世婚约】🔥✨在这个迷雾重重的剧场,一场前所未有的错位大戏正悄然上演!👀 你没看错,昔日兄弟的前女友关芝芝,竟摇身一变成了…

Unity-Invoke带参数的代码一个

Unity的分帧加载,其实没多难,只要理解了原理 而Unity的延迟有两种写法, 一是, StartCoroutinue 二是, Invoke() 我记得之前,有一种Action Delay的写法(找到在补上) 三现在更多的应该是, async task 等 其实原理都是一样的(虽然底层逻辑不一样,完全不一样,但…

API 类别 - 选择器

API 类别 - 选择器 选择器 API 是一种常用的接口,它允许开发人员通过特定的标准从一组数据中选择特定的项目。这类 API 广泛应用于各种编程场景,特别是在需要从大量数据中快速准确地提取信息时。本文将探讨选择器 API 的概念、应用场景、工作原理以及如何在实际项目中有效使…

FastAPI 学习之路(三十七)元数据和文档 URL

实现前的效果 那么如何实现呢,第一种方式如下: from routers.items import item_router from routers.users import user_router""" 自定义FastApi应用中的元数据配置Title:在 OpenAPI 和自动 API 文档用户界面中作为 API 的…

【SGX系列教程】(五)enclave多线程测试,以及EPC内存测试

文章目录 一. 概述二. 原理分析2.1 多线程在Enclave中的实现流程2.2 多线程和EPC内存分配之间的冲突2.3 解决多线程和EPC内存分配冲突的策略 三. 源码分析3.1 代码结构3.2 源码3.2.1 App文件夹3.2.2 Enclave文件夹3.2.3 Makefile 3.3 总结 四.感谢支持 一. 概述 在Intel SGX环境…

Go语言特点

Go语言主要具有以下特点和优势: 1. **高效的性能**:Go语言的性能与Java或C相似,通常比Python快30倍。 2. **并发性**:Go语言致力于简化编程,其创新之处在于goroutines和通道,提供了轻量级的线程和gorouti…

从零开始学习嵌入式----C语言框架梳理与后期规划

目录 一、环境搭建. 二、见解 三、C语言框架梳理 四、嵌入式学习规划流程图(学习顺序可能有变) 一、环境搭建. C语言是一门编程语言,在学习的时候要准备好环境。我个人比较喜欢用VS,具体怎么安装请百度。学习C语言的时候,切忌…