How to install mdadm on citrix xen 6.5

For some reason citrix doesn’t like mdadm so they make everything possible to stop it from working on their xen server.

Here is a guide that would make it work there, but it may not survive system patching


Connect at least 2 disks to your box. Install a xen server without local storage on first disk.

Installing mdadm

The default install contains mdadm but it doesn’t load raid modules to kernel. In order to enable it, following needs to be done:

Partitioning the disks

Now we create a final schema we want to use on our server on disk /dev/sdb, xen needs to have at least 3 partitions, 1 is for boot loader, second is for OS, I recommend 20gb or more, because this disk is pretty much impossible to extend, although citrix defaults it to 4GB, last partition is for local storage and it should take all remaining space on disk.

Note: Citrix by default creates 3 partitions, 1 for OS, second is empty, same sized as first one and probably used for system upgrade. Third is used for local storage LVM. You don’t have to create second partition for it to work, but system upgrades may not be available if you don’t create it. On other hand system upgrades will likely not work anyway as citrix doesn’t support mdadm installations.

In this guide I will use old MS-DOS partition table because although it’s old, it’s much better supported and it just works. You can also use GPT partitions if you want, but I had some issues getting them work with mdadm and syslinux.

We will have a separate /boot partition for boot loader, because syslinux shipped with xen is having troubles booting from raid device for some reason.

So this is how the layout of sdb should look after we finish the partitioning:

  • /dev/sdb1 (2 GB) for bootloader
  • /dev/sdb2 (20 GB) for OS
  • /dev/sdb3 (rest) for LVM

Now you should be able to boot from /dev/sdb if you are not there is something wrong with the setup, you need to figure out if your problem is with

  • MBR (No bootable device)
  • Boot loader (Missing operating system.)
  • /boot (Linux will start booting but die in progress – try removing quiet and splash from parameters)

 Syncing the disks

Now if you were able to boot up you need to setup the sda disk

Create the same 3 partitions as you did on sdb on sda and then



Hello Peter, how are you? Very interesting your post, but I have a doubt in this topic:
# Fix /mnt/etc/fstab – replace LABEL with /dev/md0 and insert a record for /boot
# Update boot loader
Could you give a example, please?

I'm newbie and need a little help.

Thanks in advance


Ricardo Souza

Hello, sure if you open /etc/fstab you will probably see line that instead of path to block device (/dev/sda1 for example) uses something like UUID=330157f9-0fe0-4534-9c1f-015a28fbd3f5 or LABEL=id you need to replace this with /dev/md0 so that fstab contains the reference to multidisk array instead of the original partition.

The same of course applies for the boot loader, you need to open /boot/extlinux.conf and replace old root= with root=/dev/md0

BTW because the original installation doesn't have /boot in separate partition you will also need to add extra line for it into /etc/fstab so that the system knows it needs to mount it on next boot.

Leave a Reply

Your email address will not be published. Required fields are marked *