Types of Storage Doamins

A storage domain is a repository for virtual machine disk images used for system disks, data, or installation media.

There are two types of storage domains needed by a Red Hat Virtualization data center:

Data domain: The data domain stores the disk images that represent the virtual hard drives or other storage for virtual machines. These disk images can contain the operating system of the virtual machine or be purely used for data. Every Red Hat Virtualization data center must have one or more data domains associated with it. A data domain can only be associated with one Red Hat Virtualization data center at a time.

ISO domain: The ISO domain stores disk images used to install virtual machine operating systems and applications. These are often ISO 9660-formatted CD or DVD images. Every Red Hat Virtualization data center may have none or one ISO domain associated with it. However, the same ISO domain may be shared by several Red Hat Virtualization data centers.

A data domain can use one of a number of different storage technologies to provide its backend storage:

  • Network File System (NFS)
  • Other POSIX-compliant file systems
  • GlusterFS
  • Internet Small Computer System Interface (iSCSI)
  • Fiber Channel Protocol (FCP)
  • Local storage attached directly to the virtualization host (but the host must be in a data center and cluster that contains no other hosts)

An ISO domain must use an NFS export as the underlying storage for its images.

For NFS-based storage domains, all virtual disks, templates, and snapshots are stored as files. For block-oriented storage such as iSCSI and FCP, Red Hat Virtualization uses Logical Volume Management (LVM) to organize the block storage as a volume group, and individual virtual disks, images, and snapshots are managed internally as logical volumes.

This section of the post uses NFS-based exports to configure both data domains and ISO domains.

Preparing NFS exports for storage domains

NFS exports for use as an ISO domain or an NFS-based data domain need to be prepared for use with Red Hat Virtualization.

– A file system of sufficient size for the storage domain should be configured and exported from the NFS server.
– The NFS server should export the file system in read-write mode to all Red Hat Virtualization hosts.
– The top-level directory on the exported file system should be owned by user vdsm (with UID 36) and by group kvm (with GID 36). The directory permissions should be set so that user vdsm has read-write-execute access and the owning group and all other users have read-execute access (octal permissions 0755).

Note: The NFS server should not be one of the physical Red Hat Virtualization hosts. The NFS server is a single point of failure for the storage domain or domains using it, and therefore also for the cluster and the virtual machines using those storage domains. Ideally, the NFS server should be reliable and highly available.

Configuring an NFS based Storage Domain

The following procedure details how to use the Administration Portal to configure an NFS export as a data domain for a particular data center.

The data center needs to assign one of its hosts to implement any changes you make to its storage domains. The host currently assigned to do this is the Storage Pool Manager (SPM). Only one host in the data center is the SPM at any moment, in order to ensure metadata integrity. The host acting as the SPM otherwise operates just like any other host in the data center.

Note: In order to add storage domains to a data center, you must have at least one host attached to that data center in state Up.

1. Log in to the Administration Portal as the admin user or another user with sufficient administrative privileges.

2. Click the Storage icon for the data center that you want to add storage to. The existing storage domains for the data center are listed.

List the data center's storage domains

3. Click New Domain to add a new storage domain. In the pop-up window, titled New Domain, the data center associated with the storage domain can be selected using the Data Center menu.

Details for the new storage domain

4. The Domain Function menu specifies which type of storage domain is going to be created. If a data center has no data domain, just the Data type is listed in this menu. If a data domain is available in the data center, this menu contains the Data, ISO, and Export types. If the data center already has an ISO domain, the ISO type is not listed in this menu. In this example, Data is selected to create a data domain.

Configuring the storage domain type

5. The storage type used as a back end for the storage domain is specified using the Storage Type menu. There are several options, including NFS, GlusterFS, and Fibre Channel. Select NFS to create a storage domain based on an NFS export.

Configuring the Back End for the Storage Domain

6. The Host to Use menu selects the host this operation uses as the Storage Pool Manager (SPM). The SPM configures the NFS export used by the storage domain with initial metadata and directory structures. By default, the current SPM is selected.

Configuring the Host Used to Create Domain's Metadata and Structure

7. The Name, Description, and Comment fields add more information about the storage domain. A Name must be specified for the storage domain, but the other fields are optional.

Adding a Name and a Description to the Storage Domain

8. If NFS is selected as the back end for a storage domain, the Export Path field specifies the URI of the NFS share. The URI is specified using the fully-qualified domain name (FQDN) of the NFS server and the path of the NFS export.

mynfsserver.example.com:/export/share

In the previous example, mynfsserver.example.com is the NFS server’s FQDN, and / export/share is the NFS export. When done, click OK to create the storage domain.

Note: There are additional configuration options available in the Custom Configuration Parameters and the Advanced Parameters sections. These allow tuning different settings like the NFS version.

Configuring the Export Path for the NFS Share

Uploading ISO files to an ISO domain

1. Uploading ISO Images with ISO Uploader

The engine-iso-uploader command (also known as ISO Uploader) is a tool which can be used to upload ISO files and other installation images into an ISO domain. It automatically puts files in the correct places with the correct permissions. ISO Uploader can be slow to upload large images.

By default, ISO Uploader authenticates to Red Hat Virtualization using the admin user from the internal authentication domain.

To list all available ISO domains use the engine-iso-uploader list command:

[[email protected] ~]# engine-iso-uploader list
Please provide the REST API password for the [email protected] RHEV-M user (CTRL+D to
abort): redhat
ISO Storage Domain Name | Datacenter | ISO Domain Status 
isodomain               | Default    | active

To upload an ISO file (rhel-server-7.3-x86_64.iso in the example) to the storage domain isodomain, using the engine-iso-uploader utility:

[[email protected] ~]# engine-iso-uploader -i isodomain  
> upload rhel-server-7.3-x86_64.iso
... output omitted ...

When the ISO file upload has finished, the ISO file is displayed in the Images tab for the ISO storage domain.

Image List for an ISO Domain

2. Uploading ISO Images Manually

An alternative technique, which can be faster than using engine-iso-uploader, is to manually copy the ISO images to the NFS export.

The part that may make this challenging is that each ISO domain has a unique 128-bit UUID that is used as the name of the directory on its NFS export that contains the ISO domain’s files. On the ISO domain’s NFS export, the ISO files need to be copied into an existing directory which will have a name of the form

unique-UUID/images/11111111-1111-1111-1111-111111111111/

The easiest way to determine the value of unique-UUID is simply to look at the ISO domain’s NFS export before making the copy. For instance, if the NFS export is mounted as /exports/iso/, the following commands show the directory named using the unique UUID and the full path to the ISO image directory:

[[email protected] ~]# ls /exports/iso/
56a00180-8301-4673-a1b5-b31c25686de6
[[email protected] ~]# ls /exports/iso/56a00180-8301-4673-a1b5-b31c25686de6/ 
images/11111111-1111-1111-1111-111111111111/
rhel-server-7.3-x86_64.iso

Upload files directly to that directory. When uploaded, the files must be owned by user vdsm and group kvm (UID 36 and GID 36).

[[email protected] 11111111-1111-1111-1111-111111111111]# chown 36:36 *.iso

Change the permissions for the files to octal mode 0640.

[[email protected] 11111111-1111-1111-1111-111111111111]# chmod 0640 *.iso

When the copy is completed, the file should automatically appear in the RHVM interface.