Merge "Add unsafe profile for VM's disk"

This commit is contained in:
Zuul 2020-03-16 21:43:45 +00:00 committed by Gerrit Code Review
commit 91505272fb
2 changed files with 38 additions and 23 deletions

View File

@ -72,8 +72,8 @@ Network Configuration
#####################
The ``.networking`` key defines the network topology of the site. Each
subkey is the name of a network. Under each network name is a semi-recursive stanza
defining the layer 2 and layer 3 attributes of the network:
subkey is the name of a network. Under each network name is a semi-recursive
stanza defining the layer 2 and layer 3 attributes of the network:
.. code-block: json
@ -114,18 +114,18 @@ or
}
* roles - These strings are used to select the correct network for internal gate
functions - supported: "ssh", "dns", "bgp"
* roles - These strings are used to select the correct network for internal
gate functions - supported: "ssh", "dns", "bgp"
* layer2 - Define Layer 2 attributes
* layer3 - Valid if the ``layer2`` attribute is NOT defining VLANs, then define
Layer 3 attributes.
* layer3 - Valid if the ``layer2`` attribute is NOT defining VLANs, then
define Layer 3 attributes.
Disk Layouts
############
The ``.disk_layouts`` key defines the various disk layouts that can be assigned
to VMs being built. Each named layout key then defines one or more block devices
that will be created as file-backed volumes.
to VMs being built. Each named layout key then defines one or more block
devices that will be created as file-backed volumes.
.. code-block: json
@ -154,20 +154,25 @@ that will be created as file-backed volumes.
* size - Size of the volume in gigabytes
* io_profile - One of the below I/O configurations
* fast - In the case of a VM disruption, synchronous I/O may be lost. Better throughput.
* fast - In the case of a VM disruption, synchronous I/O may be lost.
Better throughput.
* safe - Synchronous I/O fully written to disk, slower throughput.
* bootstrap - For VMs that are bootstrapped by the framework, not Airship, use this disk
* format - For VMs that are bootstrapped by the framework, describe how the disk should be
formatted and mounted when desired.
* unsafe - Host are caching all disk IO, and sync requests from VM are
ignored. Max performance.
* bootstrap - For VMs that are bootstrapped by the framework, not Airship,
use this disk
* format - For VMs that are bootstrapped by the framework, describe how the
disk should be formatted and mounted when desired.
* type - Filesystem type (e.g. 'xfs' or 'ext4')
* mountpoint - Path to mountpoint
VM Configuration
################
Under the ``.vm`` key is a mapping of all the VMs that will be created via virt-install.
This can be a mix of VMs that are bootstrapped via virsh/cloud-init and those deployed
via Airship. Each key is the name of a VM and value is a JSON object:
Under the ``.vm`` key is a mapping of all the VMs that will be created via
virt-install. This can be a mix of VMs that are bootstrapped via
virsh/cloud-init and those deployed via Airship. Each key is the name of a VM
and value is a JSON object:
.. code-block: json
@ -214,20 +219,27 @@ via Airship. Each key is the name of a VM and value is a JSON object:
* vcpus - Number of VM CPUs
* sockets - Number of sockets. (Optional)
* threads - Number of threads. (Optional)
* disk_layout - A disk profile for the VM matching one defined under ``.disk_layouts``
* bootstrap - True/False for whether the framework should bootstrap the VM's OS
* cpu_cells - Parameter to setup NUMA nodes and allocate RAM memory. (Optional)
* disk_layout - A disk profile for the VM matching one defined under
``.disk_layouts``
* bootstrap - True/False for whether the framework should bootstrap the
VM's OS
* cpu_cells - Parameter to setup NUMA nodes and allocate RAM memory.
(Optional)
* cpu_mode - CPU mode for the VM. (if not specified, default: host)
* userdata - Cloud-init userdata to feed the VM when bootstrapped for further customization
* networking - Network attachment and addressing configuration. Every key but ``addresses``
is assumed to be a desired NIC on the VM. For each NIC stanza, the following fields are respected:
* userdata - Cloud-init userdata to feed the VM when bootstrapped for
further customization
* networking - Network attachment and addressing configuration. Every key
but ``addresses`` is assumed to be a desired NIC on the VM. For each NIC
stanza, the following fields are respected:
* mac - A MAC address for the NIC
* model - A model for the NIC (if not specified, default: virtio)
* pci - A JSON object specifying ``slot`` and ``port`` specifying the PCI address for the NIC
* pci - A JSON object specifying ``slot`` and ``port`` specifying the
PCI address for the NIC
* attachment - What network from ``.networking`` is attached to this NIC
The ``addresses`` key specifies the IP address for each layer 3 network that the VM is attached to.
The ``addresses`` key specifies the IP address for each layer 3 network
that the VM is attached to.
Stage Pipeline
##############

View File

@ -444,6 +444,9 @@ vm_create_vols(){
elif [[ "$io_prof" == "safe" ]]
then
DISK_OPTS="bus=virtio,cache=directsync,discard=unmap,format=qcow2,io=native"
elif [[ "$io_prof" == "unsafe" ]]
then
DISK_OPTS="bus=virtio,cache=unsafe,format=qcow2"
else
DISK_OPTS="bus=virtio,format=qcow2"
fi