CrossPoolMigrationv2

From Xen
Revision as of 13:02, 11 July 2013 by Lars.kurth (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search
Icon todo.png To Do:

Has this been implemented? If so, it should be moved to Designs in the XAPI Devel Index


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 CrossPoolMigrationv1 and CrossPoolMigrationv3.

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

Components (PDF)
CrossPoolMigration$components.png

Migration sequence

Migrate (PDF)
CrossPoolMigration$migrate.png

Proposed milestones and task list

The following milestones are proposed:

Milestone number
1
2
3
4

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

Links

The iscsi-target-manager is a simple python program which wraps the "tgtadm" commands used to configure an iSCSI target.