Xen Cluster Management With Ganeti On Debian Etch - Page 5

8 Setting Up LVM On The Free HDD Space


Let's find out about our hard drive:

fdisk -l

node1:~# fdisk -l

Disk /dev/sda: 53.6 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1216     9767488+  83  Linux
/dev/sda2            1217        1338      979965   82  Linux swap / Solaris

We will now create the partition /dev/sda3 (on both physical nodes) using the rest of the hard drive and prepare it for LVM:

fdisk /dev/sda

node1:~# fdisk /dev/sda

The number of cylinders for this disk is set to 6527.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):
 <-- m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help):
 <-- n
Command action
   e   extended
   p   primary partition (1-4)

<-- p
Partition number (1-4): <-- 3
First cylinder (1339-6527, default 1339): <-- ENTER
Using default value 1339
Last cylinder or +size or +sizeM or +sizeK (1339-6527, default 6527):
 <-- ENTER
Using default value 6527 

Command (m for help):
 <-- t
Partition number (1-4): <-- 3
Hex code (type L to list codes): <-- L

 0  Empty           1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot
 1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris
 2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx
 6  FAT16           42  SFS             86  NTFS volume set da  Non-FS data
 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility
 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT
10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor
14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f4  SpeedStor
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fe  LANstep
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT
1c  Hidden W95 FAT3 75  PC/IX
Hex code (type L to list codes):
 <-- 8e
Changed system type of partition 3 to 8e (Linux LVM)

Command (m for help):
 <-- w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

Now let's take a look at our hard drive again:

fdisk -l

node1:~# fdisk -l

Disk /dev/sda: 53.6 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1216     9767488+  83  Linux
/dev/sda2            1217        1338      979965   82  Linux swap / Solaris
/dev/sda3            1339        6527    41680642+  8e  Linux LVM

Looks good. Now we must reboot both physical nodes so that the kernel can read in the new partition table:

shutdown -r now

After the reboot, we prepare /dev/sda3 for LVM on both nodes and add it to the volume group xenvg:

pvcreate /dev/sda3
vgcreate xenvg /dev/sda3

It is recommended to configure LVM not to scan the DRBD devices. Therefore we open /etc/lvm/lvm.conf and replace the filter line as follows:

vi /etc/lvm/lvm.conf
filter = [ "r|/dev/cdrom|", "r|/dev/drbd[0-9]+|" ]


9 Installing Ganeti


First, install docbook-utils:

apt-get install docbook-utils

Then download and install Ganeti as follows:

cd /tmp
wget http://ganeti.googlecode.com/files/ganeti-1.2b1.tar.gz
tar xvzf ganeti-1.2b1.tar.gz
cd ganeti-1.2b1
./configure --localstatedir=/var
make install
mkdir /srv/ganeti/ /srv/ganeti/os /srv/ganeti/export

Copy the Ganeti init script to /etc/init.d...

cp docs/examples/ganeti.initd /etc/init.d/ganeti

... and tell both nodes to start Ganeti at boot time:

update-rc.d ganeti defaults 20 80


10 Installing The Ganeti Scripts For Debian Etch Instances


Next we install the scripts that Ganeti needs to install Debian Etch in a virtual machine (or instance):

cd /srv/ganeti/os
wget http://ganeti.googlecode.com/files/instance-debian-etch-0.1.tar
tar xvf instance-debian-etch-0.1.tar
mv instance-debian-etch-0.1 debian-etch

We also need the debootstrap package:

apt-get install debootstrap
Share this page:

Suggested articles

1 Comment(s)

Add comment



This is a superb tutorial and very useful. There are a few minor tweaks needed though.

For ganeti to build you also need the python-simplejson and python-pyparsing packages.

It's a simple typo, but the init script is under the doc folder, not the docs folder.

You also need to make sure that your init script is executable.

Finally, the ganeti scripts got upset that the init script was not in /usr/local/etc/init.d/. A symbolic link fixed this.


Thanks again,