Virtualization Storage Management
Facilitate as simple as possible storage provisioning over libvirt connections (local and remote), for use by virtual machines.
- Name: ColeRobinson
- Targeted release: Fedora 10
- Last updated: 2008-08-11
- Percentage of completion: 90%
Fedora 8 introduced the ability to manage existing guest domains remotely using libvirt. It was not possible to create new remote guests due to lack of storage management capabilities. This feature is to add the ability to list, create and delete storage volumes from a remote host using libvirt. This includes the ability to create raw sparse & non-sparse files in a directory, allocate LVM logical volumes, partition physical disks, and attach to iSCSI targets.
Benefit to Fedora
This will enable the virt-manager tool to remote provision new guest domains, and manage the storage associated with them. It will provide improved SELinux integration, since the APIs will be able to ensure that all storage volumes have the correct SELinux security context when being assigned to a guest.
- List storage volumes in a directory, and allocate new volumes, raw files both sparse and non-sparse, and formats supported by qemu-img (cow, qcow, qcow2, vmdk, etc)
- List partitions in a disk, and allocate new partitions from free space
- Logic to an iSCSI server and list volumes associated with an exported target
- List logical volumes in an LVM volume group, and allocate new LVM logical volumes
- Automatically assign correct SELinux security context label to all volumes when associating with a guest (ie, virt_image_t)
- Install 2 Fedora 9 machines
- Enable the libvirtd service on one machine
- Run virt-manager on the other machine
- Browse storage available on the server, using virt-manager
- Allocate a logical volume from a volume group.
- Allocate a file in a directory
- Attach to an iSCSI server
- Create a new guest OS and associate with some storage.
There will no longer be any need to directly login to a server providing virtualization capabilities. All common management tasks can be completed remotely using virt-manager.
- Core storage APIs in libvirt:
- File based storage backend in libvirt (Done, in F9)
- LVM based storage backend in libvirt (Done, F9)
- Disk based storage backend in libvirt (Can list existing devices, partition removal fix is posted, needs some work for adding)
- iSCSI based storage backend in libvirt (Done, in F9)
- UI for browsing storage pools, and allocating storage volumes from a pool (Done)
- Provision directory/file based pools and volumes (Done)
- Provision disk pools and partition volumes (in progress)
- Provision LVM based pools and volumes (Done)
- Use iSCSI storage pools and volumes (in progress)
As long as virt-manager UI is taken upstream, current situation is acceptable. Disk and iSCSI support can be added later with not a large amount of effort. File based provisioning is the priority and it is already in working order.
UI documentation forthcoming after it is pulled in upstream
FIXME--Won't affect existing functionality, but I can write up some docs after this stuff lands.