Guests, Hosts and Pools
This section of the tree view provides access to the guests, hosts and pools of the platform. If you unfold it, two elements are revealed: Hosts and Pools.
Host
Here you will see a list of the Hosts controlled by the flexVDI Manager you are connected to.
Each of the Hosts that are running should have green round icon, meaning that its status is "Running". If the Host is not active, its icon will show a red circle. The tree also displays on which Host the flexVDI Manager is running.
When one of the Hosts is selected, information about it is shown in the details view. This information is divided into four tabs.
Host info tab
This tab displays basic information about the Host, and a summary of its available resources:
This information includes:
- Current and desired state. If they differ, the Manager will try to bring the Host to the desired state.
- Name, IP address and description.
- VDI address, to provide an alternative connection address to clients. NOTE: This option is deprecated and will disappear in future releases, use flexVDI Gateway instead.
- CPU type and Hypervisor version.
- Message provided by the Host's agent in case of error.
The graphs show a summary of the available resources in this Host. Hosts provide CPU and RAM resources to Guests. The total resources offered by a Host consist of its physical resources adjusted by an overcommit factor. By overcommiting, a Host can offer more resources than actually available. It is safe to overcommit CPU resources, since they are time-shared by the Guests. On the other hand, overcommiting RAM resources is not recommended at all; do it under your own responsibility.
Resources must be first reserved by a Pool, then used by a Guest of a Pool. The graphs show how much resources are in use by Guests, how much are free, and how much are not reserved by any Pool. Next to the graphs there is also the same information in numeric form, and a relation of physical and overcommited resources.
Pools tab
This tab displays information about the Host resources assigned to each of the Pools.
A Pool is a set of CPU and RAM resources available to the Guests associated to it. A Pool's resources may come from different Hosts, and each Host may contribute resources to many Pools. The list on the right contains the Pools to which this Host is contributing resources, plus the set of resources not contributed to any Pool. The charts on the right reflect that information in a graphical way.
Guests tab
This tab shows the Guests running on the selected Host and the amount of resources allocated by them.
The charts on the right show the same information in a graphical way. If you click on a Guest's name, you will be taken to the Guest's details view.
Network tab
Finally, this tab shows the network interfaces available to the selected Host. They can be configured with the flexVDI Config tool.
- Physical interfaces.
- Bridge interfaces.
- Bonding interfaces.
- VLAN interfaces.
This is an example of a more complex network configuration:
Host actions
On the top right corner of the details view of a Host, there is a button that lets an administrator disable this Host to perform maintenance operations. When Host is disabled, it will not start new Guests, and all the resources it had reserved are freed. A Host must be disabled in order to reduce the CPU or RAM overcommits in large amounts.
Pools
This tree branch shows the Pools in the flexVDI platform. The icon of each Pool shows its state: running, disabled or under an error condition.
When one of these Pools is selected, detailed information about it is shown in the details view. It consists of three tabs:
Pool settings tab
Similarly to the Host info tab, it shows basic information about the Pool and a summary of its resources.
It includes the name, description, state and the list of Hosts from which it takes its resources. Besides, the basic information of a Pool also includes these two properties:
Priority: Indicates the order in which Pools acquire their resources. Those with higher priority (lower value) come first. This order matters when there are not enough resources to fulfill the needs of every Pool, e.g. when some of the Hosts are down, due to a failure or for maintenance. In that situation, Pools with lower priority may not receive enough resources.
Reservation block: It is the resource reservation unit used by the Pool. Reservation is done in blocks of a certain amount of vCPUs and MB of RAM. For instance, the Pool in the image reserves 3 blocks of 1 vCPU and 1024 MB of RAM from the Hosts. The purpose of these values is to ensure that Pools reserve Host resources for the Guests in an adequate proportion. This will prevent, for instance, that a Pool reserves a large number of CPUs but a small amount of RAM in a Host. The RAM would limit the amount Guests that could run in the Pool, rendering the rest of the reserved CPUs unusable. These resource reservations are made:
- Initially when the Pool is created or the Manager starts.
- Automatically when the amount of available resources changes. For instance, on the event of failure or shutdown of one of the Hosts. High priority Pools may receive resources that are removed from Pools with a lower priority.
- By explicit request of an administrator clicking on "Rebalance resources" from the context menu of a Pool.
The graphs on the right show the used and available resources for creating and executing Guests handled by the Pool:
- Required: the amount of resources (CPU / RAM) assigned to the Pool.
- Available: the current amount of resources available to the Pool. It may be less than the Required value, for instance if one of the Host is off for maintenance.
- Used / Free shows the amount of resources that are being used by the Guests in the Pool, and the amount that is still free. The sum of both amounts is equal to "Available".
The resources that are assigned to a Pool can be used by the Guests in that Pool and are not available to Guests in other Pools.
Reserved resources by Host tab
This tab displays detailed information about the amount and state of the resources in each Host.
Resource usage by Guest tab
This tab displays detailed information about the resources used by each Guest running on the Pool.
In this list you can also click on a Guest's name and you will be taken to that Guest's details view.
Pool actions
The Pool actions toolbar contains more buttons than a Host's. First, there is the disable button. As with a Host, it disables a Pool so that all its resources are freed and no Guest can be run inside it. A Pool must be disabled in order to change the reservation block size. You cannot disable a Pool while it contains running Guests.
Then, the Tools dropdown contains the following actions:
- Rebalance resources. A rebalance operation is started. It will reassign the Pool's resources from the free resources in the Hosts that are associated with the Pool.
- Import guest. Create a new Guest by importing a previously exported one. An exported Guest is an archive with the Guest's configuration and its disk images, with the fvm extension, and they are imported from/exported to a Media Storage. This action will open a dialog box where you can select the source Media Storage and archive name, the name for the new Guest and the Image Storage and Volume where you want to store it:
- Delete. Deletes the Pool once there is no Guest inside it.
Finally, there is the "New Guest" button, to create a blank new Guest.
Guests
If you expand any of the Pools that appear in the tree on the left you will see the Guests it contains. If the Guest is running, a green circle icon is displayed. If the Guest is stopped it will display a red circle. If it is paused, the icon will be two blue vertical bars. Clicking on each Guest, information about it is shown in the details view, that consists of three tabs:
General tab
General information about Guest resources, status, and virtual devices attached to it.
The General section shows properties of the Guest like the name, state and type of Guest. Only some of these properties can be changed once the Guest is created: the description, the preset OS, the preferred host and the boot device. The preset OS helps identify the best virtual hardware configuration for a certain Guest OS. Nevertheless, you can also change the suggested configuration once the preset OS is selected. The preferred host lets the Manager know where the Guest should be started. It will make its best effort to start the Guest in that specific Host, but take into account that the Guest will start in any other Host if the preferred one is not eligible. Finally, the "Boot from" field selects the device from which the Guest OS will boot: the first cdrom, the first hard drive or the first network device.
The Resources section shows the resource needs of this Guest. Here, you can modify the amount and configuration of vCPUs and RAM that the Guest will require to start.
The Hardware configuration section shows the type of virtual devices that will be attached to the Guest. You can select the type of emulated CPU (KVM or AMD), the type of keyboard and mouse (PS2 or USB), the type of sound card (ich6 or ac97), the type of graphics card (Virtio or QXL) and whether the clock is set with the local or UTC time. Some hardware configurations are better suited for certain Guest OS. In particular:
- An emulated AMD Opteron CPU is required for Window 10 and Windows Server 2016 Guests when the Host's CPU is Intel.
- Windows 7 and later have a bug in the PS2 driver that lags keystrokes, so USB keyboard is preferred.
- Linux Guests support Virtio GPU devices, which have better performance and stability than QXL devices. Other Guests only support QXL at best. Windows support is currently under development.
- Some Linux desktop environments do not correctly detect a client's request to change the desktop resolution. In those environments, a "fix" is needed. However, using this fix breaks desktop resolution changes with other desktop environments (mainly GNOME with Wayland), so you may need to play with this option until your setup works correctly. As a rule of thumb, use this fix in any desktop environment other than GNOME with Wayland. Enabling or disabling it has no effect on Windows desktops.
Network tab
Information about the network devices of a Guest.
You can add or remove as many network devices as you want (there exists a limit of 32 PCI devices, though). For each network device, you can set the bridge it is connected to in the Host, the emulated hardware type (virtio, e1000 or rtl8139), the VLAN mode and the list of VLANs. The device name and the MAC address are computed automatically once you save your changes.
There are three VLAN modes:
- None: Only untagged traffic is passed to the Guest, and it is left untagged. Tagged traffic is filtered out.
- Access: The VLAN list must contain a single value. All tagged traffic from that VLAN that enters the Guest is untagged, and all untagged traffic that exits the Guest is tagged with that VLAN. Any other traffic is filtered out.
- Trunk: The VLAN list may contain one or more values, separated by commas. All tagged traffic from those VLANs will be seen by the Guest as-is, and any other traffic is filtered out.
Storage tab
Information about the virtual storage devices of a Guest.
There are three types of storage devices. All of them are described later in this guide with more detail:
- Disk Images: A disk image is a file that represents a block device of the Guest. You can add a disk image with the "Add disk image" button. Then, select the Image Storage and Volume where the Image is stored. Clicking on the plus (+) button of the "Image file" field, a dialog will be shown where you can select whether to use an existing Image or create a new one. Finally, select a device bus type for the new virtual block device. Currently, only "virtio" and "ide" buses are available. Virtio devices are faster as they do not emulate an actual hardware, but they require special guest drivers that may not be available in some older guest OSes. On the other hande, IDE devices are much slower but also provide much better compatibility. You can also select the port number of the bus where the new device will be plugged in, but most times you can just let the Dashboard select the port number for you.
Physical Devices: A physical device is a Host's block device that is passed to a Guest exclusively. For each one, you must select the Direct Storage and Disk you want to assign to this Guest. Also, you must select the bus type and port number, like with Disk Images. In this case, the special "passthrough" bus will use PCI passthrough to assign the device to the Guest. This bus type is only available for PCI block devices, like NVMes, and it falls back to virtio on any other type of device.
You must explicitly enable IOMMU support in your Hosts in order to get PCI passthrough to work. To enable it, add the following options to your kernel command line and reboot the Hosts:
intel_iommu=on iommu=pt # on Intel processors
amd_iommu=on iommu=pt # on AMD processors
- Media Images: A media image is an ISO file that is presented to a Guest through a virtual optical drive. You can add and remove optical drives through the Storage tab. For each drive, you can either a) select the Media Storage and ISO file, or b) select the Internal Media Storage and a special image file (currently, only the Guest Tools file), or c) leave the optical drive empty. The only valid bus type for optical drives is IDE.
Having one or more empty optical drives is useful because you can insert or eject an ISO file from an optical drive at any time, even while the Guest is running. Go to the Storage tab of a running Guest, and you will see that all the form controls are disabled, but the ISO selection controls of the optical drives. Besides, the "Save" button now is the "Change media" button. Make the desired changes to the optical drives and push the "Change media" button when finished.
Guest actions
The Guest actions toolbar starts with the "Start/Stop" dropdown, with the lifecycle actions that can be performed on the Guest, given its current state. These actions can be:
- Start. The Guest will be run, if possible, and kept in running state until the administrator changes it. The Guest will be restarted if it is stopped for a reason other than an administrator action.
- Start once. The Guest will be run, but it will not be restarted if it is stopped by any reason.
- Shutdown. A shutdown ACPI event will be sent to the Guest, and its state will change to "Start once". If the Guest's OS honors it, it will start an orderly shutdown process.
- Force shutdown. The Guest will be immediately stopped.
- Pause. The Guest will be paused, but not stopped. It still keeps hold of the resources it needs, and its state is preserved in memory.
- Continue. Resume the execution of a paused Guest.
- Suspend. The Guest will be paused, and stopped. The difference with a paused Guest is that its state is preserved in disk and all the resources it was using are freed.
- Restore. Resume the execution of a suspended Guest.
Then, there is the "Tools" dropdown, with other miscelaneous actions:
- Migrate. Move a running Guest to a different Host in the same Pool, if there are enough resources. This action will open a dialog where you can select the destination Host.
- Change Pool. Move a stopped Guest to a different Pool.
- Convert to template/guest. Convert a Guest from standalone to template and back. A standalone Guest cannot be converted to a template if it has any Direct Disk attached. A Guest template cannot be converted back to a standalone Guest if it has any clone.
- Copy. Make a deep copy of a Guest. The resulting Guest will have the same properties as the original, and a copy of the disk images. Be careful if you make a copy of a Guest with Direct Disks attached, as they cannot be copied.
- Clone. Make a clone of a Guest template. The resulting Guest will have the same properties as the template, but its disk images will be a differential of the template's images. You can see the list of clones of a Guest template in its details view.
- Export. Save a Guest's configuration and its disk images to a compact format, that can be imported later in another flexVDI platform.
- Delete. Delete a Guest's configuration. A confirmation dialog will let you decide if you want to delete the associated disk images or keep them. You cannot delete a Guest template with clones.
Finally, the last action opens a console to a running Guest. Consoles are opened in a different browser tab, with the flexVDI HTML5 client. You may need to allow the flexVDI Dashboard to open new browser tabs the first time you open a console.