WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-users

Re: [Xen-users] cloning guests between Dom0's ?

Ferreira, N. L. (Nuno) wrote:
I wrote those steps mainly based on :

http://www.howtoforge.com/linux_lvm
http://www.howtoforge.com/linux_lvm_snapshots

From my experience (short), I was able to clone VM's (SL 47) this way (and backup of course). No problems in particular.
Instead of using tar, dd could also be used (but larger files).

As Fajar wrote, it'll work provided you have a robust enough filesystem. The links you provide are fine when the machine making the snapshot is the same as the machine writing files to the volume - because when you read a block off disk, the OS will automatically give you any 'dirty' block from cache if there is one.

Ie, one process writes a chunk of data and it goes into cache as dirty blocks - but has NOT yet been written to disk. Another process goes to read that data, the OS will see that the data is cached, and serve up the cached blocks. So you get a consistent view of the filesystem.

When the machine running LVM and making the snapshot (Dom0) is NOT the same as the one running the filesystem (DomU), then the snapshot will be whatever has actually been committed to disk by the DomU rather than the cached version of what will be on the disk when the cache gets written. This can give you a really messed up view of what's on the disk.

In theory, a good journaling filesystem should be able to roll back/roll forward updates to give a consistent view at some point, but personally I would prefer not to have to do this. As Fajar points out, your view of the volume from Dom0 will be very much like the result of pulling the power plug on a server.

You can minimise the problem by running "sync" on the guest and creating the snapshot as soon as sync completes - that way, you minimise the amount of unwritten data in the guest's cache.

Is there a better way to do this? I'm just a newbie on this strange world, trying to do my best ;-)

My personal preference is to do one of the following :

1)
Shutdown the guest cleanly, mount it's filesystem(s) in Dom0, copy the files contained (rsync is my favourite tool for this). It gives by far the cleanest copy as everything will have been closed, no files open, etc - and nothing should change while the copy is in progress.

2)
If shutting down the guest isn't practical, then bring up the machine that you are going to clone into, and use a tool like rsync to copy (across the network) the guest you want to clone - running it from the guest being cloned. You'll want to exclude non-fs stuff like /dev and /proc, and you'll probably want to exclude client-specific stuff (eg /etc/network/interfaces on a Debian system). Note that you'll still have issues with things like database files - you're clone may well have 'unclean' files which (depending on activity and database) may be repairable or unusable. Much like cloning a guest - when you clone a database, best to either shut down the database during the copy, or use the database tools to export/copy it.

For convenience, once I'd got a basic minimal client image, I then kept this as a template so I can clone it using method 1 to get a running client quickly, and then use method 2 to make it a clone of something else.


At the end of the day, there isn't a "right" way - everyone has their own method that they use - and often it comes down to what tools you are familiar/comfortable with.

--
Simon Hobson

Visit http://www.magpiesnestpublishing.co.uk/ for books by acclaimed
author Gladys Hobson. Novels - poetry - short stories - ideal as
Christmas stocking fillers. Some available as e-books.

_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users