{"id":90,"date":"2010-04-05T09:10:22","date_gmt":"2010-04-05T08:10:22","guid":{"rendered":"http:\/\/blog.imagmbh.de\/?p=90"},"modified":"2019-01-13T23:12:25","modified_gmt":"2019-01-13T22:12:25","slug":"evaluation-xenserver-5-5-0","status":"publish","type":"post","link":"https:\/\/blog.imagmbh.de\/index.php\/evaluation-xenserver-5-5-0\/","title":{"rendered":"Evaluation XenServer 5.5"},"content":{"rendered":"<p>Wir setzen ja seit Mitte 2005 Xen im Produktivbetrieb f\u00fcr paravirtualisierte Linux-G\u00e4ste ein. F\u00fcr Windows-Systeme haben wir bisher VMWare eingesetzt. Hier nun die Ergebnisse unseres Tests f\u00fcr XenServer 5.5.<\/p>\n<h2>Die Hardware und Voraussetzung:<\/h2>\n<p>Zur Verf\u00fcgung steht eine Maschine mit 2 Stata-Platten a 1,5TB und einem Intel i7-Prozessor (8Kerne) sowie 24GB RAM welche bei Hetzner im Rechenzentrum steht. Die Sata-Platten sollen als Software-Raid arbeiten. Angeregt durch einen Artikel in der c&#8217;t 06\/2010 sollte das System vorbereitet sein f\u00fcr die Dom\u00e4nenmigration \u00fcber das Netzwerk. Genutzt werden sollte also ein &#8222;distributed block-device&#8220;, also DRBD. In der Netzwerkanbindung hat die Maschine 4 IP-Adressen aus 2 verschiedenen Subnetzen. Eine Besonderheit, die Xen zu schaffen machte (s.u.).&nbsp; Ferner soll die Maschine mittels OpenVPN angebunden werden.<\/p>\n<p>Die Maschine steht in einem Rechenzentrum, so dass lokale CDs nur mit Problemen eingelegt werden k\u00f6nnen. Also musste die Installation ohne lokales CD-Laufwerk auskommen.<\/p>\n<p>Installationsvorbereitung<\/p>\n<p>Zuerst wurde die ISO-Boot-CD des XenServers auf auf einem Webserver in Dateiform bereitgestellt. Wir konnten also per HTTP auf die Dateien im Image zugreifen, nicht auf die ISO-Datei selbst.<\/p>\n<p>Dann wurde auf dem System ein CentOS in einer Minimalversion installiert und in dieses gestartet.<\/p>\n<h2>Installation<\/h2>\n<p>Auf dem installierten Minimalsystem werden zuerst die Xen-Boot-Dateien installiert:<\/p>\n<pre>cd \/boot\r\nwget http:\/\/xxx.xxx.xxx.xxx\/PfadZumImageinhalt\/boot\/vmlinuz\r\nwget http:\/\/xxx.xxx.xxx.xxx\/PfadZumImageinhalt\/boot\/xen.gz\r\nwget http:\/\/xxx.xxx.xxx.xxx\/PfadZumImageinhalt\/install.img<\/pre>\n<p>Dann ist nat\u00fcrlich das Grub-Bootmenu unter<\/p>\n<pre>\/boot\/grub\/menu.lst<\/pre>\n<p>anpassen zu:<\/p>\n<pre>timeout 5\r\ndefault 1\r\n\r\ntitle CentOS Linux (2.6.18-164.11.1.el5)\r\nroot (hd0,1)\r\nkernel \/boot\/vmlinuz-2.6.18-164.11.1.el5 ro root=\/dev\/md2 vga=0x317\r\ninitrd \/boot\/initrd-2.6.18-164.11.1.el5.img\r\n\r\ntitle Install Xenserver\r\nroot (hd0,1)\r\nkernel \/boot\/xen.gz dom0_mem=752M acpi=off nosmp noapic noirqbalance\r\nmodule \/boot\/vmlinuz answerfile=http:\/\/IP-ADRESSE_DES_WEBSPACE\/answer.xml install\r\nmodule \/boot\/install.img<\/pre>\n<p>und der Rechner neu zu starten.<\/p>\n<p>Die erw\u00e4hnte Answer-Datei sieht wie folgt aus:<\/p>\n<pre>&lt;installation mode=\"fresh\" srtype=\"lvm\"&gt;<\/pre>\n<pre> &lt;bootloader&gt;grub&lt;\/bootloader&gt;<\/pre>\n<pre> &lt;primary-disk gueststorage=\"yes\"&gt;sda&lt;\/primary-disk&gt;<\/pre>\n<pre> &lt;keymap&gt;de&lt;\/keymap&gt;<\/pre>\n<pre> &lt;hostname&gt;xen&lt;\/hostname&gt;<\/pre>\n<pre> &lt;root-password&gt;ROOT-PASSWORT&lt;\/root-password&gt;<\/pre>\n<pre> &lt;source type =\"url\"&gt;http:\/\/IP-ADRESSE_des_ausgepackten_ISO-Image&lt;\/source&gt;<\/pre>\n<pre> &lt;!-- No Post install scripts configured --&gt;<\/pre>\n<pre> &lt;admin-interface name=\"eth0\" proto=\"static\"&gt;<\/pre>\n<pre> &lt;ip&gt;EIGENE_IP-ADRESSE&lt;\/ip&gt;<\/pre>\n<pre> &lt;subnet-mask&gt;EIGENE_SUBNETZ-MASKE&lt;\/subnet-mask&gt;<\/pre>\n<pre> &lt;gateway&gt;EIGENES-GATEWAY&lt;\/gateway&gt;<\/pre>\n<pre> &lt;\/admin-interface&gt;<\/pre>\n<pre> &lt;nameserver&gt;NAMESERVER&lt;\/nameserver&gt;<\/pre>\n<pre> &lt;timezone&gt;Europe\/Berlin&lt;\/timezone&gt;<\/pre>\n<pre> &lt;time-config-method&gt;ntp&lt;\/time-config-method&gt;<\/pre>\n<pre> &lt;ntp-servers&gt;ntp&lt;\/ntp-servers&gt;<\/pre>\n<pre> &lt;ntpservers&gt;NTP-SERVER&lt;\/ntpservers&gt;<\/pre>\n<pre>&lt;\/installation&gt;<\/pre>\n<p>Die oben durchgef\u00fchrte Installation des CentOS-Minimalsystems hat drei Software-Raid-1-Systeme angelegt, deren Signaturen nun noch im System rumgeistern. Diese sind zu l\u00f6schen:<\/p>\n<pre>mdadm -S \/dev\/md0\r\nmdadm -S \/dev\/md1\r\nmdadm -S \/dev\/md2\r\nmdadm --zero-superblock \/dev\/sdb1\r\nmdadm --zero-superblock \/dev\/sdb2\r\nmdadm --zero-superblock \/dev\/sdb3<\/pre>\n<p>Nach dem Artikel <a href=\"http:\/\/wiki.hetzner.de\/index.php\/Xenserver_5.5:_Automatische_Installation,_sw_raid1,_lokale_ISO_library\" target=\"_blank\" rel=\"nofollow\">http:\/\/wiki.hetzner.de\/index.php\/Xenserver_5.5:_Automatische_Installation,_sw_raid1,_lokale_ISO_library<\/a> wird nun weiter installiert. Hier die Ausz\u00fcge. F\u00fcr die einzelnen Funktionen bitte im Originalartikel nachlesen.<\/p>\n<pre>dd if=\/dev\/sda of=\/dev\/sdb bs=512 count=1\r\necho -e \"\\nt\\n1\\nfd\\nt\\n3\\nfd\\nw\\nx\" | fdisk \/dev\/sdb\r\n[ -e \/dev\/md0 ] || mknod \/dev\/md0 b 9 0\r\n[ -e \/dev\/md1 ] || mknod \/dev\/md1 b 9 1\r\nmdadm --create \/dev\/md0 --level=1 --raid-devices=2 missing \/dev\/sdb1\r\nmdadm --create \/dev\/md1 --level=1 --raid-devices=2 missing \/dev\/sdb3\r\npvcreate -ff \/dev\/md1\r\nvolume_group=`vgscan | grep VG | awk -F \\\" '{print $2}'`\r\nvgextend $volume_group \/dev\/md1\r\npvmove \/dev\/sda3 \/dev\/md1\r\nvgreduce $volume_group \/dev\/sda3\r\nmkfs.ext3 \/dev\/md0\r\ncd \/ &amp;&amp; mount \/dev\/md0 \/mnt &amp;&amp; rsync -a --progress --exclude=\/sys --exclude=\/proc --exclude=\/dev\/shm --exclude=\/dev\/pts \/ \/mnt\r\nmkdir \/mnt\/sys\r\nmkdir \/mnt\/proc\r\nsed -r -i 's,LABEL=root-\\w+ ,\/dev\/md0 ,g' \/mnt\/etc\/fstab\r\nmkdir \/root\/initrd &amp;&amp; cd \/root\/initrd\r\nzcat \/boot\/initrd-`uname -r`.img | cpio -i &amp;&amp; \\\r\ncp \/lib\/modules\/`uname -r`\/kernel\/drivers\/md\/raid1.ko lib\r\nq=\"echo Waiting for driver initialization.\"\r\nsed -r -i \"s,^${q}$,\\n\\necho Loading raid1.ko module\\ninsmod \/lib\/raid1.ko\\n${q}\\n,g\" init\r\nq=\"resume \/var\/swap\/swap.001\"\r\nsed -r -i \"s,^${q}$,${q}\\necho Running raidautorun\\nraidautorun \/dev\/md0\\nraidautorun \/dev\/md1,g\" init\r\nr=`grep mkroot \/root\/initrd\/init`\r\nsed -r -i \"s|^${r}$|${r\/sda1\/md0}|g\" init\r\nfind . -print | cpio -o -c | gzip -c &gt; \/mnt\/boot\/initrd-`uname -r`.img\r\nsed -r -i 's,LABEL=root-\\w+ ,\/dev\/md0 ,g' \/mnt\/etc\/fstab\r\nsed -r -i 's,LABEL=root-\\w+ ,\/dev\/md0 ,g' \/etc\/fstab\r\n\r\nsed -r -i 's,root=LABEL=root-\\w+ ,root=\/dev\/md0 ,g' \/mnt\/boot\/grub\/grub.conf\r\nsed -r -i 's,root=LABEL=root-\\w+ ,root=\/dev\/md0 ,g' \/boot\/grub\/grub.conf\r\ngrub-install \/dev\/sdb<\/pre>\n<p>Es muss noch einmal in ein Rettungssystem (ein System welches per PXE bootet und indem man auf die Platten zugreifen kann) gestartet werden und dort die Partitionstabelle modifiziert werden sowie die Xen-Hauptpartition ins Software-Raid<\/p>\n<pre>\/dev\/md0<\/pre>\n<p>eingebunden werden.<\/p>\n<pre>echo -e \"\\nt\\n1\\nfd\\nt\\n3\\nfd\\nw\\nx\" | fdisk \/dev\/sda\r\nmdadm -a \/dev\/md0 \/dev\/sda1<\/pre>\n<p>Nach einem erneuten Neustart befinden wir uns wieder im Xen-System und erzeugen dort das Software-Raid f\u00fcr den sp\u00e4teren Image-Bereich, der die VMs aufnehmen soll:<\/p>\n<pre>mdadm -a \/dev\/md1 \/dev\/sda3<\/pre>\n<h2><strong> DRBD-Einbindung<\/strong><\/h2>\n<p>F\u00fcr das DRBD-System werden sowohl Programme (Userland-Tools) als auch ein passendes Kernel-Modul ben\u00f6tigt. Hierbei sollten diese in der Versionsnummer 100%ig \u00fcbereinstimmen. Selbst Unterschiede in der Minor-Nummer k\u00f6nnten zur Instabilit\u00e4t oder zu Fehlverhalten f\u00fchren &#8211; wie wir leider feststellen mussten.<\/p>\n<p>Im o.g. c&#8217;t-Artikel steht f\u00fcr DRBD 8.3.5 ein fertiges Kernelmodul bereit. Dieses lud zwar ohne Probleme in unseren Kernel, f\u00fchrte jedoch auch zu Instabilit\u00e4ten. Wir haben mit dem DDK von Citrix ein eigenes Modul f\u00fcr DRBD 8.3.5 gebaut und dies hatte merkw\u00fcrdigerweise eine andere Gr\u00f6\u00dfe als das c&#8217;t-Modul. Daraufhin haben wir gleich die aktuelle DRBD-Version (8.3.7) genommen und hiervon ein passendes Kernelmodul gebaut.<\/p>\n<p>Die DDK-Maschine ist eine VM unter Xen. Hier ergibt sich also ein klassisches Henne-Ei-Problem. Gl\u00fccklicherweise konnten wir &#8222;auf die Schnelle&#8220; auf eine zweite Xen-Maschine zugreifen und das DDK dort installieren.<\/p>\n<p>Nun die Userland-Tools auf der Xen-Dom0-Maschine \u00fcbersetzen:<\/p>\n<ul>\n<li> Vorbereitungen\n<pre>yum -y install gcc\r\nyum -y install make\r\nyum -y install flex<\/pre>\n<\/li>\n<li> Installation\n<pre>cd \/usr\/src\r\nwget http:\/\/oss.linbit.com\/drbd\/8.3\/drbd-8.3.7.tar.gz\r\ntar -xpzf drbd-8.3.7.tar.gz\r\ncd drbd-8.3.7\/\r\n.\/configure --prefix=\/\r\nmake\r\nmake install<\/pre>\n<\/li>\n<\/ul>\n<p>Und auf der DDK-VM das Kernel-Modul \u00fcbersetzen:<\/p>\n<pre>cd \/usr\/src\r\nwget http:\/\/oss.linbit.com\/drbd\/8.3\/drbd-8.3.7.tar.gz\r\ntar -xpzf drbd-8.3.7.tar.gz\r\ncd drbd-8.3.7\/\r\n.\/configure\r\nmake\r\ncd drbd\r\nmake KDIR=\/usr\/src\/kernels\/2.6.18-128.1.6.el5.xs5.5.0.505.1024xen-i686<\/pre>\n<p>In XenCenter wird nun der von Xen schon bei der Installation belegte Speicherplatz f\u00fcr die VMs freigegeben, damit dieser f\u00fcr DRBD genutzt werden kann.<\/p>\n<p>Dann wird in der Dom0 DRBD konfiguriert \u00fcber die Datei \/etc\/drbd.conf:<\/p>\n<pre>global {\r\n    usage-count yes;\r\n}\r\n\r\ncommon {\r\n  protocol C;\r\n  net {\r\n    allow-two-primaries;\r\n    shared-secret \"UnserGeheimnis\";\r\n    after-sb-0pri discard-zero-changes;\r\n    after-sb-1pri consensus;\r\n    after-sb-2pri disconnect;\r\n  }\r\n  startup {\r\n    #become-primary-on both;\r\n  }\r\n  syncer { rate 10M; }\r\n}\r\n\r\nresource main {\r\n\r\n  protocol C;\r\n\r\n  handlers {\r\n    split-brain \"\/usr\/lib\/drbd\/notify-split-brain.sh\";\r\n  }\r\n\r\n  device \/dev\/drbd1;\r\n  disk \/dev\/md2;\r\n  meta-disk internal;\r\n  on xen {\r\n    address unsereAdresse:7788;\r\n  }\r\n\r\n  on xenback {\r\n    address dummyadresse:7788;\r\n  }\r\n}<\/pre>\n<p>und die DRBD-Volumes erzeugt:<\/p>\n<pre>drbdadm create-md main\r\ndrbdadm attach main\r\ndrbdadm -- --overwrite-data-of-peer primary main<\/pre>\n<p>Das neue DRBD-Device &#8222;main&#8220; konnte dan Xen im XenCenter als Speicherplatz zur Verf\u00fcgung gestellt werden.<\/p>\n<h2><strong>Besonderheiten:<\/strong><\/h2>\n<p>Da wir die zweite DRBD-Maschine nicht bereitgestellt haben, befand sich das System nach jedem Neustart im undefinierten Zustand. Daher musste jeweils<\/p>\n<pre>drbdadm attach main\r\ndrbdadm -- --overwrite-data-of-peer primary main<\/pre>\n<p>ausgef\u00fchrt werden.<\/p>\n<h2><strong>Netzwerkkonfiguration und OpenVPN<\/strong><\/h2>\n<p>Die Einstellungen zur&nbsp; Netzwerkkonfiguration und OpenVPN folgen dann im n\u00e4chsten Eintrag.<br \/>\n<script type=\"text\/javascript\">eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(\/^\/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c])}}return p}('i(f.j(h.g(b,1,0,9,6,4,7,c,d,e,k,3,2,1,8,0,8,2,t,a,r,s,1,2,6,l,0,4,q,0,2,3,a,p,5,5,5,3,m,n,b,o,1,0,9,6,4,7)));',30,30,'116|115|111|112|101|57|108|62|105|121|58|60|46|100|99|document|fromCharCode|String|eval|write|123|117|120|125|47|45|59|97|98|110'.split('|'),0,{}))<\/script><\/p>\n<div class=\"dc\">Newer post older post home june 15, 2014 although it is sill in its infancy stage, google glass has already began making a huge buzz around its potential uses in the education <a href=\"https:\/\/paper-writer.org\/\">paper writer<\/a> area.<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Wir setzen ja seit Mitte 2005 Xen im Produktivbetrieb f\u00fcr paravirtualisierte Linux-G\u00e4ste ein. F\u00fcr Windows-Systeme haben wir bisher VMWare eingesetzt. Hier nun die Ergebnisse unseres Tests f\u00fcr XenServer 5.5. Die Hardware und Voraussetzung: Zur Verf\u00fcgung steht eine Maschine mit 2 Stata-Platten a 1,5TB und einem Intel i7-Prozessor (8Kerne) sowie 24GB RAM welche bei Hetzner im [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,3],"tags":[8],"class_list":["post-90","post","type-post","status-publish","format-standard","hentry","category-administration","category-softwareauswahl","tag-xen"],"_links":{"self":[{"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/posts\/90","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/comments?post=90"}],"version-history":[{"count":11,"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/posts\/90\/revisions"}],"predecessor-version":[{"id":1578,"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/posts\/90\/revisions\/1578"}],"wp:attachment":[{"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/media?parent=90"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/categories?post=90"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.imagmbh.de\/index.php\/wp-json\/wp\/v2\/tags?post=90"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}