mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
Usage: disk = ['...,colo,colo-host=xxx,colo-port=xxx,colo-export=xxx,active-disk=xxx,hidden-disk=xxx...'] For QEMU block replication details: http://wiki.qemu.org/Features/BlockReplication Note: we just introduce COLO framework, but don't implement COLO operations in this patch. Signed-off-by: Wen Congyang <wency@cn.fujitsu.com> Signed-off-by: Yang Hongyang <hongyang.yang@easystack.cn> Signed-off-by: Changlong Xie <xiecl.fnst@cn.fujitsu.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
360 lines
11 KiB
Plaintext
360 lines
11 KiB
Plaintext
---------------------
|
|
XL DISK CONFIGURATION
|
|
---------------------
|
|
|
|
This document specifies the xl config file format disk configuration
|
|
option. It has the following form:
|
|
|
|
disk = [ '<diskspec>', '<diskspec>', ... ]
|
|
|
|
where each diskspec is in this form:
|
|
|
|
[<key>=<value>|<flag>,]*,
|
|
[<target>, [<format>, [<vdev>, [<access>]]]],
|
|
[<key>=<value>|<flag>,]*
|
|
[target=<target>]
|
|
|
|
|
|
For example, these strings are equivalent:
|
|
|
|
/dev/vg/guest-volume,,hda
|
|
/dev/vg/guest-volume,raw,hda,rw
|
|
format=raw, vdev=hda, access=rw, target=/dev/vg/guest-volume
|
|
raw:/dev/vg/guest-volume,hda,w (deprecated, see below)
|
|
|
|
As are these:
|
|
|
|
/root/image.iso,,hdc,cdrom
|
|
/root/image.iso,,hdc,,cdrom
|
|
/root/image.iso,raw,hdc,devtype=cdrom
|
|
format=raw, vdev=hdc, access=ro, devtype=cdrom, target=/root/image.iso
|
|
raw:/root/image.iso,hdc:cdrom,ro (deprecated, see below)
|
|
|
|
These might be specified in the domain config file like this:
|
|
|
|
disk = [ '/dev/vg/guest-volume,,hda', '/root/image.iso,,hdc,cdrom' ]
|
|
|
|
|
|
More formally, the string is a series of comma-separated keyword/value
|
|
pairs, flags and positional parameters. Parameters which are not bare
|
|
keywords and which do not contain "=" symbols are assigned to the
|
|
so-far-unspecified positional parameters, in the order below. The
|
|
positional parameters may also be specified explicitly by name.
|
|
|
|
Each parameter may be specified at most once, either as a positional
|
|
parameter or a named parameter. Default values apply if the parameter
|
|
is not specified, or if it is specified with an empty value (whether
|
|
positionally or explicitly).
|
|
|
|
Whitespace may appear before each parameter and will be ignored.
|
|
|
|
|
|
=====================
|
|
POSITIONAL PARAMETERS
|
|
=====================
|
|
|
|
target
|
|
------
|
|
|
|
Description: Block device or image file path. When this is
|
|
used as a path, /dev will be prepended
|
|
if the path doesn't start with a '/'.
|
|
Supported values: N/A
|
|
Deprecated values: N/A
|
|
Default value: None. While a path is provided in most cases
|
|
there is an exception: for a cdrom device, lack
|
|
of this attribute would imply an empty cdrom
|
|
drive.
|
|
|
|
Special syntax:
|
|
|
|
When this parameter is specified by name, ie with the "target="
|
|
syntax in the configuration file, it consumes the whole rest of the
|
|
<diskspec> including trailing whitespaces. Therefore in that case
|
|
it must come last. This is permissible even if an empty value for
|
|
the target was already specified as a positional parameter. This
|
|
is the only way to specify a target string containing metacharacters
|
|
such as commas and (in some cases) colons, which would otherwise be
|
|
misinterpreted.
|
|
|
|
Future parameter and flag names will start with an ascii letter and
|
|
contain only ascii alphanumerics, hyphens and underscores, and will
|
|
not be legal as vdevs. Targets which might match that syntax
|
|
should not be specified as positional parameters.
|
|
|
|
|
|
format
|
|
------
|
|
|
|
Description: Specifies the format of image file.
|
|
Supported values: raw, qcow, qcow2, vhd
|
|
Deprecated values: None
|
|
Default value: raw
|
|
|
|
|
|
vdev
|
|
----
|
|
|
|
Description: Virtual device as seen by the guest (also
|
|
referred to as guest drive designation in some
|
|
specifications). See docs/misc/vbd-interface.txt.
|
|
Supported values: hd[x], xvd[x], sd[x] etc. Please refer to the
|
|
above specification for further details.
|
|
Deprecated values: None
|
|
Default Value: None, this parameter is mandatory.
|
|
|
|
|
|
access
|
|
-------
|
|
|
|
Description: Specified access control information. Whether
|
|
or not the block device is provided to the
|
|
guest in read-only or read-write mode depends
|
|
on this attribute.
|
|
Supported values: ro, r (specifies read-only)
|
|
rw, w (specifies read/write)
|
|
Deprecated values: None
|
|
Default value: rw
|
|
unless devtype=cdrom, in which case r
|
|
|
|
|
|
|
|
==========================
|
|
OTHER PARAMETERS AND FLAGS
|
|
==========================
|
|
|
|
|
|
devtype=<devtype>
|
|
-----------------
|
|
|
|
Description: Qualifies virtual device type.
|
|
Supported values: cdrom
|
|
Deprecated values: None
|
|
Mandatory: No
|
|
|
|
|
|
cdrom
|
|
-----
|
|
|
|
Convenience alias for "devtype=cdrom".
|
|
|
|
|
|
backend=<domain-name>
|
|
---------------------
|
|
|
|
Description: Designates a backend domain for the device
|
|
Supported values: Valid domain names
|
|
Mandatory: No
|
|
|
|
Specifies the backend domain which this device should attach to. This
|
|
defaults to domain 0. Specifying another domain requires setting up a
|
|
driver domain which is outside the scope of this document.
|
|
|
|
|
|
backendtype=<backend-type>
|
|
--------------------------
|
|
|
|
Description: Specifies the backend implementation to use
|
|
Supported values: phy, tap, qdisk
|
|
Mandatory: No
|
|
Default value: Automatically determine which backend to use.
|
|
|
|
This does not affect the guest's view of the device. It controls
|
|
which software implementation of the Xen backend driver is used.
|
|
|
|
Not all backend drivers support all combinations of other options.
|
|
For example, "phy" does not support formats other than "raw".
|
|
Normally this option should not be specified, in which case libxl will
|
|
automatically determine the most suitable backend.
|
|
|
|
|
|
script=<script>
|
|
---------------
|
|
|
|
Specifies that <target> is not a normal host path, but rather
|
|
information to be interpreted by the executable program <script>,
|
|
(looked for in /etc/xen/scripts, if it doesn't contain a slash).
|
|
|
|
These scripts are normally called "block-<script>".
|
|
|
|
|
|
direct-io-safe
|
|
--------------
|
|
|
|
Description: Disables non-O_DIRECT workaround
|
|
Supported values: absent, present
|
|
Mandatory: No
|
|
Default value: absent (workaround may be enabled)
|
|
|
|
There is a memory lifetime bug in some driver domain (dom0) kernels
|
|
which can cause crashes when using O_DIRECT. The bug occurs due to a
|
|
mismatch between the backend-visible lifetime of pages used for the
|
|
Xen PV network protocol and that expected by the backend kernel's
|
|
networking subsystem. This can cause crashes when using certain
|
|
backends with certain underlying storage.
|
|
|
|
See:
|
|
http://lists.xen.org/archives/html/xen-devel/2012-12/msg01154.html
|
|
|
|
For this reason, (this version of) the Xen libxl toolstack disables
|
|
O_DIRECT when using the qemu-based Xen PV backend ("qdisk").
|
|
|
|
However, this workaround has performance and scaling implications, and
|
|
it is only necessary if the underlying device is a network filesystem.
|
|
If the underlying device is not, then it is good to disable it; that
|
|
is what this option is for.
|
|
|
|
This option simply requests that the workaround be disabled. (However,
|
|
not all backends versions which use the workaround understand this
|
|
option, so this is on a best effort basis.)
|
|
|
|
It's important to note that if you are storing the VM disk on a
|
|
network filesystem or a network block device (NFS or ISCSI) it might
|
|
not be safe to use this option. Otherwise specifying it is safe and
|
|
can give better performances.
|
|
|
|
If in the future the bug is fixed properly this option will then be
|
|
silently ignored.
|
|
|
|
|
|
discard / no-discard
|
|
---------------
|
|
|
|
Description: Request that backend advertise discard support to frontend
|
|
Supported values: discard
|
|
no-discard
|
|
Mandatory: No
|
|
Default value: discard
|
|
|
|
An advisory setting for the backend driver, specifying whether to
|
|
advertise discard support (TRIM, UNMAP) to the frontend. The real
|
|
benefit of this option is to be able to force it off rather than on. It
|
|
can be used to disable "hole punching" for file based backends which
|
|
were intentionally created non-sparse to avoid fragmentation of the
|
|
file.
|
|
|
|
|
|
===============
|
|
COLO PARAMETERS
|
|
===============
|
|
|
|
|
|
colo
|
|
----
|
|
|
|
Enable COLO HA for disk. For better understanding block replication on
|
|
QEMU, please refer to:
|
|
http://wiki.qemu.org/Features/BlockReplication
|
|
Note that the COLO configuration settings should be considered unstable.
|
|
They may change incompatibly in future versions of Xen.
|
|
|
|
|
|
colo-host
|
|
---------
|
|
|
|
Description: Secondary host's address
|
|
Mandatory: Yes when COLO enabled
|
|
|
|
|
|
colo-port
|
|
---------
|
|
|
|
Description: Secondary port
|
|
We will run a nbd server on secondary host,
|
|
and the nbd server will listen this port.
|
|
Mandatory: Yes when COLO enabled
|
|
|
|
|
|
colo-export
|
|
-----------
|
|
|
|
Description: We will run a nbd server on secondary host,
|
|
exportname is the nbd server's disk export name.
|
|
Mandatory: Yes when COLO enabled
|
|
|
|
|
|
active-disk
|
|
-----------
|
|
|
|
Description: This is used by secondary. Secondary guest's write
|
|
will be buffered in this disk.
|
|
Mandatory: Yes when COLO enabled
|
|
|
|
|
|
hidden-disk
|
|
-----------
|
|
|
|
Description: This is used by secondary. It buffers the original
|
|
content that is modified by the primary VM.
|
|
Mandatory: Yes when COLO enabled
|
|
|
|
|
|
============================================
|
|
DEPRECATED PARAMETERS, PREFIXES AND SYNTAXES
|
|
============================================
|
|
|
|
Deprecated forms are acceptable and are intended work compatibly with
|
|
xend and xl from xen 4.1. In future they may print a warning.
|
|
Support for deprecated parameters and syntaxes are likely to be
|
|
dropped in future versions of xl.
|
|
|
|
|
|
There is support for a deprecated old syntax for <diskspec>:
|
|
|
|
[<format>:][<target>],<vdev>[:<devtype>],<access> (deprecated)
|
|
|
|
This syntax also supports deprecated prefixes, described below. These
|
|
are found prepended to the format parameter - eg "tap:aio:qcow:".
|
|
|
|
|
|
<format>:
|
|
---------
|
|
|
|
Description: Specifies the format (deprecated)
|
|
Supported values: raw: qcow2: vhd:
|
|
|
|
In xend and old versions of libxl it was necessary to specify the
|
|
format with a prefix. For compatibility, these three prefixes are
|
|
recognised as specifying the corresponding format. They are
|
|
equivalent to "format=<format>" or the specification of <format>
|
|
(without a colon) as a positional parameter.
|
|
|
|
|
|
<script>:
|
|
---------
|
|
|
|
Description: Specifies the script (deprecated)
|
|
Supported values: iscsi: nbd: enbd: drbd:
|
|
|
|
In xend and old versions of libxl it was necessary to specify the
|
|
"script" (see above) with a prefix. For compatibility, these four
|
|
prefixes are recognised as specifying the corresponding script. They
|
|
are equivalent to "script=block-<script>".
|
|
|
|
|
|
<deprecated-prefix>:
|
|
--------------------
|
|
|
|
Description; Deprecated prefix, ignored
|
|
Supported values: tapdisk: tap2: aio: ioemu: file: phy:
|
|
|
|
Various prefixes were required by xend and older versions of libxl to
|
|
make the block devices work. In some cases these options would
|
|
override the backend type, but in other cases they would be ignored in
|
|
favour of "making it work"; in yet other cases it would be necessary
|
|
to specify several of these, for example:
|
|
"tap:aio:/some/path..."
|
|
|
|
All of these prefixes are now stripped and ignored.
|
|
|
|
|
|
Missing format and empty target
|
|
-------------------------------
|
|
|
|
The following syntax is also supported:
|
|
|
|
,<vdev>:<devtype>,<access> (deprecated)
|
|
|
|
This is soley for compatibility with xend's syntax for empty cdroms,
|
|
which is (for example) ",hdc:cdrom,r".
|