Adding storage for the Guests

The storage infrastructure is shown in the second drop-down of the tree view. flexVDI supports three kinds of storage Objects: Image Storage, Media Storage and Direct Storage. An Image Storage provides storage for Guests' images. A Media Storage stores installation media (ISO images and flexVDI appliances). Finally, a Direct Storage offers Guests the possibility to directly access a Host's physical disk.


Image Storages

The Image Storage objects represent a logical storage space for Guests' images, accessible by a set of Hosts. This space is further divided into Volumes, which store the virtual disks of the Guests. The typical use of an Image Storage is to map a shared disk array and its volumes to the set of Hosts connected to it. flexVDI supports the most common SAN technologies: SAS disk arrays, Fiber Channel, iSCSI...

For now, we will focus on making a local directory available to store Guests' images. If you want to learn how to access a shared storage, refer to the Storage chapter in the Administration Guide.

Volumes

There can be three types of Volumes in an Image Storage: OCFS2 Volumes, Gluster Volumes and External Volumes.

OCFS2 volumes refer to volumes created and offered by the shared storage cabinet, that are accessed by the hosts as a local block device. flexVDI uses the OCFS2 cluster file system to manage these volumes, and its configuration and management is discussed in the Administration Guide here. OCFS2 supports reflinks and fallocate, which are particularly useful to work with large image files.

Gluster Volumes use the GlusterFS distributed storage technology to aggregate several local disks into a single storage space. This solution does not need to access a shared volume in a SAN and uses cheaper, more common hardware, but its performance is lower. Gluster also supports fallocate. However, you need at least two hosts to create a Gluster Volume.

Gluster Volumes are an experimental feature. Stability and performance issues have been observed, so use it at your own risk.

Finally, External volumes are not directly managed by flexVDI. The system administrator is responsible for mounting them in the same path in all the Hosts involved in the Image Storage. The two most common use cases for external volumes are:

  • Use local storage in a single Host.
  • Use an NFS or CIFS shared folder accessible by a set of Hosts (Beware: neither NFS nor CIFS support fallocate, so creating new images is a slow process).

When mounting an External Volume on a block device (iSCSI, FC, SAS, SCSI,..)  from several hosts at the same time, a cluster aware filesystem as OCFS2 of GFS2 must be used. Using ext4, XFS, ... for mounting a shared block device will quickly cause filesystem corruption in a short time, causing non-booting vms, and data loss.

In the tree view, Volumes are identified by a small stack of disks. Gluster Volumes have an extra pie graph symbol, and External Volumes have an extra right arrow. In this example, "Manager" is an OCFS2 Volume, "SSD" is a Gluster Volume and "NFS" is an External Volume:


Create an external volume

Before creating a Guest, you need a volume to store its image. With a single node, the easiest way is to create an external volume that maps to a local directory in your Host. Select the "Image Storages" item of the tree view and click on the "New Image Storage" button. A New Image Storage form will appear. Fill in the name, like "MyImageStorage", and select the hosts that will be part of this Image Storage; right now, you should have just one host. Finally, click on the "Save" button.

You should now see the MyImageStorage details. Inside it, we are going to create an External Volume that stores its contents in /home/images. At the top right corner of the details view, there is a "New Volume" dropdown button. Click it and select "External Volume". In this New External Volume form, fill in the name (e.g. MyExternalVolume) and the mount point. Finally, click the "Save" button:



Read-write permissions

Be careful that the /home/images directory is read-writable by the qemu user. Otherwise guests will not be able to start.

In the end, you should see something like this in the tree view:

The details view of this new External Volume should show something like this:

Besides the name and the mount point, you can now see the status of the Volume and the available space. In the two tables at the bottom, you will see the Guests' images as you create them.

Media Storages

Media Storages are repositories of installation media. Two types of files are available from a Media Storage:

  • ISO images, that will be seen by the Guests as a read-only disk inside an optical drive. Such drives are attached to a Guest when it is created or modified, and ISO images can be attached to a drive at any time, even while the Guest is running.
  • FVM (flexVDI Virtual Machine) files, that contain exported virtual machines in flexVDI format. These files are used by the Guest Import tool.

At the end of the Getting Started guide , you activated the local CIFS server, so you should already have a Media Storage called cifs. Copy some installation ISOs there in order to install a new Guest later. Click on it, and information about it will be displayed in the details view:

From a technical point of view, Media Storages are shared folders accessed with the CIFS/SMB protocol. The form on the left shows the IP address, path and credentials that are used to establish the connection. Below it, the status of the Media Storage is shown, with the result message of the last operation on the storage. Next to it is the list of Hosts that should mount and have access to the Media Storage; in the example, there is only one Host. Finally, on the right side, there is the list of files contained in this Media Storage.