2015-09-20 22:31:33 +00:00
|
|
|
---
|
|
|
|
layout: "docs"
|
|
|
|
page_title: "Drivers: Qemu"
|
|
|
|
sidebar_current: "docs-drivers-qemu"
|
|
|
|
description: |-
|
|
|
|
The Qemu task driver is used to run virtual machines using Qemu/KVM.
|
|
|
|
---
|
|
|
|
|
|
|
|
# Qemu Driver
|
|
|
|
|
|
|
|
Name: `qemu`
|
|
|
|
|
2015-09-23 18:58:42 +00:00
|
|
|
The `Qemu` driver provides a generic virtual machine runner. Qemu can utilize
|
|
|
|
the KVM kernel module to utilize hardware virtualization features and provide
|
|
|
|
great performance. Currently the `Qemu` driver can map a set of ports from the
|
|
|
|
host machine to the guest virtual machine, and provides configuration for
|
2015-09-25 02:33:06 +00:00
|
|
|
resource allocation.
|
2015-09-23 18:58:42 +00:00
|
|
|
|
|
|
|
The `Qemu` driver can execute any regular `qemu` image (e.g. `qcow`, `img`,
|
2015-09-25 02:33:06 +00:00
|
|
|
`iso`), and is currently invoked with `qemu-system-x86_64`.
|
2015-09-23 18:58:42 +00:00
|
|
|
|
|
|
|
## Task Configuration
|
|
|
|
|
|
|
|
The `Qemu` driver supports the following configuration in the job spec:
|
|
|
|
|
|
|
|
* `image_source` - **(Required)** The hosted location of the source Qemu image. Must be accessible
|
2015-09-25 02:33:06 +00:00
|
|
|
from the Nomad client, via HTTP.
|
2015-09-23 18:58:42 +00:00
|
|
|
* `checksum` - **(Required)** The MD5 checksum of the `qemu` image. If the
|
|
|
|
checksums do not match, the `Qemu` diver will fail to start the image
|
|
|
|
* `accelerator` - (Optional) The type of accelerator to use in the invocation.
|
2015-09-23 19:44:49 +00:00
|
|
|
If the host machine has `Qemu` installed with KVM support, users can specify `kvm` for the `accelerator`. Default is `tcg`
|
|
|
|
* `host_port` - **(Required)** Port on the host machine to forward to the guest
|
|
|
|
VM
|
2015-09-24 19:36:03 +00:00
|
|
|
* `guest_ports` - **(Optional)** Ports on the guest machine that are listening for
|
|
|
|
traffic from the host. These ports match up with any `ReservedPorts` requested
|
|
|
|
in the `Task` specification
|
2015-09-23 18:58:42 +00:00
|
|
|
|
|
|
|
## Client Requirements
|
|
|
|
|
2015-09-23 19:44:49 +00:00
|
|
|
The `Qemu` driver requires Qemu to be installed and in your systems `$PATH`.
|
2015-09-25 02:33:06 +00:00
|
|
|
The `image_source` must be accessible by the node running Nomad. This can be an
|
|
|
|
internal source, private to your cluster, but it must be reachable by the client
|
|
|
|
over HTTP.
|
2015-09-23 18:58:42 +00:00
|
|
|
|
|
|
|
## Client Attributes
|
|
|
|
|
2015-09-23 19:44:49 +00:00
|
|
|
The `Qemu` driver will set the following client attributes:
|
2015-09-23 18:58:42 +00:00
|
|
|
|
2015-09-23 19:44:49 +00:00
|
|
|
* `driver.qemu` - Set to `1` if Qemu is found on the host node. Nomad determines
|
|
|
|
this by executing `qemu-system-x86_64 -version` on the host and parsing the output
|
|
|
|
* `driver.qemu.version` - Version of `qemu-system-x86_64, ex: `2.4.0`
|
2015-09-23 18:58:42 +00:00
|
|
|
|
|
|
|
## Resource Isolation
|
|
|
|
|
2015-09-25 02:33:06 +00:00
|
|
|
Nomad uses Qemu to provide full software virtualization for virtual machine
|
|
|
|
workloads. Nomad can use Qemu KVM's hardware-assisted virtualization to deliver
|
|
|
|
better performance.
|
2015-09-20 22:31:33 +00:00
|
|
|
|
2015-09-25 02:33:06 +00:00
|
|
|
Virtualization provides the highest level of isolation for workloads that
|
|
|
|
require additional security, and resources use is constrained by the Qemu
|
|
|
|
hypervisor rather than the host kernel. VM network traffic still flows through
|
|
|
|
the host's interface(s).
|