Inhaltsverzeichnis

, ,

Software-Raid mit Citrix XenServer

Wie viele „professionelle“ Virtualisierungslösungen unterstützt XenServer die native Installation auf einem Software-Raid nicht. Man kann bei der Installation jedoch mit einigen Klimmzügen das System auf ein Software Raid verschieben.

Skriptgestütztes Vorgehen

Ausgangslage: Das Zielsystem hat zwei identische Festplatten eingebaut, die als Raid-1 genutzt werden sollen.

Nach dem Reboot Hilfsskripte holen und auspacken:

wget https://github.com/ironiemix/xenserver-scripts/archive/master.zip -O xenserver-scripts.zip
unzip xenserver-scripts.zip
cd xenserver-scripts-master/software-raid/

Nun muss man kontrollieren, ob die Platten wirklich /dev/sda und /dev/sdb heißen. Wenn nicht muss man die Devices in der Datei makeraid.conf entsprechend anpassen.

Klonen der Partitionierung und Neustart

Nun kann die Partitionierung von Platte 1 auf Platte 2 kopiert werden:

./01-clonedisk-and-reboot

Nachdem diesem Vorgang startet der Server neu.

Kopieren des Systems auf ein unvollständiges Raid-Array

Jetzt kann man mit dem Skript 02-prepare-chroot

 cd xenserver-scripts-master/software-raid
 ./02-prepare-chroot

aus den Partitionen auf der zweiten Platte ein unvollständiges Raid-Array erzeugen lassen. Anschließend wird das System von der ersten Platte auf das neue Array kopiert.

Das Ende der Ausgaben sollte in etwa so aussehen:

  [...]
  „/boot/extlinux/menu.c32“ -> „/mnt/boot/extlinux/menu.c32“
  „/boot/extlinux/gfxboot.c32“ -> „/mnt/boot/extlinux/gfxboot.c32“
  „/boot/extlinux/vpdtest.c32“ -> „/mnt/boot/extlinux/vpdtest.c32“
  „/boot/extlinux/memdisk“ -> „/mnt/boot/extlinux/memdisk“
  „/boot/extlinux/hdt.c32“ -> „/mnt/boot/extlinux/hdt.c32“
   done.
  Modifying /mnt/etc/fstab...  done.
  Mounting /dev/ sysfs and proc to changeroot ...  done.
  /boot is device /dev/md0
  0+1 Datensätze ein
  0+1 Datensätze aus
  440 Bytes (440 B) kopiert, 0,031085 Sekunden, 14,2 kB/s
  Now type
     chroot /mnt 
  on the command line and execute part3 of the scripts!
  [root@magellan xenserver-sw-raidscripts-master]#

Wechsel in die Changeroot-Umgebung und erstellen einer initrd mit Raid-Support

Man folgt den Anweisungen des letzten Skripts:

chroot /mnt
./03-in-the-chroot

Das Ende der Ausgaben sollte etwa so aussehen:

  [...]
  Adding module scsi_dh_emc
  Adding module scsi_dh_hp_sw
  Adding module scsi_dh_rdac
  /sbin/mdadm.static -> /tmp/initrd.oB7941/bin/mdadm
  /sbin/mdmon.static -> /tmp/initrd.oB7941/bin/mdmon
  /etc/mdadm.conf -> /tmp/initrd.oB7941/etc
  Fixing root filesystem info in /boot/extlinux.conf
  Installing extlinux...
  boot/ is device /dev/md0
  Warning: The kernel is still using the old partition table.
  The new table will be used at the next reboot.
  The operation has completed successfully.
  Leaving chroot. Please execute 04-finish to finish the process
  [root@magellan /]# 

Kopieren des Systems auf das unvollständige Raid-Array und Neustart von Platte 2

Man wechselt übers home ins Skriptverzeichnis und führt 04-finish aus:

 cd 
 cd xenserver-scripts-master/software-raid
 ./04-finish

Das System startet nochmals neu.

WICHTIG Man muss jetzt beim Systemstart sicherstellen, dass das System von der zweiten Platte startet, nicht von der ersten!

Kontrolle: Das Root-Dateisystem muss nach dem Neustart /dev/md0 sein

[root@magellan ~]# mount
/dev/md0 on / type ext3 (rw)
[...]

Neupartitionierung von Platte 1 und vervollständigen des Raid-Arrays

Nun kann man die Partitionen der ersten Platte mit dem Skript 05-reclone dem Raidverbund zuschlagen.

cd 
cd xenserver-scripts-master/software-raid
./05-reclone

Anschließend resynced das Raid:

 cat /proc/mdstat 
 Personalities : [raid1] 
 md1 : active raid1 sda2[2] sdb2[0]
       4193216 blocks [2/1] [U_]
    	   resync=DELAYED
       
 md0 : active raid1 sda1[2] sdb1[0]
       4193216 blocks [2/1] [U_]
       [================>....]  recovery = 83.6% (3509312/4193216) finish=0.2min speed=42560K/sec
    

Local Storage hinzufügen

Weitere Raid Partition

Zunächst muss eine weitere Partition auf den Platten erzeugt und zu einem Raid zusammenefügt werden.

Hierzu erstellt man mit dem Befehl gdisk auf /dev/sda und /dev/sdb eine dritte Partition mit dem Typ FD00.

gdisk /dev/sda

Dann n für New, Vorgaben übernehmen, um den restlichen Speicherplatz der Platte auszunutzen, Typ auf FD00 setzen und mit w speichern, analog auf /dev/sdb

Jetzt muss der Rechner neu gestartet werden, um die Partitionierungen zu übernehmen, nach dem Neustart erzeugt man das Raid mit dem Befehl

mdadm --create /dev/md2 --level=1 --metadata=0.90 --raid-devices=2 /dev/sda3 /dev/sdb3 

Local Storage in XenServer anmelden

 pvcreate /dev/md2
 xe sr-create type=lvm content-type=user device-config:device=/dev/md2 name-label="Local Storage"