[Libguestfs] New tool proposal

Richard W.M. Jones rjones at redhat.com
Wed May 23 09:09:18 UTC 2012


On Wed, May 23, 2012 at 04:45:22PM +0800, Wanlong Gao wrote:
> Kame gave me a very good detail about the use case of virt-diff example, now
> quoted them for you,
> 
> > Anyway, in above scheme, we cannot compare the files of the same size.
[...]

virt-ls can find the differences if you use the --checksum option,
because this computes a checksum over the whole file content.  If its
just the file date which has changed, it's cheaper to use the --times
option.

http://libguestfs.org/virt-ls.1.html#checksum
http://libguestfs.org/virt-ls.1.html#recursive_long_listing

> > In another point of view....
> > 
> > In your example in mailing list, you compares 2 files.
> > 
> > But, now, I _think_ what users really want is a command like following.
> > 
> > Following command is comparing guest's file of Guest01...Guest04 with Guest00.
> > 
> > # virt-diff -seed Guest00 -name Guest01 -name Guest02 -name Guest03 -name Guest04 /etc/hogehoge
> > Guest03:/etc/hogehoge is differ.
> > diff result...
> > 
> > In this case, only Guest03 has a different contents of the file.
> > 
> > For system-admin, this means...
> > - Guest00,01,02,04 are correct and 03 is wrong
> > or
> > - Guest03 is correct and Guest00,01,02,04 are wrong.
> > or
> > - Guest03 has different settings intentionally and he confirmed that.
> > 
> > This command will be very good for system-admin.
> 
> Then, any thoughts about this tool ?

It sounds useful, but I think you could still implement this on top of
virt-ls.

> and more thoughts about implementing this ?
> We should implement a "diff" wrapper in the guestfsd, and use this API when
> implementing this tool or any other methods?

The problem with adding 'diff' as an operation to the daemon is that
you would need to attach the disks from multiple guests to a single
appliance.  This is in general problematic, although we do it in some
limited cases:

http://libguestfs.org/guestfs-performance.1.html#reducing_the_number_of_times_the_appliance_is_launched

If you wanted to write a separate virt-diff tool, it's probably a good
idea to start with the source of virt-ls and work from there.  That
program already knows how to iterate over the filesystem (of a single
guest), and you could build diff functionality on top of that:

https://github.com/libguestfs/libguestfs/blob/0e05e9f6ce696cf2a5172eda3fe054367164106b/cat/virt-ls.c#L509

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming blog: http://rwmj.wordpress.com
Fedora now supports 80 OCaml packages (the OPEN alternative to F#)
http://cocan.org/getting_started_with_ocaml_on_red_hat_and_fedora




More information about the Libguestfs mailing list