Nova有一個(gè)塊設(shè)備的概念陶贼,它可以暴露給云主機(jī)。一個(gè)云主機(jī)實(shí)例可以擁有幾種類型的塊設(shè)備(稍后我們將在本文中對(duì)此進(jìn)行更詳細(xì)的介紹)肃拜,哪些塊設(shè)備可用垛贤,主要取決于特定的部署方式以及為租戶和用戶設(shè)置的使用限制。bdm是一種組織和保存實(shí)例所有塊設(shè)備數(shù)據(jù)的方法躺同。
- 指定指定的塊設(shè)備的API/CLI結(jié)構(gòu)和語法阁猜,主要用于創(chuàng)建實(shí)例的請(qǐng)求。
- Nova內(nèi)部用于記錄和保存的數(shù)據(jù)結(jié)構(gòu)蹋艺,最終保存在block_device_mapping表中剃袍。然而,Nova內(nèi)部有幾種“略微”不同的格式來表示相同的數(shù)據(jù)捎谨。所有這些都記錄在代碼中民效,或者由一組不同的類表示,但是如果不知道它們的存在可能會(huì)讓閱讀代碼的人理解出錯(cuò)涛救。因此畏邢,除了反映數(shù)據(jù)庫模式的BlockDeviceMapping對(duì)象外,我們還有:
2.1 API格式——這是從API客戶機(jī)接收的一組原始鍵-值對(duì)检吆,立即就會(huì)轉(zhuǎn)換為對(duì)象;但是舒萎,一些驗(yàn)證是使用這種格式完成的。從現(xiàn)在起咧栗,我們將把這種格式稱為“API BDMs”逆甜。
2.2 virt驅(qū)動(dòng)程序格式 - 這是由以下類定義的格式:mod:nova.virt.block_device。各種virt驅(qū)動(dòng)程序中的代碼使用此格式致板。除了提供不同的格式(模仿Python dict接口)之外交煞,這些類還提供了一些用來捆綁某些類型的塊設(shè)備常見的一些功能。我們將這種格式稱為“驅(qū)動(dòng)程序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
上述兩個(gè)字段的組合將定義所指的塊設(shè)備
- image -> local
- volume -> volume
- snapshot -> volume
- image -> volume
- blank -> volume
- blank -> local