# QVD (software)

QVD is an open-source virtual desktop infrastructure (VDI) product built on Linux. Its main purpose is to provide remote desktops to users.

## Features

QVD can support any Linux Desktop that runs on top of X11; this includes GNOME, KDE, Xfce and LXDE desktops. QVD clients are available for Windows, Linux, macOS and Android.
The main focus is to provide desktop access for large number of users with a very small footprint for each user session by:
* Using the same OS image for all the users (using overlays)
* Sharing memory between user processes
* Using low bandwidth
The server software can run both on a single-node configuration or in a multi-node configuration. In case of the latter, the user sessions (or virtual machines) are automatically distributed along the running nodes. The software is able to recover automatically in the case of one node failing, redistributing the user sessions over the remaining nodes. Several back-ends are available for authentication and new ones can be independently developed as plugins.
NX libraries are used to reduce the network traffic resulting in very low bandwidth requirements for most common corporate desktop usage, e.g. browsing the web, handling email, or editing documents.
QVD can run virtual machines using KVM or LXC. KVM allows for a complete isolation between the host and the guest virtual machines. LXC on the other hand, runs the virtual machined inside isolated containers inside the host. That greatly reduces the CPU and memory requirements per user session as the kernel is able to share resources (i.e. disk buffers) between the containers more effectively.
Administration of the platform can be performed through a web app or using the provided command line utilities. Provisioning of new users can be automated.

### Structure

QVD is composed of actors and components.
The QVD's actors are:
* Users, identified by logins and passwords
* Virtual machines: Running Linux desktops and owned by the users, these VMs runs on a virtual machine on Linux nodes.
* Nodes: Physical servers where the VMs run
* Images: Templates with shared properties as the applications installed, memory for the VM or space for the user's home
The QVD components are:
* QVD-Client: The QVD client software that connects with and displays the user's desktop from the server. QVD currently has clients for Windows, Linux, OS X (Beta), and Android.
* QVD-L7R: Level 7 router. In charge to balance the connections from the QVD-Client to the Virtual Machines and the responsibility for login user before they went into their Virtual Machines.
* QVD-HKD: House keeping daemon. Responsible to interact with the Virtual Machines, starting, stopping, and update the VM's status in the QVD Database. Currently it supports KVM and LXC as their virtualization models.
* QVD-Database: Holds the status for all users, Virtual Machines, images, hosts. All the platform information is stored in the database.
* QVD-Administrative tools: Composed by CLI and the WAT (Web administration tool) that provides an easy and simple way to administrate the whole platform, from a couple of nodes to hundreds.
* QVD-VMA: The agent that runs in the Virtual Machine, allowing users to connect, enable printer sharing, audio, hooks, etc.

## History
### 1.x, 2.x

QVD 1.x and 2.x were versions of the product based on FreeNX tailored for a specific client and never publicly released.

### 3.0

QVD 3.0 was released at May 2011. Its main Features were:
* Able to provide Linux remote desktops to users.
* Supported on Ubuntu Linux.
* KVM was used as the hypervisor.
* The connection protocol was HTTP-based and run on top of SSL.
* The NX libraries were used to reduce bandwidth usage.
* Bidirectional audio.
* Multi-node support.

### 3.1

QVD 3.1 was released in October 2012.
The main addition in this version was the support for Linux containers. That made possible to reduce the CPU and memory requirements per user session.
Other features in this version were:
* A versioning system for the guess operating system images.
* Support for SuSE Linux Enterprise Edition (SLES) platform.

### 3.2

QVD 3.2 was released by December 2012.
The main additions on this release were as follows:
* Support for Btrfs as the storage back-end.
* Support for a private communication channel between the client and the VM that could be used by extensions. I.e. to support serial port redirections or VPN.
* Better cluster support, reducing the recovery times from host and network failures.

### 3.4

QVD 3.4 was released by January 2014.
The main additions on this release were as follows:
* Shared Folders to show these folders on the user's remote desktop
* Expiration of Images to release new versions for the user's desktop
* Mac OS Client
* QVD Spy to shadow sessions in order to provide support to the user.

### 3.5

QVD 3.5 was released by January 2015.
The main additions on this release were as follows:
* L7R has been removed as standalone component, now is launched by the HKD when required.
* QVD Client internationalization
* Overlayfs is now the default union mount filesystem
* Parse dates using the local time zone
* Improved debugging capabilities

### 4.0

QVD 4.0 was released by January 2016.
The main additions on this release were as follows:
* Complete renovated interface
* Multi-Administrator Support
* Multi-Language (English and Spanish)
* Customized Views
* Complete documentation, including step-by-step guides
* Improvement in image downloads
* Disk image tag management
* Property management and visualization
* Disk image blocking/unblocking
* Tactical view with statistics and graphs updated in real time with relevant system information:
* Multi-tenant management
* Embedded views of related elements
* Style customization

### 4.1

QVD 4.1 was released by September 2018.
The main additions on this release were as follows:
* User portal with HTML client
* Generic printing driver
* Performance improvements
* TOTP Authentication Plugin (time-based one-time password)
* Improvements on WAT (Web administration tool)
* Passing of environment variables from client to authentication plugins

### 4.2

QVD 4.2 was released by October 2020.
The main additions on this release were as follows:
* USBIP for the linux client.