Richard-
On Sun, Feb 08, 2015 at 12:11:37PM -0600, Jeff Brower wrote:
> With continuous loop testing, what we found is that we have to shut
> down and re-launch the image handle to see changes on the Win7 live
> guest. Unfortunately image re-launch takes time, 3-5 sec (the image
> size is 50 GByte). I'm assuming this is because libguestfs makes an
> internal copy of filesystem, and works from that, and doesn't
> "refresh" this internal copy until re-launching the image handle.
This isn't surprising. Libguestfs doesn't make an internal copy of
the whole filesystem, but the libguestfs appliance will have a copy
(in its kernel memory) of any parts of the disk that rsync read.
See also:
http://libguestfs.org/guestfs.3.html#architecture
> Could we create a second partition on the guest that is much
> smaller, say 50 MByte, attach the image to that, and thus reduce the
> shutdown and re-launch time into the msec range? Is there another
> real-time method, not using rsync?
The time to relaunch the appliance doesn't depend on the size of the
disk.
You could try hotplugging but it may not be much faster:
http://libguestfs.org/guestfs.3.html#hotplugging
I think what you really need to do is to install a backup agent in the
Windows guest and use a regular network backup.
We don't need to use rsync. We know which files will change. For example even if we
do this (error checking removed):
while (1) {
guestfs_mount_options(g, "sync", "/dev/sda2", "/");
printf("%s\n", guestfs_cat(g, "/HostShared/temp.txt"));
guestfs_umount(g, "/");
guestfs_fsync(g);
usleep(1000*1000);
}
temp.txt from the Win7 guest is copied correctly the first time, but afterwards any change
we make to it (e.g. using
Win7 Notepad) is never seen. That's the issue. Is there any way at all to accomplish
this using libguestfs, without
re-launching the image, which is time-consuming?
Thanks.
-Jeff