]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commit
Efficient volume copy for generic volume migration
authorMitsuhiro Tanino <mitsuhiro.tanino@hds.com>
Mon, 27 Jul 2015 03:15:58 +0000 (23:15 -0400)
committerMitsuhiro Tanino <mitsuhiro.tanino@hds.com>
Fri, 28 Aug 2015 14:15:29 +0000 (10:15 -0400)
commit0982ad131f74095e80b78d9b2f79271c3fa062f9
treef733b37c6fef911cf3bee6992d5cc74746d27145
parent0e2783360ce730beed3423bee31ad9726a51c8e1
Efficient volume copy for generic volume migration

Currently Cinder uses dd command for data copy of volume migration,
but the copy always copy full blocks even if the source data contains
many null and zero blocks. The dd command has an option conv=sparse
to skip null or zero blocks for more efficient data copy.

However, if the destination volume is not zero cleared beforehand,
we should copy full block from source to dest volume to cleanup dest
volume in order to avoid security issue.
If the volume pre-initilization(zero cleared) is ensured beforehand,
we can skip copy of null and zero blocks to destination volume by
using sparse copy.

In order to use this option properly, we have to check
sparse_copy_volume capability for destination backend driver via
RPC API before volume copy.

This patch also adds sparse_copy_volume capability flag into volume
stats of LVM and NFS drivers to enable efficient copy for these
backends.

Implements: blueprint efficient-volume-copy-for-cinder-assisted-migration
Change-Id: Ic343860d37276907724fce3a9c0f7c9d034c4aaa
cinder/tests/unit/test_nfs.py
cinder/tests/unit/test_volume.py
cinder/volume/driver.py
cinder/volume/drivers/lvm.py
cinder/volume/drivers/nfs.py