# OVirt

oVirt is a free, open-source virtualization management platform. It was founded by Red Hat as a community project on which Red Hat Virtualization is based. It allows centralized management of virtual machines, compute, storage and networking resources, from an easy-to-use web-based front-end with platform independent access. KVM on x86-64, PowerPC64 and s390x architecture are the only hypervisors supported, but there is an ongoing effort to support ARM architecture in a future releases.

## Architecture

oVirt consists of two basic components, oVirt engine and oVirt node.
The oVirt engine backend is written in Java, while the frontend is developed with GWT web toolkit. The oVirt engine runs on top of the WildFly (former JBoss) application server. The frontend can be accessed through a webadmin portal for administration, or a user portal with privileges, and features that can be fine tuned. User administration can be managed locally or by integrating oVirt with LDAP or AD services. The oVirt engine stores data in a PostgreSQL database. Data warehousing and reporting capabilities depend on additional history and reports databases that can be optionally instantiated during the setup procedure. A REST API is available for customizing or adding engine features.
An oVirt node is a server running RHEL, CentOS, Scientific Linux, or experimentally Debian, with KVM hypervisor enabled and a VDSM (Virtual Desktop and Server Manager) daemon written in Python. Management of resources initiated from a webadmin portal are sent through the engine backend that issues appropriate calls to the VDSM daemon. VDSM controls all resources available to the node (compute, storage, networking) and virtual machines running on it and is also responsible for providing feedback to the engine about all initiated operations. Multiple nodes can be clustered from the oVirt engine webadmin portal to enhance RAS.
The oVirt engine can be installed on a standalone server, or can be hosted on a cluster of nodes themselves inside a virtual machine (self-hosted engine). The self-hosted engine can be manually installed or automatically deployed via a virtual appliance.
oVirt is built upon several other projects including libvirt, Gluster, PatternFly, and Ansible.

## Features

Virtual datacenters, managed by oVirt, are categorized into storage, networking and clusters that consist of one or more oVirt nodes. Data integrity is ensured by fencing, with agents that can use various resources such as baseboard management controllers or uninterruptible power supplies.
Storage is organized within entities called storage domains and can be local or shared. Storage domains can be created using the following storage solutions or protocols:
* NFS
* iSCSI
* Fibre Channel
* POSIX compliant filesystem
* GlusterFS
Network management allows defining multiple VLANs that can be bridged to the network interfaces available on the nodes. Configuration of bonded interfaces, IP addresses, subnet masks and gateways on managed nodes are all supported within webadmin portal interface, as is SR-IOV on hardware configurations that support this feature.
Management features for compute resources include CPU pinning, defining NUMA topology, enabling kernel same-page merging, memory over-provisioning, HA VM reservation etc.
Virtual machine management enables selecting high availability priority, live migration, live snapshots, cloning virtual machines from snapshots, creating virtual machine templates, using cloud-init for automated configuration during provisioning and deployment of virtual machines. Supported guest operating systems include Linux, Microsoft Windows and FreeBSD. Access to virtual machines can be achieved from webadmin portal using SPICE, VNC and RDP protocols.
oVirt can be integrated with many open source projects, including OpenStack Glance and Neutron for disk and network provisioning, Foreman/Katello for VM/node provisioning or pulling relevant errata information into webadmin portal and can be further integrated with ManageIQ for a complete virtual infrastructure lifecycle management.
Disaster recovery features include the ability to import any storage domain into different oVirt engine instances and replication can be managed from oVirt with GlusterFS geo-replication feature, or by utilizing synchronous/asynchronous block level replication provided by storage hardware vendors. oVirt engine backups can be automated and periodically transferred to a remote location.
oVirt supports hyper-converged infrastructure deployment scenarios. Self-hosted engine and Gluster-based storage domains allow centralized management of all resources that can be seamlessly expanded, simply by adding an appropriate number of nodes to the cluster, without having any single points of failure. oVirt provides deep integration with Gluster, including Gluster specific performance improvements.