On Tue, May 29, 2012 at 02:09:16PM -0700, Alex Mandel wrote: > On 05/29/2012 11:36 AM, Brian Lavender wrote: > > On Sun, May 27, 2012 at 09:16:24AM -0700, Wes Hardaker wrote: > >> Alex Mandel <tech_...@wildintellect.com> writes: > >> > >>> I'm looking for the most efficient way to clone an LVM volume 50GB from > >>> one physical machine to another. Both machines must stay up, so that > >>> rules out clonezilla. I'd also like it to be more efficient that dd, so > >>> more similar to partimage or partclone where it skips the empty space > >>> and only copies the filled part. > >>> > >>> Anyone have examples that show how to do this? > >> > >> I'd typically use rsync... Fast and efficient :-) > > > > Assuming the lvm volume is mounted on both sides and you tunnel rsync over > > ssh. > > If you are in an internal network, you could do it over rsh and avoid the > > crypto > > overhead. > > > > cd /mnt/local > > > > Then use the the following from the rsync man page, clipped below. > > rsync uses the -e option for ssh, but I don't quite have a machine to test > > it. > > > > To synchronize my samba source trees use the following: > > > > rsync -Cavuzb . remote_machine:/mnt/local/ > > > > It is clipped from where Tridgell talks abut syncing his samba shares using > > a Makefile and samba source code for CVS commits. > > > > brian > > > > I think the tricky part here is that the lvm volume may contain multiple > partitions (I think it does have a / and a swap since it's a virtual > machine disk), and I need the partition information, including the boot > flags. > > Yes it is local network, same rack, I even have a private subnet between > the machines. > > This seems to be the foolproof way > http://www.alethe.com/brad/2008/04/move-an-lvm-based-virtual-machine-to-another-host/ > > Was just hoping I could figure out how to do it faster, clonezilla seems > fancier than just partclone though. I think I need something that dumps > the partition information too. > > Thanks, > Alex I wrote a script a while ago for this sort of situation, which assumes certain things about the VMs /etc/fstab and /boot/grub/menu.lst files, then it mounts the lvm partition filesystems in the dom0 appropriately and you could run rsync across all of them together: #!/bin/bash
export DISK=$1 export MOUNTPOINT=$2 ROOTPART=1 /sbin/kpartx -av $DISK mount "$DISK"1 $MOUNTPOINT if [ -L $MOUNTPOINT/boot ]; then ROOTPART=`cat $MOUNTPOINT/boot/grub/menu.lst | perl -nle 'if ($_ =~ /^[\s]kernel.+root=\/dev\/\p{L}+([\d])/) { print "$1"; exit}'` umount $MOUNTPOINT mount "$DISK""$ROOTPART" $MOUNTPOINT fi cat $MOUNTPOINT/etc/fstab | perl -nle 'if ($_ =~ /^\/dev\/\p{L}+([\d])[\s]+((\/\p{L}+)+)/ ) { $device=$ENV{DISK} . $1 ; $mountpoint=$ENV{MOUNTPOINT} . $2 ; system "mount $device $mountpoint"}' mixing bash and perl is a little ugly, and I don't even know if this was ever actually used for the intended purpose because it was for somebody else, but I hope it might help you! :) Nick _______________________________________________ vox-tech mailing list vox-tech@lists.lugod.org http://lists.lugod.org/mailman/listinfo/vox-tech