BlockDeviceConfig
Block Device Configuration
Controls for block device configuration
There are a variety of independent attributes that it is desirable to control when configuring block devices for a virtual machine in OpenStack
Source type
- Glance image
- Cinder volume
- Ephemeral file
Guest format
- ext4 (or other FS formats)
- ISO
- Swap (different format per guest OS)
- None
Device type
- Disk
- CDROM
- Floppy
- Flash (MMC)
Disk bus
- USB
- IDE
- VirtIO
- SCSI
Shutdown action
- Delete
- Preserve
Boot order
- Index
In addition to the above parameters, it is neccesary to support a "disk path" parameter, to allow the user to request a specific block device path in the guest eg /dev/sda. In general this cannot be supported by all hypervisors and thus its usage should be discouraged in favour of allowing the guest OS / hypervisor to choose paths. For the sake of compatibility with existing tools / APIs though, it must be supported
Command line syntax for block config
The 'nova boot' command currently uses a combination of the '-image' and '-block-device-mapping' command line args to configure storage. The latter is mostly a clone of the same named arg from the EC2 commands, and is not a very well designed syntax from the POV of extensibility.
Given the extra features to be supported, it is desirable to introduce a new syntax for 'nova boot' and friends which is more expressive
Key off the device type:
- -cdrom type=glance,id=XXXXXXXXX,bus=ide,bootindex=2
- -disk type=cinder,id=XXXXXXXXX,bus=ide,bootindex=1
- -mmc type=ephemeral,format=swap,size=50,dev=/dev/sda
Or a totally generic arg:
- -block type=glance,id=XXXXXXX,bus=ide,bootindex=2
- -block type=cinder,id=XXXXXXX,bus=ide,device=cdrom,bootdex=1
- -block type=ephemeral,format=swap,size=50,bus=ide,device=floppy
The only compulsory argument ought to be the type + id, eg the glance or cinder ID. Everything else should have sane defaults filled in by the hypervisor driver in Nova.
Data Format for Nova Compute APIs
TBD