Nova
Nova is the OpenStack compute service that manages the lifecycle of virtual machine instances, including creation, scheduling, and termination across a cluster of compute nodes.
What is Nova in cloud hosting?
Nova is the compute service in OpenStack. It manages the creation, scheduling, and deletion of virtual machine instances across a pool of physical servers called compute nodes. When you launch an instance in an OpenStack cloud, Nova handles every step from selecting which physical server will host it to communicating with the hypervisor that runs it.
Nova does not provide storage or networking on its own. It coordinates with other OpenStack services like Cinder for block storage and Neutron for networking. Nova's primary job is to orchestrate compute resources and ensure instances run where they should.
Related Terms
- Instance: A virtual machine running in the cloud, such as a Linux server you launch to host a web application.
- Flavor: A predefined resource template that specifies the vCPUs, RAM, and disk size for an instance, such as "m1.medium" with 2 vCPUs and 4GB RAM.
- Image: A bootable disk template containing an operating system, such as Ubuntu 22.04 or CentOS Stream 9.
- Security Group: A set of firewall rules that control network traffic to instances, such as allowing SSH on port 22.
- Hypervisor: Software that creates and runs virtual machines on physical hardware, such as KVM or VMware.
Why Nova Exists
Without a compute orchestration layer, managing virtual machines at scale would require manual intervention on each physical server. Administrators would need to track which servers have available capacity, manually configure hypervisors, and handle instance failures individually.
Nova solves these problems by providing a unified API to manage compute resources. You request an instance with specific resources, and Nova finds a suitable host, provisions the instance, and tracks its state. If a compute node fails, Nova can detect this and mark affected instances accordingly. This automation is essential for cloud environments where thousands of instances may run across hundreds of physical servers.
What Does Nova Actually Do?
- Receives requests to create, start, stop, resize, or delete instances through its API
- Runs a scheduling algorithm to select the best compute node for each new instance based on available resources and configured filters
- Communicates with hypervisors (KVM, VMware, Xen, Hyper-V) through driver interfaces to execute instance operations
- Tracks instance state including running, stopped, paused, suspended, and error conditions
- Coordinates with Neutron to attach network interfaces and with Cinder to attach storage volumes
- Enforces quotas that limit how many instances, vCPUs, and RAM each project can consume
- Provides console access to instances through VNC or serial connections
- Supports live migration to move running instances between compute nodes without downtime
When Would I Use Nova?
Nova is used whenever you need virtual machine compute capacity in an OpenStack cloud. Specific scenarios include:
- Launching application servers to run your web applications, databases, or microservices
- Creating development and testing environments that can be spun up and torn down quickly
- Running batch processing jobs that need temporary compute capacity
- Hosting containers on virtual machines when you need isolation between workloads
- Building auto-scaling infrastructure where instances are created and destroyed based on demand
If you are using an OpenStack-based cloud like InMotion Cloud, Nova is already handling your instance operations behind the scenes when you create instances through Horizon or the API.
When Would I NOT Use Nova?
Nova may not be the right choice in these situations:
- Bare-metal workloads: If you need direct access to physical hardware without virtualization overhead, OpenStack Ironic handles bare-metal provisioning instead of Nova
- Container-native workloads: If your application is packaged as containers and you want container orchestration, Kubernetes or OpenStack Magnum may be more appropriate than managing individual VMs
- Serverless functions: For event-driven functions that run briefly and scale to zero, specialized function-as-a-service platforms are more cost-effective than persistent instances
- Single-server deployments: If you only need one server, the complexity of Nova provides no benefit over managing a single hypervisor directly
Real-World Example
Company A operates an e-commerce platform with variable traffic. During normal hours, they run 10 application server instances. During sales events, traffic increases tenfold.
Company A uses Nova with auto-scaling rules. When CPU utilization across their instances exceeds 70%, their orchestration system calls the Nova API to launch additional instances from a pre-configured image. Nova's scheduler distributes these new instances across available compute nodes to balance the load. Each new instance automatically receives network configuration from Neutron and joins the load balancer pool.
After the sale ends and traffic drops, instances are terminated through Nova. The scheduler updates its resource tracking, freeing capacity on the compute nodes for other tenants. Company A only pays for the compute time they actually used.
Frequently Asked Questions
Can Nova work with different hypervisors? Yes. Nova uses a driver architecture that supports multiple hypervisors including KVM, VMware vSphere, Xen, and Microsoft Hyper-V. The most common deployment uses KVM with libvirt. Your cloud provider determines which hypervisor is available.
What happens if a compute node running my instance fails? Nova detects when a compute node becomes unresponsive. Your instance will stop running and its state will change to error or shutoff depending on how the failure occurred. Nova does not automatically restart instances on other nodes. You would need to manually rebuild the instance or use external orchestration tools that monitor instance health and trigger recovery.
How does Nova decide which compute node hosts my instance? Nova uses a scheduler with configurable filters and weights. Filters eliminate hosts that cannot run the instance (not enough RAM, wrong architecture, excluded by affinity rules). Weights rank the remaining hosts by criteria like available resources. The highest-weighted host receives the instance.
Can I move a running instance to a different compute node? Yes, if your cloud supports live migration and the instance meets the requirements. Live migration copies the instance memory to another compute node while it continues running, then switches over with minimal interruption. This is useful for maintenance when administrators need to empty a compute node.
What is the difference between Nova and the hypervisor? The hypervisor (like KVM) is the software that actually runs virtual machines on physical hardware. Nova is the orchestration layer that decides which hypervisor should run which instance, sends commands to hypervisors, and tracks instance state across the entire cloud. Nova talks to hypervisors; hypervisors run instances.
Summary
- Nova is the OpenStack compute service responsible for managing virtual machine instances across a cluster of physical servers
- Nova handles instance lifecycle operations including creation, scheduling, starting, stopping, and deletion
- The Nova scheduler selects compute nodes for new instances based on available resources and configured policies
- Nova coordinates with Neutron for networking and Cinder for storage but focuses specifically on compute orchestration
- Nova supports multiple hypervisors through its driver architecture, with KVM being the most common choice
Related Terms
Glance
Glance is the OpenStack image service that stores, catalogs, and retrieves disk images used to launch instances in a cloud environment.
