[Libguestfs] [PATCH libnbd] copy: Allowing copying from NBD server to NBD server.

Richard W.M. Jones rjones at redhat.com
Thu Nov 5 14:38:32 UTC 2020


This patch is a straightforward refactoring of libnbd’s nbdcopy
program, and not very interesting.

However I have plans for nbdcopy (see full todo below).  I would like
to use this utility for virt-v2v as a replacement for ”qemu-img convert”.

qemu-img has caused us a series of problems:

 - change in zeroing behaviour caused a big performance regression

 - qemu-img reads extents up-front which is problematic when reading
   from VDDK because the progress counter sticks at 0% for ages

 - no support for NBD multi-conn, leaving a lot of performance on the table

 - inflexible progress bar

The idea is to make nbdcopy into a very customizable and highly
efficient copying tool [it obviously is not right now].

Rich.

----------------------------------------------------------------------
progress bar
 - write to fd
 - machine-readable

threads
 - how many copying threads do we create

read order, write order
 - allow reads/writes in order or out of order

multi-conn
 - control it separately at either end

extents
 - do we check them at all?
 - do we check them before or as we go along?
     (probably best to always check as we go along?)
 - do we zero up front or as we go along?
     (best always as we go along?)

synchronous
 - some kind of deliberately linear mode, eg for pipes
 - with FUA on writes

--from / --to
 - send data from/to an NBD server as subprocess
 - can we do this?

block size
 - force requests to be aligned to block size

support for copying ranges
 - offset and size
 - in a later version, since this is hard to get right

io_uring(?)
 - in nbdcopy
 - in libnbd
 - later version - hard, needs benchmarking to prove it is worthwhile






More information about the Libguestfs mailing list