[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-users] How do I create an initrd for a vm that is using lvm ?

I hope this comes in handy for someone else.


Solution for CentOs 5.3:

The idea here was to clone a VM and change the VM's LVM group so that each
VM has its own group.  I wanted each VM to have its own LVM group just to
avoid my own stupid mistakes such as fsck'ing a VM's root partition but
it on the wrong VM (especially bad if the VM is running)! 
        - this is possible if all VM's have the same LVM group name (VG00)
as doing a "vgchange -ay VG00" would get 
          whatever VM image happened to be dkpart'd at the time.
        - by having each VM with an LVM group containing its VMname, eg.
VG_VM10 is VM10's volume group, the
          chances of error is reduced somewhat
Just one more level of protection...

Instead of re-creating the initrd I unpacked the cloned initrd modified the
"init" script and then re-packed it.  Other changes were needed in the root
filesystem & grub/menu.lst to match this change as outlined below.

This clones a VM image dd'd onto an iSCSI volume, changing the LVM group
from VG_VM09 to VG_VM10:

# create the clone
dd if=/dev/iscsi/6002219000bde59b0000000049cafede/part9
of=/dev/iscsi/6002219000bde59b0000000049cafede/part10 bs=1024K

# mount the VM's /boot to get at grub/menu.lst and initrd
losetup -o $((512*63)) /dev/loop1
        - the (512 * 63) are the (units * start) from fdisk -lu
mount -t ext3 /dev/loop1 /mnt

# unpack the initrd, modify it, pack it again
cd /mnt
mkdir tmp
cd tmp
cat ../initrd-2.6.18-128.el5xen.img | gunzip | cpio --extract
vi "init" 
        - search for VG_VM09 and change it to VG_VM10
mv ../initrd-2.6.18-128.el5xen.img ../initrd-2.6.18-128.el5xen.img.orig
find . | cpio --quiet -c -o | gzip > ../initrd-2.6.18-128.el5xen.img
cd ..
rm -rf tmp

# Update menu.lst to point to the new root path 
cd grub
edit menu.lst
        - change root path using new VG_VM10 path

# cleanup access to /boot
umount /mnt
losetup -d /dev/loop1

# Create access to the root filesystem of the newly cloned VM
kpartx -av /dev/iscsi/6002219000bde59b0000000049cafede/part10

# Change the volume group name
vgrename VG_VM09 VG_VM10
vgchange -ay VG_VM10
mount /dev/VG_VM10/root /mnt

cd /mnt
vi etc/fstab
        - change path to swap & root to be VG_VM10
vi etc/blkid/blkid.tab
        - change paths to use VG_VM10
        - not sure if this is really necessary to do as it is created by
          blkid but I am not sure when
vi etc/sysconfig/network
        - change nodename
vi etc/sysconfig/network-scripts/ifcfg-eth0
        - update MAC
        - update IP (if needed)
vi etc/hosts
        - update nodename

rm etc/lvm/archive/*
        - just for cleanlyness

# Clean up access to VM's root
umount /mnt
vgchange -an VG_VM10
kpartx -dv /dev/iscsi/6002219000bde59b0000000049cafede/part10

cp /etc/xen/vm09 /etc/xen/vm10
        - edit vm10 config to change the name, uuid, vif/mac and disk

xm create vm10
View this message in context: 
Sent from the Xen - User mailing list archive at Nabble.com.

Xen-users mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.