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指令格式。

相关推荐

  1. Linux 磁盘挂载

    2024-07-10 00:46:03       23 阅读
  2. PVE 缩小LXC中 RAW 格式磁盘

    2024-07-10 00:46:03       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 00:46:03       49 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 00:46:03       53 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 00:46:03       42 阅读
  4. Python语言-面向对象

    2024-07-10 00:46:03       53 阅读

热门阅读

  1. 宝塔-Linux模板常用命令-centos7

    2024-07-10 00:46:03       15 阅读
  2. 仙人掌中的SNMP检测不到服务器

    2024-07-10 00:46:03       18 阅读
  3. 算法力扣刷题 三十四【71.简化路径】

    2024-07-10 00:46:03       18 阅读
  4. yolov5:Conv类参数量计算

    2024-07-10 00:46:03       23 阅读
  5. GitHub每日最火火火项目(7.9)

    2024-07-10 00:46:03       19 阅读
  6. py基础语法简述

    2024-07-10 00:46:03       16 阅读
  7. 代码随想录算法训练营:20/60

    2024-07-10 00:46:03       19 阅读
  8. 【6-1:全链路压测】

    2024-07-10 00:46:03       19 阅读
  9. 识别色带后执行相应命令

    2024-07-10 00:46:03       17 阅读
  10. QMdiAreaQMdiAreaQMdiAreaQMdiArea

    2024-07-10 00:46:03       20 阅读