mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 18:21:39 +01:00
Pandoc deliberately (and contrary to markdown) doesn't treat underscores in
the middle of normal text as emphasis markers, as this is almost always the
unhelpful interpretation.
For text which is emphasised using _, an underscore in the middle is
interpreted, but the emphasis marker can be switched to * instead.
One problem case is where we use {} globbing with identifier names, as it
counts as a word break. Therefore, we do need to retain the escaped
underscore immediately following a closing brace.
No change in content - only formatting. This results in the text being easier
to read and grep.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
125 lines
3.9 KiB
Plaintext
125 lines
3.9 KiB
Plaintext
% Migration
|
|
% Revision 2
|
|
|
|
\clearpage
|
|
|
|
# Basics
|
|
--------------- -------------
|
|
Status: **Supported**
|
|
|
|
Architecture: x86
|
|
|
|
Component: Toolstack
|
|
--------------- -------------
|
|
|
|
# Overview
|
|
|
|
Migration is a mechanism to move a virtual machine while the VM is
|
|
running. Live migration moves a running virtual machine between two
|
|
physical servers, but the same mechanism can be used for non-live
|
|
migration (pause and copy) and suspend/resume from disk.
|
|
|
|
# User details
|
|
|
|
No hardware requirements, although hypervisor logdirty support is
|
|
required for live migration.
|
|
|
|
From the command line, `xl migrate/save/restore` are the top level
|
|
interactions. e.g.
|
|
|
|
xl create my-vm.cfg
|
|
xl migrate my-vm localhost
|
|
|
|
or
|
|
|
|
xl create my-vm.cfg
|
|
xl save my-vm /path/to/save/file
|
|
xl restore /path/to/save/file
|
|
|
|
Xen 4.6 sees the introduction of Migration v2. There is no change for
|
|
people using `xl`, although the `libxl` API has had an extension.
|
|
|
|
# Technical details
|
|
|
|
Migration is formed of several layers. `libxc` is responsible for the
|
|
contents of the VM (ram, vcpus, etc) and the live migration loop, while
|
|
`libxl` is responsible for items such as emulator state.
|
|
|
|
The format of the migration v2 stream is specified in two documents, and
|
|
is architecture neutral. Compatibility with legacy streams is
|
|
maintained via the `convert-legacy-stream` script which transforms a
|
|
legacy stream into a migration v2 stream.
|
|
|
|
* Documents
|
|
* `docs/specs/libxc-migration-stream.pandoc`
|
|
* `docs/specs/libxl-migration-stream.pandoc`
|
|
* `libxc`
|
|
* `tools/libxc/xc_sr_*.[hc]`
|
|
* `libxl`
|
|
* `tools/libxl/libxl_stream_{read,write}.c`
|
|
* `tools/libxl/libxl_convert_callout.c`
|
|
* Scripts
|
|
* `tools/python/xen/migration/*.py`
|
|
* `tools/python/scripts/convert-legacy-stream`
|
|
* `tools/python/scripts/verify-stream-v2`
|
|
|
|
## libxl
|
|
|
|
With migration v2 support, LIBXL_HAVE_SRM_V2 and LIBXL_HAVE_SRM_V1
|
|
are introduced to indicate support. `domain_restore_params` gains a new
|
|
parameter, `stream_version`, which is used to distinguish between legacy and
|
|
v2 migration streams, and hence whether legacy conversion is required.
|
|
|
|
# Limitations
|
|
|
|
Hypervisor logdirty support is incompatible with hardware passthrough,
|
|
as IOMMU faults cannot be used to track writes.
|
|
|
|
While not a bug in migration specifically, VMs are very sensitive to
|
|
changes in cpuid information, and cpuid levelling support currently has
|
|
its issues. Extreme care should be taken when migrating VMs between
|
|
non-identical CPUs until the cpuid levelling improvements are complete.
|
|
|
|
# Testing
|
|
|
|
Changes in libxc should be tested with every guest type (32bit PV, 64bit
|
|
PV, HVM), while changes in libxl should test HVM guests with both
|
|
qemu-traditional and qemu-upstream.
|
|
|
|
In general, testing can be done on a single host using `xl
|
|
save/restore` or `xl migrate $VM localhost`.
|
|
|
|
Any changes to the conversion script should be tested in all upgrade
|
|
scenarios, which will involve starting with VMs from Xen 4.5
|
|
|
|
# Areas for improvement
|
|
|
|
* Arm support
|
|
* Live looping parameters
|
|
|
|
# Known issues
|
|
|
|
* x86 HVM guest physmap operations (not reflected in logdirty bitmap)
|
|
* x86 HVM with PoD pages (attempts to map cause PoD allocations)
|
|
* x86 HVM with nested-virt (no relevant information included in the
|
|
stream)
|
|
* x86 PV ballooning (P2M marked dirty, target frame not marked)
|
|
* x86 PV P2M structure changes (not noticed, stale mappings used) for
|
|
guests not using the linear p2m layout
|
|
|
|
# References
|
|
|
|
Xen Developer Summit 2015 Presentation
|
|
[video](https://www.youtube.com/watch?v=RwiDeG21lrc) and
|
|
[slides](http://events.linuxfoundation.org/sites/events/files/slides/migv2.pdf)
|
|
for Migration v2
|
|
|
|
# History
|
|
|
|
------------------------------------------------------------------------
|
|
Date Revision Version Notes
|
|
---------- -------- -------- -------------------------------------------
|
|
2015-10-24 1 Xen 4.6 Document written
|
|
2015-12-11 2 Xen 4.7 Support of linear p2m list
|
|
---------- -------- -------- -------------------------------------------
|