]> pere.pagekite.me Git - homepage.git/blobdiff - blog/archive/2010/11/index.html
Generated.
[homepage.git] / blog / archive / 2010 / 11 / index.html
index eabd92132f3c89ef855a2f4cee63eac36c746a6c..1ed4b47fe3f3a7328a8f5976cb12043c3331b890 100644 (file)
@@ -695,6 +695,100 @@ Installed using apt-get, removed with aptitude
  
 
  
+  Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
+ </div>
+</div>
+ <div class="padding"></div>
+
+<div class="entry">
+ <div class="title">
+ <a href="http://people.skolelinux.org/pere/blog/Migrating_Xen_virtual_machines_using_LVM_to_KVM_using_disk_images.html">Migrating Xen virtual machines using LVM to KVM using disk images</a>
+ </div>
+ <div class="date">
+  2010-11-22 11:20
+ </div>
+
+ <div class="body">
+  
+<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>
+
+ </div>
+ <div class="tags">
+
   Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>.
  
  </div>
@@ -733,7 +827,7 @@ Installed using apt-get, removed with aptitude
 
 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
 
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (8)</a></li>
+<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (9)</a></li>
 
 </ul></li>
 
@@ -790,11 +884,11 @@ Installed using apt-get, removed with aptitude
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (10)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (40)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (41)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (48)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (49)</a></li>
 
- <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (69)</a></li>
+ <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (70)</a></li>
 
  <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (1)</a></li>