X-Git-Url: https://pere.pagekite.me/gitweb/homepage.git/blobdiff_plain/71aeea56d24c27fedf97c11797baadbf0523f1a3..73aaf2c83ac56f22ee70aa8fc65e6c17e0a8162a:/blog/index.rss diff --git a/blog/index.rss b/blog/index.rss index 888b692567..f5b5213a21 100644 --- a/blog/index.rss +++ b/blog/index.rss @@ -6,6 +6,87 @@ http://people.skolelinux.org/pere/blog/ + + Migrating Xen virtual machines using LVM to KVM using disk images + http://people.skolelinux.org/pere/blog/Migrating_Xen_virtual_machines_using_LVM_to_KVM_using_disk_images.html + http://people.skolelinux.org/pere/blog/Migrating_Xen_virtual_machines_using_LVM_to_KVM_using_disk_images.html + Mon, 22 Nov 2010 11:20:00 +0100 + +<p>Most of the computers in use by the +<a href="http://www.skolelinux.org/">Debian Edu/Skolelinux project</a> +are virtual machines. And they have been Xen machines running on a +fairly old IBM eserver xseries 345 machine, and we wanted to migrate +them to KVM on a newer Dell PowerEdge 2950 host machine. This was a +bit harder that it could have been, because we set up the Xen virtual +machines to get the virtual partitions from LVM, which as far as I +know is not supported by KVM. So to migrate, we had to convert +several LVM logical volumes to partitions on a virtual disk file.</p> + +<p>I found +<a href="http://searchnetworking.techtarget.com.au/articles/35011-Six-steps-for-migrating-Xen-virtual-machines-to-KVM">a +nice recipe</a> to do this, and wrote the following script to do the +migration. It uses qemu-img from the qemu package to make the disk +image, parted to partition it, losetup and kpartx to present the disk +image partions as devices, and dd to copy the data. I NFS mounted the +new servers storage area on the old server to do the migration.</p> + +<pre> +#!/bin/sh + +# Based on +# http://searchnetworking.techtarget.com.au/articles/35011-Six-steps-for-migrating-Xen-virtual-machines-to-KVM + +set -e +set -x + +if [ -z "$1" ] ; then + echo "Usage: $0 &lt;hostname&gt;" + exit 1 +else + host="$1" +fi + +if [ ! -e /dev/vg_data/$host-disk ] ; then + echo "error: unable to find LVM volume for $host" + exit 1 +fi + +# Partitions need to be a bit bigger than the LVM LVs. not sure why. +disksize=$( lvs --units m | grep $host-disk | awk '{sum = sum + $4} END { print int(sum * 1.05) }') +swapsize=$( lvs --units m | grep $host-swap | awk '{sum = sum + $4} END { print int(sum * 1.05) }') +totalsize=$(( ( $disksize + $swapsize ) )) + +img=$host.img +#dd if=/dev/zero of=$img bs=1M count=$(( $disksize + $swapsize )) +qemu-img create $img ${totalsize}MMaking room on the Debian Edu/Sqeeze DVD + +parted $img mklabel msdos +parted $img mkpart primary linux-swap 0 $disksize +parted $img mkpart primary ext2 $disksize $totalsize +parted $img set 1 boot on + +modprobe dm-mod +losetup /dev/loop0 $img +kpartx -a /dev/loop0 + +dd if=/dev/vg_data/$host-disk of=/dev/mapper/loop0p1 bs=1M +fsck.ext3 -f /dev/mapper/loop0p1 || true +mkswap /dev/mapper/loop0p2 + +kpartx -d /dev/loop0 +losetup -d /dev/loop0 +</pre> + +<p>The script is perhaps so simple that it is not copyrightable, but +if it is, it is licenced using GPL v2 or later at your discretion.</p> + +<p>After doing this, I booted a Debian CD in rescue mode in KVM with +the new disk image attached, installed grub-pc and linux-image-686 and +set up grub to boot from the disk image. After this, the KVM machines +seem to work just fine.</p> + + + Lenny->Squeeze upgrades, apt vs aptitude with the Gnome and KDE desktop http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_and_KDE_desktop.html @@ -733,44 +814,5 @@ NRK1. :)</p> - - Software updates 2010-10-24 - http://people.skolelinux.org/pere/blog/Software_updates_2010_10_24.html - http://people.skolelinux.org/pere/blog/Software_updates_2010_10_24.html - Sun, 24 Oct 2010 22:45:00 +0200 - -<p>Some updates.</p> - -<p>My <a href="http://pledgebank.com/gnash-avm2">gnash pledge</a> to -raise money for the project is going well. The lower limit of 10 -signers was reached in 24 hours, and so far 13 people have signed it. -More signers and more funding is most welcome, and I am really curious -how far we can get before the time limit of December 24 is reached. -:)</p> - -<p>On the #gnash IRC channel on irc.freenode.net, I was just tipped -about what appear to be a great code coverage tool capable of -generating code coverage stats without any changes to the source code. -It is called -<a href="http://simonkagstrom.github.com/kcov/index.html">kcov</a>, -and can be used using <tt>kcov &lt;directory&gt; &lt;binary&gt;</tt>. -It is missing in Debian, but the git source built just fine in Squeeze -after I installed libelf-dev, libdwarf-dev, pkg-config and -libglib2.0-dev. Failed to build in Lenny, but suspect that is -solvable. I hope kcov make it into Debian soon.</p> - -<p>Finally found time to wrap up the release notes for <a -href="http://lists.debian.org/debian-edu-announce/2010/10/msg00002.html">a -new alpha release of Debian Edu</a>, and just published the second -alpha test release of the Squeeze based Debian Edu / -<a href="http://www.skolelinux.org/">Skolelinux</a> -release. Give it a try if you need a complete linux solution for your -school, including central infrastructure server, workstations, thin -client servers and diskless workstations. A nice touch added -yesterday is RDP support on the thin client servers, for windows -clients to get a Linux desktop on request.</p> - - -