Chapter 9. Virtualized storage devices

This chapter covers installing and configuring storage devices in virtual machines. The term block devices refers to various forms of storage devices. All the procedures in this chapter work with both Xen and KVM hypervisors.


The target variable in libvirt configuration files accepts only the following device names:
  • /dev/xvd[a to z][1 to 15]
    Example: /dev/xvdb13
  • /dev/xvd[a to i][a to z][1 to 15]
    Example: /dev/xvdbz13
  • /dev/sd[a to p][1 to 15]
    Example: /dev/sda1
  • /dev/hd[a to t][1 to 63]
    Example: /dev/hdd3

9.1. Creating a virtualized floppy disk controller

Floppy disk controllers are required for a number of older operating systems, especially for installing drivers. Presently, physical floppy disk devices cannot be accessed from virtual machines. However, creating and accessing floppy disk images from virtualized floppy drives is supported. This section covers creating a virtualized floppy device.
First, create an image file of the floppy disk with the dd command. Replace /dev/fd0 with the name of a floppy device and name the disk image appropriately.
# dd if=/dev/fd0 of=/tmp/legacydrivers.img


The para-virtualized drivers can map physical floppy devices to fully virtualized guests. For more information on using para-virtualized drivers see Chapter 13, KVM Para-virtualized Drivers.
This example uses a guest created with virt-manager running a fully virtualized Red Hat Enterprise Linux installation with an image located in /var/lib/libvirt/images/rhel5FV.img. The Xen hypervisor is used in the example.
  1. Create the XML configuration file for your guest image using the virsh command on a running guest.
    # virsh dumpxml rhel5FV > rhel5FV.xml
    This saves the configuration settings as an XML file which can be edited to customize the operations and devices used by the guest. For more information on using the virsh XML configuration files, see Chapter 34, Creating custom libvirt scripts.
  2. Create a floppy disk image for the guest.
    # dd if=/dev/zero of=/var/lib/libvirt/images/rhel5FV-floppy.img bs=512 count=2880
  3. Add the content below, changing where appropriate, to your guest's configuration XML file. This example is an emulated floppy device using a file-based image.
    <disk type='file' device='floppy'>
    	<source file='/var/lib/libvirt/images/rhel5FV-floppy.img'/>
    	<target dev='fda'/>
  4. Force the guest to stop. To shut down the guest gracefully, use the virsh shutdown command instead.
    # virsh destroy rhel5FV
  5. Restart the guest using the XML configuration file.
    # virsh create rhel5FV.xml
The floppy device is now available in the guest and stored as an image file on the host.