From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1N4wbG-0005J9-Qw for qemu-devel@nongnu.org; Mon, 02 Nov 2009 08:05:34 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1N4wbC-0005Cc-1m for qemu-devel@nongnu.org; Mon, 02 Nov 2009 08:05:34 -0500 Received: from [199.232.76.173] (port=54134 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1N4wbB-0005CP-Ps for qemu-devel@nongnu.org; Mon, 02 Nov 2009 08:05:29 -0500 Received: from mtagate7.uk.ibm.com ([195.212.29.140]:55609) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1N4wbB-0003l1-7F for qemu-devel@nongnu.org; Mon, 02 Nov 2009 08:05:29 -0500 Received: from d06nrmr1407.portsmouth.uk.ibm.com (d06nrmr1407.portsmouth.uk.ibm.com [9.149.38.185]) by mtagate7.uk.ibm.com (8.14.3/8.13.8) with ESMTP id nA2D5CAK272274 for ; Mon, 2 Nov 2009 13:05:17 GMT Received: from d06av01.portsmouth.uk.ibm.com (d06av01.portsmouth.uk.ibm.com [9.149.37.212]) by d06nrmr1407.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id nA2D52nc1802370 for ; Mon, 2 Nov 2009 13:05:02 GMT Received: from d06av01.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av01.portsmouth.uk.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id nA2D52Zc015537 for ; Mon, 2 Nov 2009 13:05:02 GMT From: lirans@il.ibm.com Date: Mon, 2 Nov 2009 15:40:25 +0200 Message-Id: <12571692252385-git-send-email-lirans@il.ibm.com> Subject: [Qemu-devel] [PATCH 0/3 v5] Live migration without shared storage List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Liran Schour This series adds support for live migration without shared storage, means copy the storage while migrating. It was tested with KVM. Supports 2 ways to replicate the storage during migration: 1. Complete copy of storage to destination 2. Assuming the storage is cow based, copy only the allocated data, time of the migration will be linear with the amount of allocated data (user responsibility to verify that the same backend file reside on src and destination). Live migration will work as follows: (qemu) migrate -d tcp:0:4444 # for ordinary live migration (qemu) migrate -d blk tcp:0:4444 # for live migration with complete storage copy (qemu) migrate -d blk inc tcp:0:4444 # for live migration with incremental storage copy, storage is cow based. Changes from v4: - Register block dirty tracking for each block device. - Block.c will now manage a dirty bitmap per device once bdrv_set_dirty_tracking() is called. Bitmap is polled by the upper layer (block-migration.c). - Global variabels moved to a global state structure allocated dynamically. - Coding style issues. Patch summary: Makefile | 1 + block-migration.c | 558 +++++++++++++++++++++++++++++++++++++++++++++++++++++ block-migration.h | 29 +++ block.c | 78 ++++++++- block.h | 8 +- block_int.h | 2 + buffered_file.c | 10 +- hw/hw.h | 9 +- migration-exec.c | 9 +- migration-fd.c | 7 +- migration-tcp.c | 7 +- migration-unix.c | 7 +- migration.c | 23 ++- migration.h | 20 ++- monitor.c | 36 +++- qemu-monitor.hx | 19 ++- savevm.c | 62 +++++-- sysemu.h | 2 +- vl.c | 9 +- 19 files changed, 841 insertions(+), 55 deletions(-) Signed-off-by: Liran Schour