This page describes a possible design for Cross-pool migration (which also works for within-pool migration with and without shared storage).
This design has the following features:
- tapdisk log-dirty is used to build an efficient continuous disk copy program
- this is storage-format agnostic: it doesn't require .vhd
- the SM on one host can generate URIs which can be used by other SMs to access disks over iSCSI on the storage network
- handling of iSCSI endpoints (both initiators and targets) is abstracted by an iSCSI service
- this is expected to simplify the current code and prevent (eg) a bug in one SM plugin from interfering with another SM plugin
- a single codepath is used in xapi, making testing easier
- this replaces the existing migration API
- a simple RESTful API makes the whole thing quite easy to test, prod etc.
- the xapi pieces and the SM pieces can be developed and tested independently and integrated at the end
Proposed milestones and task list
The following milestones are proposed:
The following tasks are proposed:
|Forward-port blktap1 log dirty mode to tapdisk2|
|Implement an iSCSI service in dom0||Completed|
|Modify VDI.deactivate to finish any pending copies|
|Implement xapi HTTP operations|
|Create a continuous copy program (use sparse_dd?)|
|Implement SMAPI VDI.copy|
|Implement SMAPI VDI.get_url|
|Implement XenAPI VM.migrate, VM.receive|
|Implement xapi HTTP heartbeat|
The iscsi-target-manager is a simple python program which wraps the "tgtadm" commands used to configure an iSCSI target.