]> pere.pagekite.me Git - homepage.git/blobdiff - blog/index.html
Generated.
[homepage.git] / blog / index.html
index 822df7bb18f62f9afbbdae4deea04a1d9994ac12..d177f6ab8204b41b5c7cdcd33e065bf86a3dd65d 100644 (file)
 
 
  
+ <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>
+ </div>
+ <div class="padding"></div>
  <div class="entry">
   <div class="title"><a href="http://people.skolelinux.org/pere/blog/Lenny__Squeeze_upgrades__apt_vs_aptitude_with_the_Gnome_and_KDE_desktop.html">Lenny->Squeeze upgrades, apt vs aptitude with the Gnome and KDE desktop</a></div>
   <div class="date">2010-11-20 22:50</div>
@@ -800,51 +887,6 @@ NRK1. :)</p>
  </div>
  <div class="padding"></div>
  
- <div class="entry">
-  <div class="title"><a href="http://people.skolelinux.org/pere/blog/Software_updates_2010_10_24.html">Software updates 2010-10-24</a></div>
-  <div class="date">2010-10-24 22:45</div>
-  <div class="body">
-<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>
-</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>, <a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia</a>. 
-  
-  </div>
- </div>
- <div class="padding"></div>
  <p style="text-align: right;"><a href="index.rss"><img src="http://people.skolelinux.org/pere/blog/xml.gif" alt="RSS feed" width="36" height="14"></a></p>
 
 <div id="sidebar">
@@ -879,7 +921,7 @@ clients to get a Linux desktop on request.</p>
 
 <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>
 
@@ -936,11 +978,11 @@ clients to get a Linux desktop on request.</p>
 
  <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>
 
@@ -989,7 +1031,7 @@ clients to get a Linux desktop on request.</p>
 </div>
 
 <p style="text-align: right">
-Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v3.7</a>
+Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v3.2</a>
 </p>
 </body>
 </html>