Block_device_mapping(块设备映射bdm)

Nova有一个块设备的概念,它可以暴露给云主机。一个云主机实例可以拥有几种类型的块设备(稍后我们将在本文中对此进行更详细的介绍),哪些块设备可用,主要取决于特定的部署方式以及为租户和用户设置的使用限制。bdm是一种组织和保存实例所有块设备数据的方法。

  1. 指定指定的块设备的API/CLI结构和语法,主要用于创建实例的请求。

  2. Nova内部用于记录和保存的数据结构,最终保存在block_device_mapping表中。然而,Nova内部有几种“略微”不同的格式来表示相同的数据。所有这些都记录在代码中,或者由一组不同的类表示,但是如果不知道它们的存在可能会让阅读代码的人理解出错。因此,除了反映数据库模式的BlockDeviceMapping对象外,我们还有:

    2.1 API格式——这是从API客户机接收的一组原始键-值对,立即就会转换为对象;但是,一些验证是使用这种格式完成的。从现在起,我们将把这种格式称为“API BDMs”。

    2.2 virt驱动程序格式 - 这是由以下类定义的格式:mod:nova.virt.block_device。各种virt驱动程序中的代码使用此格式。除了提供不同的格式(模仿Python dict接口)之外,这些类还提供了一些用来捆绑某些类型的块设备常见的一些功能。我们将这种格式称为“驱动程序BDM”

v1 仅支持cinder卷的原始格式

v2 包含以下字段

source_type - this can have one of the following values:
  • image
  • volume
  • snapshot
  • blank
dest_type - this can have one of the following values:
  • local
  • volume

上述两个字段的组合将定义所指的块设备

  • image -> local
  • volume -> volume
  • snapshot -> volume
  • image -> volume
  • blank -> volume
  • blank -> local
guest_format - 告诉Nova如何在attach前格式化设备,应该只用于空白的local image。如果值为swap,则表示交换磁盘。
device_name - 当前最好留空(未指定),除非用户想要覆盖image-metadata中指定的现有设备。对于Libvirt,即使覆盖了,实例的最终设备名称集仍可能被驱动程序更改。
disk_bus和device_type - 一些虚拟机管理程序(目前只有libvirt)可能支持的低级别详细信息。disk_bus值可以是:ide,usb, virtio,scsi,而device_type可以是disk,cdrom,floppy,lun。它取决于虚拟化驱动程序,并且可能会随着添加更多支持而更改。留空是最常见的事情。
boot_index - 定义虚拟机管理程序在尝试从存储启动guest虚拟机时尝试启动的顺序。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.环境准备 centos7 1.1、yum安装设置 yum list |grep openstackcentos...
    davisgao阅读 10,849评论 1 16
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 9,332评论 0 5
  • 很久以前就听过一个理论。因为人的知识就像是一个圆,当你知道的知识越多圆就会越大,这样圆的外围与周围环境接触的...
    时间里的花Lily阅读 3,184评论 0 0
  • 转行做产品有小半年了,切合自身经历及这之间看书总结,梳理了一下产品经理能力模型,随着后续的经验积累还会不断完善,希...
    Eva雅瀛阅读 1,566评论 0 1