From Fedora Project Wiki

Revision as of 15:22, 9 September 2008 by Jlaska (talk | contribs) (Corrected wiki url syntax)

Virtualization Storage Management

Summary

Facilitate as simple as possible storage provisioning over libvirt connections (local and remote), for use by virtual machines.

Owner

  • Name: ColeRobinson

Current status

  • Targeted release: Fedora 10
  • Last updated: 2008-08-11
  • Percentage of completion: 90%

Detailed Description

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.

Scope

  • 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)

Test Plan

  • 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.

User Experience

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.

Dependencies

  • 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)
  • virt-manager:
    • 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)

Contingency Plan

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.

Documentation

UI documentation forthcoming after it is pulled in upstream

Release Notes

FIXME--Won't affect existing functionality, but I can write up some docs after this stuff lands.

Comments and Discussion