From Xen
Revision as of 17:15, 29 November 2011 by Lars.kurth (talk | contribs)

Icon todo.png To Do:

Images and other attachments are missing!

This page describes a possible design for Cross-pool migration (which also works for within-pool migration with and without shared storage).

This is an alternative design to CrossPoolMigrationV2

This design has the following features:

  1. tapdisk log-dirty is used to build an efficient continuous disk copy program
    • this is storage-format agnostic: it doesn't require .vhd
  2. the SM on one host can generate URIs which can be used by other SMs to access disks over iSCSI on the storage network
  3. 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
  4. a single codepath is used in xapi, making testing easier
    • this replaces the existing migration API
  5. a simple RESTful API makes the whole thing quite easy to test, prod etc.
  6. the xapi pieces and the SM pieces can be developed and tested independently and integrated at the end

Component diagram

Media:CrossPoolMigration$components.pdf CrossPoolMigration$components.png

Migration sequence

Media:CrossPoolMigration$migrate.pdf CrossPoolMigration$migrate.png

Proposed milestones and task list

The following milestones are proposed:

Milestone number

The following tasks are proposed:

Task Status
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.