Nova有一个块设备的概念,它可以暴露给云主机。一个云主机实例可以拥有几种类型的块设备(稍后我们将在本文中对此进行更详细的介绍),哪些块设备可用,主要取决于特定的部署方式以及为租户和用户设置的使用限制。bdm是一种组织和保存实例所有块设备数据的方法。
- 指定指定的块设备的API/CLI结构和语法,主要用于创建实例的请求。
- 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
网友评论