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虚拟机时尝试启动的顺序。

你可能感兴趣的:(Block_device_mapping(块设备映射bdm))