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
|
|
|