Learn OpenStack · core/compute

Compute — Nova + Placement

Nova is the OpenStack Compute service. It provisions, schedules, and manages the lifecycle of virtual machine instances (and bare-metal nodes via Ironic). Placement is the resource-tracking service that Nova (and other services) use to claim compute, memory, disk, and custom resources before scheduling decisions are made.

Nova has been a core OpenStack service since the Austin release (2010). Placement was extracted from Nova's codebase and became an independent service in the Stein release (2019).

When to Read This Skill

  • Deploying Nova and Placement for the first time
  • Launching, managing, or troubleshooting instances
  • Tuning the scheduler (filters, weighers, aggregates)
  • Understanding cells v2 architecture and API/cell database layout
  • Diagnosing scheduling failures or "No valid host" errors
  • Performing or troubleshooting live migrations
  • Managing resource inventories, traits, and allocation candidates via Placement
  • Resizing, evacuating, shelving, or rebuilding instances
  • Configuring quota limits for projects and users
  • Adding or replacing compute hosts

Sub-Files

File What It Covers
architecture.md Nova services, cells v2 layout, scheduling pipeline, hypervisor support, inter-service integration (Neutron, Cinder, Glance, Placement)
operations.md CLI and API: server lifecycle, flavors, keypairs, migrations, quotas, console, backup, full config reference
internals.md Scheduler filters and weighers, cells v2 DB layout, conductor as DB proxy, RPC versioning, instance state machine, compute manager hooks
placement.md Placement service: resource providers, resource classes, inventories, allocations, traits, allocation candidates, nested providers, reshaper
live-migration.md Live migration types, prerequisites, pre-copy vs post-copy, monitoring, force-complete, troubleshooting, config reference

Quick Reference

# Launch an instance
openstack server create \
  --flavor m1.small \
  --image ubuntu-24.04 \
  --network private-net \
  --key-name mykey \
  my-instance

# List all instances (all projects, admin)
openstack server list --all-projects

# Show instance details
openstack server show my-instance

# Stop and start an instance
openstack server stop my-instance
openstack server start my-instance

# Reboot (soft = ACPI signal; hard = power cycle)
openstack server reboot --soft my-instance
openstack server reboot --hard my-instance

# Delete an instance
openstack server delete my-instance

# List hypervisors and their resource usage
openstack hypervisor list --long

# Check placement resource providers
openstack resource provider list

# Show allocations for an instance
openstack resource provider allocation show <instance-uuid>

Dependencies

Dependency Purpose Notes
Keystone Authentication and service catalog Every Nova API call is validated against Keystone
Glance Image service Nova downloads images to compute nodes on first boot
Neutron Network ports and virtual NICs Nova calls Neutron to create ports before spawning
Placement Resource tracking and scheduling claims Queried by nova-scheduler before choosing a host
Cinder Block storage volumes Optional; required for volume-backed instances and volume attach
libvirt / KVM Default hypervisor Most production deployments use KVM via libvirt
RabbitMQ (or oslo.messaging backend) Async RPC between Nova services Required; all inter-service calls go through the message bus
MariaDB 10.6+ or PostgreSQL 14+ Nova API DB + per-cell DBs API DB and at least one cell DB required
Memcached Cache for scheduler and API Strongly recommended; reduces DB load

Releases Covered

This skill covers OpenStack 2025.1 (Epoxy), 2025.2, and 2026.1.

Nova release notes: https://docs.openstack.org/releasenotes/nova/ Placement release notes: https://docs.openstack.org/releasenotes/placement/