Oracle Linux: KVM User's Guide
Oracle Linux: KVM User's Guide
Oracle Linux: KVM User's Guide
F29966-08
February 2021
Oracle Legal Notices
This software and related documentation are provided under a license agreement containing restrictions on use and
disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement
or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute,
exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or
decompilation of this software, unless required by law for interoperability, is prohibited.
The information contained herein is subject to change without notice and is not warranted to be error-free. If you find
any errors, please report them to us in writing.
If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of
the U.S. Government, then the following notice is applicable:
U.S. GOVERNMENT END USERS: Oracle programs (including any operating system, integrated software, any
programs embedded, installed or activated on delivered hardware, and modifications of such programs) and
Oracle computer documentation or other Oracle data delivered to or accessed by U.S. Government end users are
"commercial computer software" or "commercial computer software documentation" pursuant to the applicable
Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, reproduction,
duplication, release, display, disclosure, modification, preparation of derivative works, and/or adaptation of i) Oracle
programs (including any operating system, integrated software, any programs embedded, installed or activated
on delivered hardware, and modifications of such programs), ii) Oracle computer documentation and/or iii) other
Oracle data, is subject to the rights and limitations specified in the license contained in the applicable contract. The
terms governing the U.S. Government's use of Oracle cloud services are defined by the applicable contract for such
services. No other rights are granted to the U.S. Government.
This software or hardware is developed for general use in a variety of information management applications. It is not
developed or intended for use in any inherently dangerous applications, including applications that may create a risk
of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to
take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation
and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous
applications.
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their
respective owners.
Intel and Intel Inside are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used
under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Epyc, and the AMD
logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The
Open Group.
This software or hardware and documentation may provide access to or information about content, products, and
services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all
warranties of any kind with respect to third-party content, products, and services unless otherwise set forth in an
applicable agreement between you and Oracle. Oracle Corporation and its affiliates will not be responsible for any
loss, costs, or damages incurred due to your access to or use of third-party content, products, or services, except as
set forth in an applicable agreement between you and Oracle.
Table of Contents
Preface .............................................................................................................................................. v
1 About Oracle Linux KVM ................................................................................................................. 1
1.1 Description of the Oracle Linux KVM Feature ........................................................................ 1
1.2 Guest Operating System Requirements ................................................................................. 1
1.3 System Requirements ........................................................................................................... 3
1.4 About Virtualization Packages ............................................................................................... 3
2 Installing KVM User Space Packages .............................................................................................. 5
2.1 Configuring Yum Repositories and ULN Channels ................................................................. 5
2.1.1 Oracle Linux 7 ........................................................................................................... 5
2.1.2 Oracle Linux 8 Options .............................................................................................. 7
2.2 Installing Virtualization Packages .......................................................................................... 8
2.2.1 Installing Virtualization Packages During an Oracle Linux System Installation ................ 8
2.2.2 Installing Virtualization Packages on an Existing System .............................................. 9
2.2.3 Upgrading Virtualization Packages ............................................................................ 10
2.3 Validating the Host System ................................................................................................. 10
3 KVM Usage .................................................................................................................................. 11
3.1 Checking the libvirt Daemon Status ..................................................................................... 11
3.2 Base Operations ................................................................................................................. 11
3.2.1 Creating a New Virtual Machine ............................................................................... 12
3.2.2 Starting and Stopping Virtual Machines ..................................................................... 12
3.2.3 Deleting a Virtual Machine ....................................................................................... 13
3.3 Working With Storage for KVM Guests ................................................................................ 14
3.3.1 Storage Pools .......................................................................................................... 14
3.3.2 Storage Volumes ..................................................................................................... 16
3.3.3 Managing Virtual Disks ............................................................................................ 17
3.4 Working With Memory and CPU Allocation .......................................................................... 19
3.4.1 Configuring Virtual CPU Count ................................................................................. 19
3.4.2 Configuring Memory Allocation ................................................................................. 20
3.5 Setting up Networking for KVM Guests ................................................................................ 21
3.5.1 Setting up and Managing Virtual Networks ................................................................ 22
3.5.2 Adding or Removing a vNIC ..................................................................................... 23
3.5.3 Bridged and Direct vNICs ......................................................................................... 24
3.5.4 Interface Bonding for Bridged Networks .................................................................... 26
3.6 Cloning Virtual Machines .................................................................................................... 26
3.6.1 Preparing a Virtual Machine for Cloning .................................................................... 27
3.6.2 Cloning a Virtual Machine by Using the virt-clone Command ...................................... 28
3.6.3 Cloning a Virtual Machine by Using Virtual Machine Manager .................................... 29
4 Known Issues for Oracle Linux KVM .............................................................................................. 31
4.1 Upgrading From QEMU 3.10 to Version 4.2.1 Can Prevent Existing KVM Guests From
Starting .................................................................................................................................... 31
5 Oracle VirtIO Drivers for Microsoft Windows ................................................................................... 33
5.1 What's New ........................................................................................................................ 33
5.2 Supported Releases, Operating Systems, and Configuration Limits ....................................... 33
5.2.1 Supported Environments .......................................................................................... 34
5.2.2 Supported Guest Operating Systems ........................................................................ 34
5.2.3 Microsoft Windows Compatibility Signing ................................................................... 36
5.3 Downloading the Oracle VirtIO Drivers for Microsoft Windows ............................................... 36
5.4 Installing the Oracle VirtIO Drivers for Microsoft Windows ..................................................... 37
5.4.1 Installing the Oracle VirtIO Drivers for Microsoft Windows on Existing Microsoft
Windows Guests .............................................................................................................. 37
iii
Oracle® Linux
5.4.2 Installing the Oracle VirtIO Drivers for Microsoft Windows During Microsoft Windows
Guest Installation .............................................................................................................. 39
5.4.3 Optional Configuration Changes ............................................................................... 40
5.5 Upgrading the Oracle VirtIO Drivers for Microsoft Windows ................................................... 41
5.6 Silently Installing or Upgrading the Oracle VirtIO Drivers for Microsoft Windows ...................... 42
5.7 Uninstalling the Oracle VirtIO Drivers for Microsoft Windows ................................................. 43
5.8 Known Limitations and Workarounds ................................................................................... 44
5.8.1 Security Alert for Unsigned Drivers ........................................................................... 45
5.8.2 Found New Hardware Wizard Displayed ................................................................... 47
5.8.3 Microsoft Windows Server 2012 Data Center Guests With Failover Clustering Cannot
Get IP Address ................................................................................................................ 47
iv
Preface
Oracle® Linux: KVM User's Guide provides information about how to install, configure, and use the Oracle
Linux KVM packages to run guest system on top of a bare metal Oracle Linux system. This documentation
provides information on using KVM on a standalone platform in an unmanaged environment. Typical
usage in this mode is for development and testing purposes, although production level deployments are
supported. Oracle recommends that customers use Oracle Linux Virtualization Manager for more complex
deployments of a managed KVM infrastructure.
Audience
This document is intended for administrators who need to configure and use KVM on Oracle Linux
systems. It is assumed that readers are familiar with and have a general understanding of Linux system
administration.
Related Documents
The documentation for this product is available at:
https://docs.oracle.com/en/operating-systems/linux.html.
https://docs.oracle.com/en/virtualization/oracle-linux-virtualization-manager/
Conventions
The following text conventions are used in this document:
Convention Meaning
boldface Boldface type indicates graphical user interface elements associated with an
action, or terms defined in text or the glossary.
italic Italic type indicates book titles, emphasis, or placeholder variables for which
you supply particular values.
monospace Monospace type indicates commands within a paragraph, URLs, code in
examples, text that appears on the screen, or text that you enter.
Documentation Accessibility
For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website
at
https://www.oracle.com/corporate/accessibility/.
v
Diversity and Inclusion
insensitive. While doing so, we are also mindful of the necessity to maintain compatibility with our
customers' existing technologies and the need to ensure continuity of service as Oracle's offerings and
industry standards evolve. Because of these technical constraints, our effort to remove insensitive terms is
an ongoing, long-term process.
vi
Chapter 1 About Oracle Linux KVM
Table of Contents
1.1 Description of the Oracle Linux KVM Feature ................................................................................ 1
1.2 Guest Operating System Requirements ......................................................................................... 1
1.3 System Requirements ................................................................................................................... 3
1.4 About Virtualization Packages ....................................................................................................... 3
This chapter provides a high-level overview of the Kernel-based Virtual Machine (KVM) feature on Oracle
Linux, the user space tools that are available for installing and managing a standalone instance of KVM,
and the differences between KVM usage in this mode and usage within a managed environment provided
by Oracle Linux Virtualization Manager.
By default, KVM is built into the Unbreakable Enterprise Kernel (UEK) release. KVM features are actively
developed and might vary depending on platform and kernel release. If you are using Unbreakable
Enterprise Kernel you should refer to the release notes for the kernel release that you are currently using
to obtain information about features and any known issues or limitations that may apply. See Unbreakable
Enterprise Kernel Documentation for more information.
For more advanced usage of KVM on Oracle Linux, consider using Oracle Linux Virtualization Manager
which is a server virtualization management platform. Through its Administration or VM portals, you can
configure, monitor, and manage an Oracle Linux KVM environment, including hosts, virtual machines,
storage, networks, and users. Oracle Linux Virtualization Manager also provides a REST API for managing
your Oracle Linux KVM infrastructure, allowing you to integrate Oracle Linux Virtualization Manager
with other management systems or to automate repetitive tasks with scripts. Find out more at https://
docs.oracle.com/en/virtualization/oracle-linux-virtualization-manager/.
1
Microsoft Windows Guest Operating Systems
Important
You can download Oracle Linux ISO images and disk images from Oracle Software Delivery Cloud: https://
edelivery.oracle.com/linux.
Note
Oracle recommends that you install the Oracle VirtIO Drivers for Microsoft Windows
in Windows virtual machines for improved performance for network and block (disk)
devices and to resolve common issues. The drivers are paravirtualized drivers for
Microsoft Windows guests running on Oracle Linux KVM hypervisors.
For instructions on how to obtain and install the drivers, see Chapter 5, Oracle VirtIO Drivers for Microsoft
Windows.
2
System Requirements
• CPU. The host system CPU must have virtualization features Intel (VT-x or AMD-V) enabled. If
these are not available, you should check that virtualization is enabled in the system firmware BIOS or
UEFI. There should be at least one processor core or thread available for each virtual machine that you
intend to run on the system, and at least one processor core or thread should be available for the host
operating system.
• Memory. A minimum of 2 GB RAM must be available to the host operating system. RAM required for
each virtual machine should be physically available for each virtual machine that you configure and run.
• Storage. The minimum disk space, usually 6 GB, required for the host operating system should be
met. Each virtual machine requires it's own storage for the guest operating system and for swap usage.
You should cater to around 6 GB, at minimum, per virtual machine that you intend to create, but you
should consider the purpose of the virtual machine and scale accordingly.
• https://www.linux-kvm.org/page/Main_Page
• https://libvirt.org/
• https://www.qemu.org/
In most cases, the following packages are the minimally required for a virtualization host:
• libvirt: This package provides an interface to KVM, as well as the libvirtd daemon for managing
guest virtual machines.
• qemu-kvm: This package installs the QEMU emulator that performs hardware virtualization so that
guests can access host CPU and other resources.
• virt-install: This package provides command line utilities for creating and provisioning guest virtual
machines.
• virt-viewer: This package provides a graphical utility that can be loaded into a desktop environment
to access the graphical console of a guest virtual machine.
As an alternative to installing virtualization packages individually, you can install virtualization package
groups.
The Virtualization Host package group contains the minimum set of packages that are required
for a virtualization host. If your Oracle Linux system includes a GUI environment, you can also choose to
install the Virtualization Client package group.
3
4
Chapter 2 Installing KVM User Space Packages
Table of Contents
2.1 Configuring Yum Repositories and ULN Channels ......................................................................... 5
2.1.1 Oracle Linux 7 ................................................................................................................... 5
2.1.2 Oracle Linux 8 Options ...................................................................................................... 7
2.2 Installing Virtualization Packages .................................................................................................. 8
2.2.1 Installing Virtualization Packages During an Oracle Linux System Installation ........................ 8
2.2.2 Installing Virtualization Packages on an Existing System ..................................................... 9
2.2.3 Upgrading Virtualization Packages .................................................................................... 10
2.3 Validating the Host System ......................................................................................................... 10
This chapter describes how to configure the appropriate ULN channels or yum repositories, and how to
install user space tools to manage a standalone instance of KVM. A final check is performed to validate
whether the system is capable of hosting guest virtual machines.
Note
5
Oracle Linux 7
6
Oracle Linux 8 Options
Caution
Depending on your use case and support requirements, you must enable the repository or ULN channel
that you require before installing the virtualization packages from that repository or ULN channel.
If you are using ULN, follow these steps to ensure that the system is registered with ULN and that the
appropriate channel is enabled:
2. On the Systems tab, from the list of registered systems, select the link name for the specified system.
4. On the System Summary page, from the list of available channels, select each of the required
channels, then click the right arrow to move each channel to the list of subscribed channels.
If you are using the Oracle Linux yum server, you can either edit the repository configuration files in /etc/
yum.repos.d/ directly; or alternatively, if you have the yum-utils package installed, you can use the
yum-config-manager command, for example:
# yum-config-manager --enable ol7_kvm_utils ol7_UEKR4
If you want to prevent yum from installing the package versions from a particular repository, you can set
an exclude option on these packages for that repository. For instance, to prevent yum from installing the
virtualization packages in the ol7_developer_EPEL repository, use the following command:
# yum-config-manager --setopt="ol7_developer_EPEL.exclude=libvirt* qemu*" --save
7
Installing Virtualization Packages
Since the Application Stream repository or channel is used for much system software on Oracle Linux 8, it
is likely to be enabled by default on any Oracle Linux 8 system.
If you are using ULN, you can check that the system is registered with ULN and that the appropriate
channel is enabled:
2. On the Systems tab, from the list of registered systems, select the link name for the specified system.
4. On the System Summary page, from the list of available channels, select each of the required
channels, then click the right arrow to move each channel to the list of subscribed channels.
1. Boot the Oracle Linux installation media and proceed to the Software Selection screen.
8
Installing Virtualization Packages on an Existing System
• Virtualization Client
• Virtualization Hypervisor
• Virtualization Tools
Specify the appropriate package groups for the installation type in the %packages section of the kickstart
file by using the @GroupID format:
2. Ensure that your system has the appropriate Yum repository or ULN channel enabled for the
virtualization package versions that you wish to install. See Section 2.1, “Configuring Yum Repositories
and ULN Channels” for more information.
3. Update the system so that it has the most recent packages available.
• If you are using Oracle Linux 7, run the yum update command.
• If you are using Oracle Linux 8, run the dnf update command.
• If you are using Oracle Linux 7 run the following commands to install the base virtualization packages
and additional utilities:
9
Upgrading Virtualization Packages
• If you are using Oracle Linux 8 run the following commands to install the base virtualization packages
and additional utilities:
# dnf module install virt
# dnf install virt-install virt-viewer
If you want to downgrade packages to a version in an alternate repository or channel, for example, to
downgrade from the virtualization packages in the ol7_kvm_utils repository to the version of the same
packages in the ol7_latest repository, you must first remove the existing packages before installing the
packages from the alternate repository:
# yum remove libvirt* qemu* virt-install
# yum --disablerepo="*" --enablerepo="ol7_latest" install libvirt qemu-kvm virt-install
To test whether a system can act as a KVM host, run the following command:
# virt-host-validate qemu
If all of the checks return a PASS value, the system can host guest virtual machines. If any of the tests fail,
a reason is provided and information is displayed on how to resolve the issue if such an option is available.
Note
In the event that this message is displayed, attempts to create or start a virtual
machine on the host are likely to fail.
10
Chapter 3 KVM Usage
Table of Contents
3.1 Checking the libvirt Daemon Status ............................................................................................. 11
3.2 Base Operations ......................................................................................................................... 11
3.2.1 Creating a New Virtual Machine ....................................................................................... 12
3.2.2 Starting and Stopping Virtual Machines ............................................................................. 12
3.2.3 Deleting a Virtual Machine ............................................................................................... 13
3.3 Working With Storage for KVM Guests ........................................................................................ 14
3.3.1 Storage Pools .................................................................................................................. 14
3.3.2 Storage Volumes ............................................................................................................. 16
3.3.3 Managing Virtual Disks .................................................................................................... 17
3.4 Working With Memory and CPU Allocation .................................................................................. 19
3.4.1 Configuring Virtual CPU Count ......................................................................................... 19
3.4.2 Configuring Memory Allocation ......................................................................................... 20
3.5 Setting up Networking for KVM Guests ........................................................................................ 21
3.5.1 Setting up and Managing Virtual Networks ........................................................................ 22
3.5.2 Adding or Removing a vNIC ............................................................................................. 23
3.5.3 Bridged and Direct vNICs ................................................................................................. 24
3.5.4 Interface Bonding for Bridged Networks ............................................................................ 26
3.6 Cloning Virtual Machines ............................................................................................................ 26
3.6.1 Preparing a Virtual Machine for Cloning ............................................................................ 27
3.6.2 Cloning a Virtual Machine by Using the virt-clone Command .............................................. 28
3.6.3 Cloning a Virtual Machine by Using Virtual Machine Manager ............................................ 29
Several tools exist for administering the libvirt interface with KVM. In most cases, a variety of different
tools are capable of performing the same operation. This document focuses on the tools that you can
use from the command line. However, if you are using a desktop environment, you might consider using
a graphical user interface (GUI) such as the Virtual Machine Manager, to create and manage virtual
machines (vms). For more information about Virtual Machine Manager, see https://virt-manager.org/.
The output should indicate that the libvirtd daemon is running, as shown in the following example:
# systemctl status libvirtd
* libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since time_stamp; xh ago
After you verify that the libvirtd service is running, you can start provisioning guest systems.
11
Creating a New Virtual Machine
The following example, illustrates the creation of a simple virtual machine and assumes that virt-viewer
is installed and available to load the installer in a graphical environment:
$ virt-install \
--name guest-ol8 \
--memory 2048 \
--vcpus 2 \
--disk size=8 \
--location OracleLinux-R8.iso \
--os-variant ol8.0
The following are detailed descriptions of each of the options that are specified in the example:
• --name is used to specify a name for the virtual machine. This is registered as a domain within libvirt.
• --memory is used to specify the RAM available to the virtual machine and is specified in MB.
• --vcpus is used to specify the number of virtual CPUs that should be available to the virtual machine.
• --disk is used to specify hard disk parameters. In this case, only the size is specified in GB. If a path
is not specified the disk image is created as a qcow file automatically. If virt-install is run as root,
the disk image is created in /var/lib/libvirt/images/ and is named using the name specified for
the virtual machine at install. If virt-install is run as an ordinary user, the disk image is created in
$HOME/.local/share/libvirt/images/.
• --location is used to provide the path to the installation media. This can be an ISO file, or an
expanded installation resource hosted at a local path or remotely on an HTTP or NFS server.
• --os-variant is an optional specification but provides some default parameters for each virtual
machine that can help improve performance for a specific operating system or distribution. For a
complete list of options available, run osinfo-query os.
When the command is run, the virtual machine is created and automatically started to boot using the
install media specified in the location parameter. If you have the virt-viewer package installed and
the command has been run in a terminal within a desktop environment, the graphical console is opened
automatically and you can proceed with the guest operating system installation within the console.
Use the virsh help command to view available options and syntax. For example, to find out more about
the options available to listings of virtual machines, run virsh help list. This command shows options
to view listings of virtual machines that are stopped or paused or that are currently active.
12
Deleting a Virtual Machine
1. If you are unsure of where the disk for the virtual machine is located, obtain this information before you
remove the virtual machine, so that you can find it later and remove it manually. You can do this by
dumping information about the virtual machine and checking for the source files. For example, run:
$ virsh dumpxml --domain guest-ol8 | grep 'source file'
<source file='/home/testuser/.local/share/libvirt/images/guest-ol8-1.qcow2'/>
If the virtual machine can't be shutdown gracefully you can force it to stop by running:
$ virsh destroy guest-ol8
This step removes all configuration information about the virtual machine from libvirt. Storage artifacts
such as virtual disks are left intact. If you need to remove these as well, you can delete them manually
from their location returned in the first step in this procedure. For example, you could run:
$ rm /home/testuser/.local/share/libvirt/images/guest-ol8-1.qcow2
Note that it is not possible to delete a virtual machine if it has snapshots. You should remove any
snapshots using the virsh snapshot-delete command before attempting to remove a virtual machine
that has any snapshots defined.
13
Working With Storage for KVM Guests
Depending on the storage pool type that is configured, different storage volumes can be made available
to your virtual machines to be used as block devices. In some cases, such as when using iSCSI pools,
volumes do not need to be defined as the LUNs for the iSCSI target are automatically presented to the
virtual machine.
Note that you do not need to specifically define different storage pools and volumes to use libvirt with
KVM. These tools are used to help administrators manage how storage is used and consumed by virtual
machines as they need it. It is perfectly acceptable to use the default directory-based storage and take
advantage of manually mounted storage at the default locations.
Oracle recommends using Oracle Linux Virtualization Manager to easily manage and configure complex
storage requirements for KVM environments.
Storage pools help to abstract underlying storage resources from the virtual machine configurations. This
is particularly useful if you suspect that resources such as virtual disks may change physical location or
media type. This becomes even more important when using network based storage and target paths, DNS
or IP addressing may change over time. By abstracting this configuration information, an administrator can
manage resources in a consolidated way without needing to update multiple virtual machine configurations.
You can create transient storage pools that are available until the host reboots, or you can define
persistent storage pools that are restored after a reboot.
Transient storage pools are started automatically as soon as they are created and the volumes that are
within them are made available to virtual machines immediately, however any configuration information
about a transient storage pool is lost after the pool is stopped, the host reboots or if the libvirtd service is
restarted. The storage itself is unaffected, but virtual machines configured to use resources in a transient
storage pool lose access to these resources. Transient storage pools are created using the virsh pool-
create command.
For most use cases, you should consider creating persistent storage pools. Persistent storage pools are
defined as a configuration entry that is stored within /etc/libvirt. Persistent storage pools can be
stopped and started and can be configured to start when the host system boots. This can be useful as
libvirt can take care of automatically mounting and enabling access to network based resources. Persistent
storage pools are created using the virsh pool-define command, and usually need to be started after
they have been created before you are able to use them.
The following examples show how you can set up directory based storage, and perform basic operations
on it.
14
Storage Pools
To start the storage pool and make it accessible to any virtual machines, run:
$ virsh pool-start pool_dir
Other storage pool types can be easily created using the same virsh pool-define-as command.
Options that are used with this command depend on the storage type that you select when you create your
storage pool. For example, to create file system based storage, that mounts a formatted block device, /
dev/sdc1, at the mount point /share/storage_mount, you can run:
$ virsh pool-create-as pool_fs fs \
--source-path /dev/sdc1 \
--target /share/storage_mount
Similarly, you can easily add an NFS share as a storage pool. For example, run:
$ virsh pool-create-as pool_nfs netfs \
--source-path /ISO \
--source-host nfs.example.com \
--target /share/storage_nfs
It is also possible to create an XML file representation of the storage pool configuration and load the
configuration information from file using the virsh pool-define command. For example, you could
create a storage pool for a Gluster volume by creating an XML file named gluster_pool.xml with the
following content:
<pool type='gluster'>
<name>pool_gluster</name>
<source>
<host name='192.0.2.1'/>
<dir path='/'/>
<name>gluster-vol1</name>
</source>
</pool>
This example assumes that a Gluster server is already configured and running on a host with IP address
192.0.2.1 and that a volume named gluster-vol1 is exported. Note that the glusterfs-fuse
package must be installed on the host and you should verify that you are able to mount the Gluster volume
before attempting to use it with libvirt.
Run the following command to load the configuration information from the gluster_pool.xml file into
libvirt.
15
Storage Volumes
Note that Oracle recommends using Oracle Linux Virtualization Manager when attempting to use complex
network based storage such as Gluster.
For more information on the XML format for a storage pool definition, see https://libvirt.org/
formatstorage.html#StoragePool.
In some cases, such as when using directory or file system based storage pools, storage volumes are
individually created for use as virtual disks. In these cases, several disk image formats are supported
although some formats, such as qcow2, may require additional tools such as qemu-img for creation.
For disk based pools, standard partition type labels are used to represent individual volumes; while for
pools based on the logical volume manager, the volumes themselves are presented individually within the
pool.
Depending on the storage pool type, you can create new storage volumes using the virsh vol-create
command. This command expects you to provide an XML file representation of the volume parameters.
For example, to create a new volume in storage pool named pooldiryou could create an XML file,
volume1.xml, with the required parameters and run:
$ virsh vol-create pooldir volume1.xml
The XML for a volume may depend on the pool type and the volume being created, but in the case of a
sparsely allocated 10 GB image in qcow2 format, the XML may look similar to the following:
<volume>
<name>volume1</name>
<allocation>0</allocation>
<capacity unit="G">10</capacity>
<target>
<path>/home/testuser/.local/share/libvirt/images/volume1.qcow2</path>
<permissions>
<owner>107</owner>
<group>107</group>
<mode>0744</mode>
<label>virt_image_t</label>
</permissions>
</target>
</volume>
You can use the virsh vol-create-as command to create a volume directly by passing command line
arguments to it directly. Many of the available options, such as the allocation or format have default value
set, so you can typically just specify the name of the storage pool where the volume should be created, the
name of the volume and the capacity that you require. For example, run the command:
$ virsh vol-create-as --pool pooldir --name volume1 --capacity 10G
Note that storage volumes can be sparsely allocated by setting the allocation value for the initial size of
the volume to a value lower than the capacity of the volume. The allocation indicates the initial or current
physical size of the volume, while the capacity indicates the size of the virtual disk as it is presented to the
16
Managing Virtual Disks
virtual machine. Sparse allocation is frequently used to over-subscribe physical disk space where virtual
machines may ultimately require more disk space than is initially available. For a non-sparsely allocated
volume, the allocation matches or exceeds the capacity of the volume. Exceeding the capacity of the disk
provides space for metadata, if required.
You can use virsh vol-info the command to view information about a volume to determine its type,
capacity, and allocation. For example:
$ virsh vol-info --pool pooldir volume1
Name: volume1
Type: file
Capacity: 9.31 GiB
Allocation: 8.00 GiB
You can clone a storage volume using the virsh vol-clone command. This command simply takes the
name of the original volume and the name of the cloned volume as a parameter and the clone is created in
the same storage pool with identical parameters. For example:
$ virsh vol-clone volume1 volume1-clone
Note that you can use the --pool option if you have volumes with matching names in different pools on
the same system and you need to specify which pool the operation should take place in.
You can delete a storage volume by running the virsh vol-delete command. For example, to delete
the volume named volume1 in the storage pool named pooldir, run the following command:
$ virsh vol-delete volume1 --pool pooldir
As long as a storage volume is not being used by a virtual machine, you can resize it using the virsh
vol-resize command. For example:
$ virsh vol-resize volume1 15G
It is generally not advisable to reduce the size of an existing volume, as this can risk destroying data.
However, if you attempt to resize a volume to reduce it, you must specify the --shrink option with the
new size value.
You can equally use virt-install to create a virtual disk as a volume within an existing storage pool
automatically at install. For example, to create a new disk image as a volume within the storage pool
named storage_pool1:
17
Managing Virtual Disks
$ virt-install \
--name guest \
--disk pool=storage_pool1 \
size=10 \
...
Tools to attach a volume to an existing virtual machine are limited and it is generally recommended that
you use a GUI tool like virt-manager or cockpit to assist with this. If you expect that you may need to
work with volumes a lot, consider using Oracle Linux Virtualization Manager.
You can use the virsh attach-disk command to attach a disk image to an existing virtual machine.
This command requires that you provide the path to the disk image when you attach it to the virtual
machine. If the disk image is a volume, you can obtain it's correct path by running the virsh vol-list
command first.
$ virsh vol-list storage_pool_1
Name Path
--------------------------------------------------------------------
volume1 /share/disk-images/volume1.qcow2
Attach the disk image within the existing virtual machine configuration so that it is persistent and attaches
itself on each subsequent restart of the virtual machine:
$ virsh attach-disk --config \
--domain guest1 \
--source /share/disk-images/volume1.qcow2 \
--target sdb1
Note that you can use the --live option with this command to temporarily attach a disk image to a
running virtual machine; or you can use the --persistent option to attach a disk image to a running
virtual machine and also update it's configuration so that the disk is attached on each subsequent restart.
Note that you can use the --live option with this command to temporarily detach a disk image from a
running virtual machine; or you can use the --persistent option to detach a disk image from a running
virtual machine and also update it's configuration so that the disk is permanently detached from the virtual
machine on subsequent restarts.
Where disks are attached as block devices within a guest virtual machine, you can obtain a listing of the
block devices attached to a guest so that you are able to identify the disk target that is associated with a
particular source image file, by running the virsh domblklist command. For example, run:
$ virsh domblklist guest1
Detaching a virtual disk from the virtual machine does note delete the disk image file or volume from the
host system. If you need to delete a virtual disk, you can either manually delete the source image file or
delete the volume from the host.
18
Working With Memory and CPU Allocation
You can check that the resize has worked by checking the block device information for the running virtual
machine, using the virsh domblkinfo command. For example to list all block devices attached to
guest1 in human readable format:
$ virsh domblkinfo guest1 --all --human
The virsh blockresize command allows you to scale up a disk on a live virtual machine, but it does
not guarantee that the virtual machine is able to immediately identify that the additional disk resource is
available. For some guest operating systems, restarting the virtual machine may be required before the
guest is capable of identifying the additional resources available.
Individual partitions and file systems on the block device are not scaled using this command. You need to
perform these operations manually from withing the guest, as required.
You can change the number of virtual CPUs that are active in a guest virtual machine using the virsh
setvcpus command. By default, virsh setvcpus works on running guest virtual machines. If you want
to change the virtual CPU count for a stopped virtual machine, you add the --config option.
For example, run the following command to set the number of virtual CPUs on a running virtual machine:
$ virsh setvcpus domain-name, id, or uuid count-value --live
Note that the count value cannot exceed the number of CPUs assigned to the guest virtual machine. The
count value also might be limited by the host, hypervisor, or from the original description of the guest virtual
machine.
• domain
• count
• --maximum
Controls the maximum number of virtual CPUs that can be hot-plugged the next time the guest virtual
machine is booted. Therefore, it can only be used with the --config flag.
• --config
19
Configuring Memory Allocation
Changes the stored XML configuration for the guest virtual machine and takes effect when the guest is
started.
• --live
The guest virtual machine must be running and the change takes place immediately, thus hot plugging a
vCPU.
• --current
• --guest
• --hotpluggable
You can use the --config and --live options together if supported by the hypervisor.
If you do not specify --config, --live, or --current, the --live option is assumed. So, if you do not
select an option and the guest virtual machine is not running, the command fails. In addition, if no options
are specified, it is up to the hypervisor whether the --config option is also assumed. This determines
whether the XML configuration is adjusted to make the change persistent.
You use the virsh setmem command to change the available memory for a virtual machine. If you want
to change the maximum memory that can be allocated, use the virsh setmaxmem command.
You must specify the size as a scaled integer in kibibytes and the new value cannot exceed the amount
you specified for the virtual machine. Values lower than 64 MB are unlikely to work with most virtual
machine operating systems. A higher maximum memory value does not affect active virtual machines. If
the new value is lower than the available memory, it shrinks possibly causing the virtual machine to crash.
• domain
• size
A number value representing the new memory size, as a scaled integer. The default unit is KiB, but you
can select from other valid memory units:
20
Setting up Networking for KVM Guests
• --config
Changes the stored XML configuration for the guest virtual machine and takes effect when the guest is
started.
• --live
The guest virtual machine must be running and the change takes place immediately, thus hot plugging
memory.
• --current
To set the maximum memory that can be allocated to a virtual machine, run:
$ virsh setmaxmem domain-name, id, or uuid size --current
You must specify the size as a scaled integer in kibibytes unless you also specify a supported memory
unit, which are the same as for the virsh setmem command.
All other options for virsh setmaxmem are the same as for virsh setmem with one caveat. If you
specify the --live option be aware that not all hypervisors allow live changes of the maximum memory
limit.
In most cases, vNICs are defined when the virtual machine is first created, however the libvirt API allows
for vNICs of different types to be added or removed from virtual machines as required and also facilitates
hot plugging to allow you to perform these actions on a running virtual machine to avoid downtime.
Networking with KVM can be complex as it can involve components that are configured directly on the host
itself, configuration for the virtual machine within libvirt and also configuration for the network within the
running guest operating system. As a result, for many development and testing environments, it is often
21
Setting up and Managing Virtual Networks
sufficient to configure each vNIC to use the virtual networking provided by libvirt. This driver is used
to create a virtual network that uses Network Address Translation (NAT) to allow virtual machines to gain
access to external resources. This approach is simple to configure and often facilitates similar network
access already configured on the host system.
Where virtual machines may need to belong to specific subnetworks, a bridged network can be used.
Network bridges use virtual interfaces that are mapped to and share a physical interface on the host. In this
configuration, network traffic from a virtual machine behaves like it is coming from an independent system
on the same physical network as the host system. Depending on the tools used, this may require some
manual changes to the host network configuration before it can be set up for a virtual machine.
Networking for virtual machines can also be configured to directly use a physical interface on the host
system. This can provide network behavior similar to using a bridged network interface in that the vNIC
behaves as if it is connected to the physical network directly. Direct connections tend to use the macvtap
driver to extend physical network interfaces to provide a range of functionality that can also provide a
virtual bridge that behaves similarly to a bridged network but which is easier to configure and maintain and
which offers improved performance.
KVM is able to use SR-IOV for passthrough networking where a PCIe interface supports this functionality.
The SR-IOV hardware must be properly set up and configured on the host system before you are able to
attach the device to a virtual machine and configure the network to use this device.
Where network configuration is likely to be complex, Oracle recommends using Oracle Linux Virtualization
Manager. Simple networking configurations and operations are described here to facilitate the majority of
basic deployment scenarios.
Use the virsh net-list --all command to list all virtual networks that are configured on the host:
$ virsh net-list --all
Name State Autostart Persistent
----------------------------------------------------------
default active yes yes
You can find out more about a network using the virsh net-info command. For example, to find out
about the default network, run:
$ virsh net-info default
Name: default
UUID: 16318035-eed4-45b6-99f8-02f1ed0661d9
Active: yes
Persistent: yes
Autostart: yes
Bridge: virbr0
Note that the virtual network uses a network bridge, called virbr0. This is not to be confused with
traditional bridged networking. The virtual bridge is not connected to a physical interface and relies on
NAT and IP forwarding to connect virtual machines to the physical network beyond. Libvirt also handles
IP address assignment for virtual machines using DHCP. The default network is typically in the range
192.168.122.1/24. To see the full configuration information about a network, use the virsh net-
dumpxml command:
22
Adding or Removing a vNIC
• --domain
• --type
The type of networking that the vNIC should use. Available options include:
• direct for a direct mapping to one of the host's network interfaces or bridges
• --source
The source that should be used for the network type specified. These vary depending on the type:
• for a direct connection specify the name of the host's interface or bridge
• for a hostdev connection specify the PCI address of the host's interface formatted as
domain:bus:slot.function.
• --config
Changes the stored XML configuration for the guest virtual machine and takes effect when the guest is
started.
23
Bridged and Direct vNICs
• --live
The guest virtual machine must be running and the change takes place immediately, thus hot plugging
the vNIC.
• --current
Additional options are available to further customize the interface, such as setting the MAC address or
configuring the target macvtap device when using some of the alternate network types. You can also
use --model option to change the model of network interface that is presented to the virtual machine. By
default, the virtio model is used, but alternate models, such as e1000 or rtl8139 are available, Run
virsh help attach-interface for more information, or refer to the VIRSH(1) man page.
Remove a vNIC from a virtual machine using the virsh detach-interface command. For example, run:
$ virsh detach-interface --domain guest --type network --mac 52:54:00:41:6a:65 --config
Note that the domain or virtual machine name and type are required parameters. If the virtual machine
has more than one vNIC attached, you must specify the mac parameter to provide the MAC address of the
vNIC that you wish to remove. You can obtain this value by listing the vNICs that are currently attached to
a virtual machine. For example, you can run:
$ virsh domiflist guest
Interface Type Source Model MAC
-------------------------------------------------------
vnet0 network default virtio 52:54:00:8c:d2:44
vnet1 network default virtio 52:54:00:41:6a:65
Traditional network bridging using linux bridges is supported using the bridge type when attaching an
interface. The virsh iface-bridge command can be used to create a bridge on the host system and add a
physical interface to it. For example, to create a bridge named vmbridge1 with the ethernet port named
enp0s31f6 attached, you can run:
$ virsh iface-bridge vmbridge1 enp0s31f6
Once the bridge is created, you can attach it using the virsh attach-interface command as
described in Section 3.5.2, “Adding or Removing a vNIC”.
There are several issues that you may need to be aware of when using traditional linux bridged networking
for KVM guests. For instance, it is not simple to set up a bridge on a wireless interface due to the number
of addresses available in 802.11 frames. Furthermore, the complexity of the code to handle software
bridges can result in reduced throughput, increased latency and additional configuration complexity. The
main advantage that this approach offers, is that it allows the host system to communicate across the
network stack directly with any guests configured to use bridged networking.
Most of the issues related to using traditional linux bridges can be easily overcome by using the macvtap
driver which simplifies virtualized bridge network significantly. For most bridged network configurations in
KVM, this is the preferred approach because it offers better performance and it is easier to configure. The
macvtap driver is used when the network type is set to direct.
24
Bridged and Direct vNICs
The macvtap driver creates endpoint devices that follow the tun/tap ioctl interface model to extend an
existing network interface so that KVM can use it to connect to the physical network interface directly to
support different network functions. These functions can be controlled by setting a different mode for the
interface. The following modes are available:
• vepa(Virtual Ethernet Port Aggregator) is the default mode and forces all data from a vNIC out of the
physical interface to a network switch. If the switch supports hairpin mode, different vNICs connected
to the same physical interface are able to communicate via the switch. Many switches currently do not
support hairpin mode, which means that virtual machines with direct connnection interfaces running in
VEPA mode are unable to communicate, but can connect to the external network via the switch.
• bridge mode connects all vNICS directly to each other so that traffic between virtual machines using
the same physical interface is not sent out to the switch and is facilitated directly. This is the most
useful option when using switches that do not support hairpin mode, and when you need maximum
performance for communications between virtual machines. It is important to note that when configured
in this mode, unlike a traditional software bridge, the host is unable to use this interface to communicate
directly with the virtual machine.
• private mode behaves like a VEPA mode vNIC in the absence of a switch supporting hairpin mode.
However, even if the switch does support hairpin mode, two virtual machines connected to the same
physical interface are unable to communicate with each other. This option has limited use cases.
• passthrough mode attaches a physical interface device or an SR-IOV Virtual Function (VF) directly to
the vNIC without losing the migration capability. All packets are sent directly to the configured network
device. There is a one-to-one mapping between network devices and virtual machines when configured
in passthrough mode because a network device cannot be shared between virtual machines in this
configuration.
Unfortunately, the virsh attach-interface command does not allow you to specify the different
modes available when attaching a direct type interface that uses the macvtap driver and defaults
to vepa mode . The graphical virt-manager utility makes setting up bridged networks using macvtap
significantly easier and provides options for each different mode.
Nonetheless, it is not very difficult to change the configuration of a virtual machine by editing the XML
definition for it directly. The following steps can be followed to configure a bridged network using the
macvtap driver on an existing virtual machine:
1. Attach a direct type interface to the virtual machine using the virsh attach-interface
command and specify the source for the physical interface that should be used for the bridge. In this
example, the virtual machine is called guest1 and the physical network interface on the host is a
wireless interface called wlp4s0:
$ virsh attach-interface --domain guest1 --type direct --source wlp4s0 --config
2. Dump the XML for the virtual machine configuration and copy it to a file that you can edit:
$ virsh dumpxml guest1 > /tmp/guest1.xml
3. Edit the XML for the virtual machine to change the vepa mode interface to use bridged mode. If there
are many interfaces connected to the virtual machine, or you wish to review your changes, you can do
this in a text editor. If you are happy to make this change globally, run:
$ sed -i "s/mode='vepa'/mode='bridge'/g" /tmp/guest1.xml
4. Remove the existing configuration for this virtual machine and replace it with the modified configuration
in the XML file:
$ virsh undefine guest1
25
Interface Bonding for Bridged Networks
5. Restart the virtual machine for the changes to take affect. The direct interface is attached in bridge
mode and is persistent and automatically started when the virtual machine boots.
Since the physical network interfaces that a virtual machine may use are located on the host and not on
the virtual machine, setting up any form of bonded networking for greater throughput or for high availability,
must be configured on the host system, itself. This approach allows you to configure network bonds on the
host and then to attach a virtual network interface, using a network bridge, directly to the bonded network
on the host.
Network bonding of physical interfaces for Oracle Linux 7 is described in Oracle® Linux 7: Setting Up
Networking. For Oracle Linux 8, see Oracle® Linux 8: Setting Up Networking. To achieve HA networking
for you virtual machines, you should configure a network bond on the host system first.
When the bond is configured, you should configure your virtual machine networks to use the bonded
interface when you create a network bridge. This can be done using either the bridge type interface or
using a direct interface configured to use the macvtap driver's bridge mode. The bond interface can
be used instead of a physical network interface when configuring a virtual network interface.
• Clone
A clone is an instance of a single virtual machine. You can use a clone to set up a network of identical
virtual machines which you can optionally distribute to other destinations.
• Template
A template is an instance of a virtual machine that you can use as the cloning source. You can use a
template to create create multiple clones and optionally make modifications to each clone.
The difference between clones and templates is how they are used. For the created clone to work properly,
ensure that you remove information and modify configurations that is unique to the virtual machine that
is being cloned before cloning. This information and configurations differs based on how you will use the
clones, for example:
• anything assigned to the virtual machine such as the number of Network Interface Cards (NICs) and
their MAC addresses.
• anything configured by an application installed on the virtual machine such as activation codes and
registration information.
26
Preparing a Virtual Machine for Cloning
You must remove some of the information and configurations from within the virtual machine. Other
information and configurations must be removed from the virtual machine using the virtualization
environment.
Note
For more information on how to use the virt-sysprep utility to prepare a virtual
machine and understand the available options, see https://libguestfs.org/virt-
sysprep.1.html.
1. Build the virtual machine that you want to use for the clone or template.
Note
If you do not remove the udev rules, the name of the first NIC might be
eth1instead of eth0.
After modification, your file should not include a HWADDR entry or any unique information, and at a
minimum include the following lines:
DEVICE=eth[x]
ONBOOT=yes
Important
You must remove the HWADDR entry because if its address does not match
the new guest's MAC address, the ifcfg is ignored.
27
Cloning a Virtual Machine by Using the virt-clone Command
Note
Ensure that any additional unique information is removed from the ifcfg
files.
3. If the guest virtual machine from which you want to create a clone is registered with ULN, you must de-
register it. For more information, see the Unbreakable Linux Network User's Guide for Oracle Linux 6
and Oracle Linux 7.
4. Run the following command to remove any sshd public/private key pairs:
$ rm -rf /etc/ssh/ssh_host_*
Note
Removing ssh keys prevents problems with ssh clients not trusting these hosts.
5. Remove any other application-specific identifiers or configurations that might cause conflicts if running
on multiple machines.
6. Configure the virtual machine to run the relevant configuration wizards the next time it boots.
• For Oracle Linux 6 and below, run the following command to create an empty file on the root file
system called .unconfigured:
$ touch /.unconfigured
• For Oracle Linux 7, run the following commands to enable the first boot and initial-setup wizards:
Note
The wizards that run on the next boot depend on the configurations that have
been removed from the virtual machine. Also, on the first boot of the clone we
recommend that you change the hostname.
Important
Before proceeding with cloning, shut down the virtual machine. You can clone a
virtual machine using virt-clone or virt-manager.
Run virt-clone --help to see a complete list of options, or refer to the VIRT-CLONE(1) man page.
Run the following command to clone a virtual machine on the default connection, automatically generating
a new name and disk clone path:
28
Cloning a Virtual Machine by Using Virtual Machine Manager
Run the following command to clone a virtual machine with multiple disks:
$ virt-clone --connect qemu:///system --original vm-name --name vm-clone-name --file \
/var/lib/libvirt/images/vm-clone-name.img --file /var/lib/libvirt/images/vm-clone-data.img
2. From the list of guest virtual machines, right-click the guest virtual machine you want to clone and click
Clone.
3. In the Name field, change the name of the clone or accept the default name.
4. To change the Networking information, click Details. Then, enter a new MAC address for the clone
and click OK.
5. For each disk in the cloned guest virtual machine, select one of the following options:
• Clone this disk - The disk is cloned for the cloned guest virtual machine.
• Share disk with guest-virtual-machine-name - The disk is shared by the guest virtual
machine to be cloned and its clone.
• Details - Opens the Change storage path window if you want to select a new path for the disk.
6. Click Clone.
29
30
Chapter 4 Known Issues for Oracle Linux KVM
Table of Contents
4.1 Upgrading From QEMU 3.10 to Version 4.2.1 Can Prevent Existing KVM Guests From Starting ....... 31
This chapter provides information about known issues for Oracle Linux KVM. If a workaround is available,
that information is also provided.
To work around this issue so that KVM guests can run the updated qemu version, edit the XML file of
each KVM guest, adding the caching_mode='on' parameter to the iommu section for each driver sub-
element, for example:
<iommu model='intel'>
<driver aw_bits='48' caching_mode='on'/>
</iommu>
(Bug ID 32312933)
31
32
Chapter 5 Oracle VirtIO Drivers for Microsoft Windows
Table of Contents
5.1 What's New ................................................................................................................................ 33
5.2 Supported Releases, Operating Systems, and Configuration Limits ............................................... 33
5.2.1 Supported Environments .................................................................................................. 34
5.2.2 Supported Guest Operating Systems ................................................................................ 34
5.2.3 Microsoft Windows Compatibility Signing .......................................................................... 36
5.3 Downloading the Oracle VirtIO Drivers for Microsoft Windows ....................................................... 36
5.4 Installing the Oracle VirtIO Drivers for Microsoft Windows ............................................................. 37
5.4.1 Installing the Oracle VirtIO Drivers for Microsoft Windows on Existing Microsoft Windows
Guests ..................................................................................................................................... 37
5.4.2 Installing the Oracle VirtIO Drivers for Microsoft Windows During Microsoft Windows Guest
Installation ................................................................................................................................ 39
5.4.3 Optional Configuration Changes ....................................................................................... 40
5.5 Upgrading the Oracle VirtIO Drivers for Microsoft Windows .......................................................... 41
5.6 Silently Installing or Upgrading the Oracle VirtIO Drivers for Microsoft Windows ............................. 42
5.7 Uninstalling the Oracle VirtIO Drivers for Microsoft Windows ......................................................... 43
5.8 Known Limitations and Workarounds ........................................................................................... 44
5.8.1 Security Alert for Unsigned Drivers ................................................................................... 45
5.8.2 Found New Hardware Wizard Displayed ........................................................................... 47
5.8.3 Microsoft Windows Server 2012 Data Center Guests With Failover Clustering Cannot Get
IP Address ............................................................................................................................... 47
The Oracle VirtIO Drivers for Microsoft Windows are paravirtualized drivers for Microsoft Windows guests
that are running on KVM hypervisors; these drivers improve performance for network and block (disk)
devices on Microsoft Windows guests and resolve common issues.
The following instructions describe how to install, use, and troubleshoot the Oracle VirtIO Drivers for
Microsoft Windows. Note that these instructions are intended for users and administrators of guests
that are running the Microsoft Windows operating system in virtualized environments, where KVM is the
hypervisor.
Information about Microsoft Windows compatibility signing and details on tested and recommended
configuration limits for the Oracle VirtIO Drivers for Microsoft Windows is also provided.
33
Supported Environments
• Oracle Linux 7
Note
• https://
support.microsoft.com/
en-us/
help/983554/0x000000be-
stop-error-message-when-
you-use-the-storport-sys-
driver-to/0x000000be-
stop-error-message-when-
you-use-the-storport-sys-
driver-to
• https://
support.microsoft.com/en-
us/help/2957775/system-
crashes-during-i-o-traffic-
after-you-install-a-host-
bus-adapter
• https://
support.microsoft.com/en-
us/help/4474419/sha-2-
code-signing-support-
34
Supported Guest Operating Systems
Note
• https://
support.microsoft.com/
en-us/
help/983554/0x000000be-
stop-error-message-when-
you-use-the-storport-sys-
driver-to/0x000000be-
stop-error-message-when-
you-use-the-storport-sys-
driver-to
• https://
support.microsoft.com/en-
us/help/4474419/sha-2-
code-signing-support-
update/sha-2-code-
signing-support-update
Microsoft Windows Server 2003 R2 SP2 Yes Yes
Microsoft Windows 10 Yes Yes
Microsoft Windows 8.1 Yes Yes
Microsoft Windows 8 Yes Yes
Microsoft Windows 7 SP1 Yes Yes
Microsoft Windows Vista SP2 Yes Yes
Note
For information about the supported Microsoft Windows operating systems for
the Oracle VirtIO Drivers for Microsoft Windows in the Oracle Cloud Infrastructure
environment, see https://docs.cloud.oracle.com/en-us/iaas/Content/Compute/
References/bringyourownimage.htm.
Virtual machine configuration for the Oracle VirtIO Drivers for Microsoft Windows complies with shape
configurations for virtual machines in the Oracle Cloud Infrastructure environment. For more information,
see: https://www.oracle.com/cloud/compute/virtual-machines.html.
35
Microsoft Windows Compatibility Signing
Note
A security alert occurs during installation on a Windows operating system for which
Oracle VirtIO Drivers for Microsoft Windows are not signed.
To download the Oracle VirtIO Drivers for Microsoft Windows from Oracle Software Delivery Cloud:
4. Click Continue.
5. In the Platforms / Languages column, select x86 64 bit in the drop-down list and then click Continue.
6. Review and accept the Oracle License Agreement and then click Continue.
7. Click the V1002983-01.zip file name (Oracle VirtIO Drivers Version for Microsoft Windows 1.1.6,
68.0 MB) and save it to your system.
To download the Oracle VirtIO Drivers for Microsoft Windows from MOS:
36
Installing the Oracle VirtIO Drivers for Microsoft Windows
1. From the MOS home page, cick the Patches & Updates tab.
2. From the Patch Search options, in the Patch Name or Number field enter 27637937 and then click
Search.
3. From the search results table, click the 27637937 Patch Name that corresponds to the Oracle VirtIO
drivers version 1.1.6 (Patch) Description.
5.4.1 Installing the Oracle VirtIO Drivers for Microsoft Windows on Existing
Microsoft Windows Guests
To install the Oracle VirtIO Drivers for Microsoft Windows on existing Microsoft Windows guests, perform
the following procedures.
1. Open the Microsoft Windows virtual machine on which you want to install the Oracle VirtIO Drivers for
Microsoft Windows.
4. From the Console Tree, display the list of device installation restrictions (Device Installation
Restrictions) as follows:
5. Edit the policy settings so that no device installation restrictions are configured.
Alternatively, review each policy setting to determine the correct configuration for your business needs.
37
Installing the Oracle VirtIO Drivers for Microsoft Windows on Existing Microsoft Windows Guests
When you are finished configuring the policy settings for device installation, you can proceed with the
installation of the Oracle VirtIO Drivers for Microsoft Windows.
• Obtain the Oracle VirtIO Drivers for Microsoft Windows from Oracle Software Delivery Cloud or MOS.
See Section 5.3, “Downloading the Oracle VirtIO Drivers for Microsoft Windows”.
• Review the list of supported Microsoft Windows operating systems and any prerequisite hotfixes. See
Section 5.2.2, “Supported Guest Operating Systems”.
• Configure system policies to allow the installation. See Section 5.4.1.1, “Configuring Policies for Device
Installation”.
Note
If you are migrating Windows guests from Oracle Cloud Infrastructure Classic
to Oracle Cloud Infrastructure, the installer copies the Oracle VirtIO Drivers for
Microsoft Windows files, installs the drivers on the guest, and configures the guest
to support migration from Oracle Cloud Infrastructure Classic to Oracle Cloud
Infrastructure.
You can install the Oracle VirtIO Drivers for Microsoft Windows by using the GUI installation program or by
performing a silent installation. Use the graphical installation program if you are installing a single instance
of the Oracle VirtIO Drivers for Microsoft Windows. If you plan to silently install multiple instances of the
Oracle VirtIO Drivers for Microsoft Windows, you must run the GUI installation program in a command-line
window on at least one Microsoft Windows guest to create a response file. You can then use the response
file to perform all of the subsequent installations silently.
1. Copy the Oracle VirtIO Drivers for Microsoft Windows installation program Setup.exe to the guest.
• To perform a single installation, double-click Setup.exe to start the Oracle VirtIO Drivers for
Microsoft Windows installer.
c. Run Setup.exe -r to start the Oracle VirtIO Drivers for Microsoft Windows installer and create
a response file for silent installations.
3. If prompted, select Yes in the User Account Control dialog to allow the Oracle VirtIO Drivers for
Microsoft Windows installer to proceed.
4. Click Next.
38
Installing the Oracle VirtIO Drivers for Microsoft Windows During Microsoft Windows Guest Installation
The Start to install Oracle VirtIO Drivers for Microsoft Windows Release 1.1.6 window is displayed
with information about your selection.
The installer copies the Oracle VirtIO Drivers for Microsoft Windows files and installs the drivers on the
guest.
Note
If you are migrating Windows guests from Oracle Cloud Infrastructure Classic
to Oracle Cloud Infrastructure, shut down the Windows guest VM in the Oracle
Cloud Infrastructure Classic environment and then start the Windows guest VM
in the Oracle Cloud Infrastructure environment.
The Oracle VirtIO Drivers for Microsoft Windows are installed in the following directories:
If you used the -r option in the command line, the installation program creates a response file in the C:
\Windows directory. You then use the response file, setup.iss, to perform silent installations on other
Microsoft Windows guests. See Section 5.6, “Silently Installing or Upgrading the Oracle VirtIO Drivers for
Microsoft Windows”.
5.4.2 Installing the Oracle VirtIO Drivers for Microsoft Windows During
Microsoft Windows Guest Installation
Before You Begin. Do the following before you start the installation process:
• Obtain the Oracle VirtIO Drivers for Microsoft Windows from Oracle Software Delivery Cloud or MOS.
See Section 5.3, “Downloading the Oracle VirtIO Drivers for Microsoft Windows”.
• Review the list of supported Microsoft Windows operating systems and any prerequisite hotfixes. See
Section 5.2.2, “Supported Guest Operating Systems”.
To install the Oracle VirtIO Drivers for Microsoft Windows during the installation of a Microsoft Windows
guest, do the following:
2. Attach the Oracle VirtIO Drivers for Microsoft Windows ISO file to the virtual machine as an emulated
IDE device. You can find the winvirtio.iso file in the Oracle VirtIO Drivers for Microsoft Windows
zip file you downloaded.
Ensure that the Microsoft Windows installation ISO is attached to the virtual machine as the first IDE
device. The Oracle VirtIO Drivers for Microsoft Windows ISO file should be the second IDE device.
3. Start the virtual machine and begin the Microsoft Windows installation process.
4. When the disk or partition screen displays, follow the prompts to browse and load drivers.
39
Optional Configuration Changes
5. Navigate to the appropriate driver location on the Oracle VirtIO Drivers for Microsoft Windows ISO file
and then select them.
The contents of the Oracle VirtIO Drivers for Microsoft Windows ISO file are as follows:
autorun.inf # File that automatically runs the installation program.
Setup.exe # The main graphical installation program.
NetKVM # Directory that contains the license file for NetKVM drivers.
pvpanic # Directory that contains the license file for pvpanic drivers.
vioscsi # Directory that contains the license file for vioscsi drivers.
vioserial # Directory that contains the license file for vioserial drivers.
viostore # Directory that contains the license file for viostore drivers.
vio # Base directory for drivers.
vio/Win10 # Drivers for Windows 10, Windows Server 2016, and Windows Server 2019.
vio/Win10/amd64 # 64-bit drivers.
vio/Win10/i386 # 32-bit drivers. {only Windows 10)
vio/Win8.1 # Drivers for Windows 8.1 and Windows Server 2012 R2.
vio/Win8.1/amd64 # 64-bit drivers.
vio/Win8.1/i386 # 32-bit drivers. (only Windows 8.1)
vio/Wlh # Drivers for Windows Vista and Windows Server 2008 (Longhorn).
vio/Wlh/amd64 # 64-bit drivers.
vio/Wlh/i386 # 32-bit drivers.
6. Repeat the preceding step to install additional drivers as necessary and then continue with the
Microsoft Windows installation process.
After you install the Microsoft Windows guest, you must configure Microsoft Windows policies. See
Section 5.2.2, “Supported Guest Operating Systems”.
Note
The optional configuration changes are only relevant if you completed a Default
type of installation, are running Oracle Linux, and have control of the host system. If
you have completed a Custom installation and migrated your VM from the OCI-C to
Oracle Cloud Infrastructure environment, you do not have access to the host.
The changes that are described here require that the host system is running the latest supported
virtualization packages, which are available in the ol7_kvm_utils Yum repository on the Oracle Linux
yum server or in the ol7_x86_64_kvm_utils or ol7_aarch64_kvm_utils channels on ULN.
If you have not already done so, enable the appropriate channel or repository and install the packages
from this location before proceeding. See Section 2.1, “Configuring Yum Repositories and ULN Channels”
40
Upgrading the Oracle VirtIO Drivers for Microsoft Windows
for more information. If you perform an upgrade of the virtualization packages, you might need to restart
any running virtual machines for the changes to take effect.
1. Ensure you have installed the Oracle VirtIO Drivers for Microsoft Windows.
3. Create a new temporary image that you can add to the guest as a second disk. For example, run:
# qemu-img create -f qcow2 disk_name.qcow2 1G
5. Specify virtio as the bus type for the disk you added and then start the guest. Microsoft Windows will
locate the disk drivers and complete the installation at this point.
6. Change the bus type for the boot disk to virtio and then start the guest.
Microsoft Windows then installs the Oracle VirtIO Drivers for Microsoft Windows block driver on the
boot disk.
2. Open the control panel, then locate and open the Device Manager window.
3. Expand Network adapters and select the appropriate Oracle VirtIO Ethernet Adapter.
4. Right-click the adapter, select Properties, and then select the Advanced tab.
41
Silently Installing or Upgrading the Oracle VirtIO Drivers for Microsoft Windows
1. Copy the Oracle VirtIO Drivers for Microsoft Windows installation program, Setup.exe, to the guest.
b. Run the Setup.exe -r command to begin the upgrade and create a response file for silent
installations.
3. If prompted, select Yes in the User Account Control dialog to allow the Oracle VirtIO Drivers for
Microsoft Windows installer to proceed.
Figure 5.1 Oracle VirtIO Drivers for Microsoft Windows user account control dialog
The installation program then copies new versions of the Oracle VirtIO Drivers for Microsoft Windows to
the system and updates the installed drivers. The Update Complete window is displayed.
5. Click Yes, I want to restart the system now and then click Finish to restart the virtual machine.
If you used the -r option in the command line, the installation program creates a response file in the C:
\Windows directory. You then use the response file, setup.iss, to perform silent upgrades on other
Microsoft Windows guests. See Section 5.6, “Silently Installing or Upgrading the Oracle VirtIO Drivers for
Microsoft Windows”.
42
Uninstalling the Oracle VirtIO Drivers for Microsoft Windows
Important
To install or upgrade the Oracle VirtIO Drivers for Microsoft Windows silently:
1. Complete at least one installation or upgrade of the Oracle VirtIO Drivers for Microsoft Windows by
using the GUI installation program to create a response file. See Section 5.4.1.2, “Installing Oracle
VirtIO Drivers for Microsoft Windows” or Section 5.5, “Upgrading the Oracle VirtIO Drivers for Microsoft
Windows”.
2. Locate the response file, setup.iss, in the C:\Windows directory on the file system of the computer
where you ran the graphical installation program.
3. Copy setup.iss to the same directory as the Oracle VirtIO Drivers for Microsoft Windows installation
program. Alternatively you can specify the location of the response file at the command line.
5. Run the Setup.exe -s command to silently install or upgrade the Oracle VirtIO Drivers for Microsoft
Windows with the response file.
1. Open the control panel and navigate to the Uninstall or change a program section.
Note that the name of this section might be different, depending on your version of Microsoft Windows.
2. Locate, then select the Oracle VirtIO Drivers for Microsoft Windows.
The installation program starts and prompts you to confirm the uninstallation.
43
Known Limitations and Workarounds
The installation program removes the Oracle VirtIO Drivers for Microsoft Windows and deletes the
binaries from your system.
5. When prompted, select Yes, restart the system and then click Finish to complete the uninstallation.
1. Double click Setup.exe to start the Oracle VirtIO Drivers for Microsoft Windows installer.
The installation program starts and prompts you to modify the current installation.
The installation program removes the Oracle VirtIO Drivers for Microsoft Windows and deletes the
binaries from your system.
4. When prompted, select Yes, restart the system and then click Finish to complete the uninstallation.
44
Security Alert for Unsigned Drivers
On 32-bit Microsoft Windows operating systems, the installer displays security alerts such as the following
for each driver:
On Microsoft Windows Server 2003, the installer displays a security alert similar to the following:
The driver software you are installing has not been properly signed with
Authenticode Technology. Therefore, Windows cannot tell if the software
has been modified since it was published. The publisher's identity cannot
be verified because of a problem:
The following image is an example of the security alert on Microsoft Windows Server 2003.
45
Security Alert for Unsigned Drivers
To continue the installation, click Yes. Then, click Continue Anyway when the installer displays a
message similar to the following:
The software you are installing has not passed Windows Logo testing to verify
its compatibility with this version of Windows.
Continuing your installation of this software may impair or destabilize the correct
operation of your system either immediately or in the future. Microsoft strongly
recommends that you stop this installation now and contact the software vendor
for software that has passed Windows Logo testing.
46
Found New Hardware Wizard Displayed
Workaround: Click Cancel to ignore the message and close the dialog box.
5.8.3 Microsoft Windows Server 2012 Data Center Guests With Failover
Clustering Cannot Get IP Address
A Microsoft Windows Server 2012 data center guest may fail to get an IP address from a DHCP server or
encounter a UDP connection failure after installing the Windows Server Failover Clustering feature and
restarting the guest.
Note
This issue does not apply to Microsoft Windows Server 2012 R2. The issue affects
only Microsoft Windows Server 2012.
Workaround:
• If you experience further Windows Server Failover Clustering failures with Microsoft Windows Server
2012, see Recommended hotfixes and updates for Windows Server 2012-based clusters on Microsoft
Support at: https://support.microsoft.com/en-us/help/2784261.
47
48