"Cloning" - Die effizienteste Methode, V-Server zu installieren
(wenn es nach Handbuch funktionieren würde !!!!!! tut es noch nicht)
Februar 2012 - Das mit den "Clones" kennen wir fast nur aus den Science-Fiction Filmen, wenn dort hunderte gleichartige synthetische Gestalten rumlaufen.
Bei XEN ist (wäre) es theoretisch sehr effizient, sich für neu einzurichtende VMs einen (oder wie bei uns zwei) Musterclone(s) zu erstellen und diese uptodate zu halten
-
- unser Muster-Clone 1 ist eine ganz nackte SUSE 12.1 textbasierte Grundlage (für ftp und dns Server)
- unser Muster-Clone 2 ist eine ebenfalls textbasierte erweiterte selbst vorbereitete LAMP ähnliche Grundlage für unsere mysql-php-apache Web-Server
-
und dann in "Nullkommanix" ein Dupklikat in einer neu einzurichtenden VM zu erstellen, wobei das Duplikat dann sogar nahezu perfekt vorbereitet ist.
Vorarbeiten:
Ich habe mir ein minimales Suse 12.1 System (unser Muster-Clone Nr.1) erstellt und das dann in eine weitere Muster-VM geklont. (Wie das jemals funktioniert hatte, ist entschwunden.) Danach habe ich in diesem Muster-Clone Nr.2 die notwendigen Webserver- und mysql "Ingredenzien" samt der hilfeichen bzw. notwendigen Tools installiert und so weit wie möglich und dennoch names- und IP- neutral !!! (nämlich alles noch per DHCP) vorbereitet.
Daraus habe ich dann unsere erste richtige Muster-VM (also die Clone-Vorlage) erstellt, gut brauchbar und performant für einen Vhost-Webserver für etwa 10 bis 50 virtuelle Hosts. Alle generellen neutralen Konfigurationen dieses Servers fließen auch gleich in den ursprünglichen Clone Nr.2 ein, der dann beim nächsten "Cloning" noch besser vorbereitet ist.
-
Hauptgrund: Geschwindigkeit und Datentransfer
Beim "Klonen" wird ein 1:1 Abbild des Originals, also unseres jeweiligen Clone-Musters, auf die Zielplatte und deren Partitionen geschrieben.
Ich muss also so gut wie Nichts bereits einmal Geladenes ein weiteres Mal aus dem openSuse Repository holen und auch alle dem Klone bereits verabreichten Updates bleiben erstmal erspart.
Es gibt sicher ein paar Randbedingungen, die man beachten sollte, doch die ersten Versuche waren absolut überzeugend.
-
Die Clone-Muster Grundlagen
Für einen späteren Clone habe ich immer 500Mb oder 1GB swap und 5GB oder bis zu 8GB für die Linux "root" Partition vorgesehen. Also muß der Master-Clone auch diese Größen besitzen und darf auf keinen Fall größer sein, eher kleiner. Mein Masterclone1 hat also 1GB swap und 6GB "root" und wird auf eine neue leere 20 GB Partition "geklont".
Dort habe ich dann noch 13GB unbenutzen freien Platz, den ich von der DOM 0 aus mit "gparted" als weitere (die 3.) Partition (mit ext4) formatiere und dann verlasse. Da der Clone ja sofort läuft, kann ich mit "yast" und dem "partitioner" diese 3. Partition als separate "Datenpartition" hinter mein neues "/vol2/ Verzeichnis einklinken. Damit habe ich (auf unseren Servern) auch den eigentlichen Linux (root) Bereich vom späteren Typo3 Daten- und "mysql"- Bereich komplett getrennt.
-
Juli 2012 - es geht leider nicht weiter
Es funktioniert nämlich nicht oder nur mit Hilfe eine Geheimnisses. Ich habe jetzt Wochen probiert, eine Suse XEN VM zu clonen, doch der Teufel steckt im Detail. Bislang hat es mit dem installierten Virtual Machine Manager 0.9.1 nicht funktioniert - trotz nächtelangem googelns.
Ich kann zwar im "VM Machine Manager" eine herunter gefahre VM clonen, aber ich bekomme die vorbereitete "Clone-Vorlage" über dieses jetzt geclonte Abbild nicht auf eine zweite Platte auf dem gleichen Server installiert. Die auf der Suse 12.1 Umgebung vorhanden XEN Supervisor Tools sind absolut dürftig und nicht besonders gesprächig. Auch die letzten Updates vom Juli 2012 bringen da keine Abhilfe.
.
Ein Workaround mit allen Tricks - mühsam - aber geht.
Es geht über die normalen Tools (yast und midnight commander) in der DOM-0, im XEN Grundsystem. Mit dem Yast Partitionierer überprüfe ich die Festplatten des Servers, die bei uns anfänglich so (ähnlich) aussehen (habe sie hier von 0 bis 16 sortiert !):
.
unsere physischen cciss "Devices" | die Part-Größe | Funktion | Format |
>>>>> das ist die DOM-0 | |||
/dev/cciss/c0d0 | 6.35 GB | ||
/dev/cciss/c0d0p1 | 502.00 MB | Linux swap | Swap |
/dev/cciss/c0d0p2 | 5.85 GB | Linux native | Ext4 |
ab hier beginnen die DOM-U (von 1 bis 13) | |||
/dev/cciss/c0d1 | 58.59 GB | ||
/dev/cciss/c0d1p1 | 502.00 MB | Linux swap | Swap |
/dev/cciss/c0d1p2 | 5.86 GB | Linux native | Ext4 |
/dev/cciss/c0d1p3 | 49.80 GB | Linux native | Ext4 |
/dev/cciss/c0d2 | 39.07 GB | ||
/dev/cciss/c0d2p1 | 502.00 MB | Linux swap | Swap |
/dev/cciss/c0d2p2 | 5.86 GB | Linux native | Ext4 |
/dev/cciss/c0d2p3 | 32.71 GB | Linux native | Ext4 |
/dev/cciss/c0d3 | 39.07 GB | ||
/dev/cciss/c0d4 | 58.59 GB | ||
/dev/cciss/c0d5 | 39.07 GB | ||
/dev/cciss/c0d5p1 | 502.00 MB | Linux swap | Swap |
/dev/cciss/c0d5p2 | 5.86 GB | Linux native | Ext4 |
/dev/cciss/c0d5p3 | 32.71 GB | Linux native | Ext4 |
/dev/cciss/c0d6 | 39.07 GB | ||
/dev/cciss/c0d6p1 | 1.00 GB | Linux swap | Swap |
/dev/cciss/c0d6p2 | 6.00 GB | Linux native | Ext4 |
/dev/cciss/c0d7 | 39.07 GB | ||
/dev/cciss/c0d8 | 39.07 GB | ||
/dev/cciss/c0d9 | 39.07 GB | ||
/dev/cciss/c0d9p1 | 39.06 GB | Linux native | Ext4 |
/dev/cciss/c0d10 | 39.07 GB | ||
/dev/cciss/c0d11 | 39.07 GB | ||
/dev/cciss/c0d12 | 39.07 GB | ||
/dev/cciss/c0d13 | 58.59 GB | ||
/dev/cciss/c0d13p1 | 502.00 MB | Linux swap | Swap |
/dev/cciss/c0d13p2 | 5.86 GB | Linux native | Ext4 |
>>>>> das ist der große Muster-Clone 1 | |||
/dev/cciss/c0d14 | 9.77 GB | ||
/dev/cciss/c0d14p1 | 502.00 MB | Linux swap | Swap |
/dev/cciss/c0d14p2 | 5.86 GB | Linux native | Ext4 |
>>>>> das ist der kleine Muster-Clone 2 | |||
/dev/cciss/c0d15 | 9.77 GB | ||
/dev/cciss/c0d15p1 | 502.00 MB | Linux swap | Swap |
/dev/cciss/c0d15p2 | 5.86 GB | Linux native | Ext4 |
>>>>> die Reste-Ecke - Datsi und Sperrmüll | |||
/dev/cciss/c0d16 | 91.32 GB | ||
/dev/cciss/c0d16p1 | 91.32 GB | Linux native | Ext4 |
dann lege ich im root in /usr/ 2 neue Verzeichnisse an:
- [XEN1-root - root] /usr $ mkdir 01-quelle
- [XEN1-root - root] /usr $ mkdir 02-ziel
und setze die Mountpoint (Einhängepunkte) per Yast auf diese Partitionen, die natürlich vorher angelegt und formatiert sein müssen. Da hilft der yast Partitionierer sehr gut, eine Kontorlle geht auch mit gparted unter yast2
Unsere Devices bzw. Platten sehen dann so aus:
.
Die Anzeige der Partitionen jetzt mit Einhängepunkten
/dev/cciss/c0d0 | 6.35 GB | |||||||
/dev/cciss/c0d0p1 | 502.00 MB | Linux swap | Swap | swap | ||||
/dev/cciss/c0d0p2 | 5.85 GB | Linux native | Ext4 | / | ||||
/dev/cciss/c0d1 | 58.59 GB | |||||||
/dev/cciss/c0d1p1 | 502.00 MB | Linux swap | Swap | |||||
/dev/cciss/c0d1p2 | 5.86 GB | Linux native | Ext4 | |||||
/dev/cciss/c0d1p3 | 49.80 GB | Linux native | Ext4 | |||||
/dev/cciss/c0d2 | 39.07 GB | |||||||
/dev/cciss/c0d2p1 | 502.00 MB | Linux swap | Swap | |||||
/dev/cciss/c0d2p2 | 5.86 GB | Linux native | Ext4 | |||||
/dev/cciss/c0d2p3 | 32.71 GB | Linux native | Ext4 | |||||
/dev/cciss/c0d3 | 39.07 GB | |||||||
/dev/cciss/c0d4 | 58.59 GB | |||||||
/dev/cciss/c0d5 | 39.07 GB | |||||||
/dev/cciss/c0d5p1 | 502.00 MB | Linux swap | Swap | |||||
/dev/cciss/c0d5p2 | 5.86 GB | Linux native | Ext4 | |||||
/dev/cciss/c0d5p3 | 32.71 GB | Linux native | Ext4 | |||||
/dev/cciss/c0d6 | 39.07 GB | |||||||
/dev/cciss/c0d6p1 | 1.00 GB | Linux swap | Swap | |||||
/dev/cciss/c0d6p2 | 6.00 GB | Linux native | Ext4 | /usr/02-ziel | ||||
/dev/cciss/c0d7 | 39.07 GB | |||||||
/dev/cciss/c0d8 | 39.07 GB | |||||||
/dev/cciss/c0d9 | 39.07 GB | |||||||
/dev/cciss/c0d9p1 | 39.06 GB | Linux native | Ext4 | /z-clones | ||||
/dev/cciss/c0d10 | 39.07 GB | |||||||
/dev/cciss/c0d11 | 39.07 GB | |||||||
/dev/cciss/c0d12 | 39.07 GB | |||||||
/dev/cciss/c0d13 | 58.59 GB | |||||||
/dev/cciss/c0d13p1 | 502.00 MB | Linux swap | Swap | |||||
/dev/cciss/c0d13p2 | 5.86 GB | Linux native | Ext4 | |||||
/dev/cciss/c0d14 | 9.77 GB | |||||||
/dev/cciss/c0d14p1 | 502.00 MB | Linux swap | Swap | |||||
/dev/cciss/c0d14p2 | 5.86 GB | Linux native | Ext4 | /usr/01-quelle | ID | |||
/dev/cciss/c0d15 | 9.77 GB | |||||||
/dev/cciss/c0d15p1 | 502.00 MB | Linux swap | Swap | |||||
/dev/cciss/c0d15p2 | 5.86 GB | Linux native | Ext4 | |||||
/dev/cciss/c0d16 | 91.32 GB | |||||||
/dev/cciss/c0d16p1 | 91.32 GB | Linux native | Ext4 |
Einfaches Kopieren mit den Midnight Commander
Jetzt verzweige ich mit der linken Seite des mc in /usr/01-quelle/ und rechts in /usr/02-ziel/ und kopiere die gesamte Clone-Vorlage einfach rüber.
Ich hatte aber vorher diese Virt. Maschine bereits mit dem VMM angelegt , nach unseren Spielregeln benamt (z.B. c0d6-www16-40giga) und mit einer Suse 12.1 absoluten Minimal-version installiert. Und natürlich testweise mindestens einmal gestartet.
Ich überschreibe also mit dieser primitiven Variante des "Clonings" die gesamte root Installation mit der Vorlage aus der Partition des vorbereiteten Clones.
.
Dann starte ich mit dem VMManager diese neue VM
Sicherheitshalber löse ich die beiden temporären Mountpoints in meiner DOM-0 wieder aus, damit ich sowohl die Clone-Vorlage, als auch die neue DOM-U problemlos starten kann. Beide müssen dazu wieder gestoppt sein !!!
Da diese VM (wie auch die Vorlage) das Netzwerk über DHCP bootet, kommt sie sofort hoch und mit "ifconfig" lasse ich die aktuelle ip-nummer anzeigen. Es funktioniert, ich habe ein funktionierendes Abbild der Clon-Vorlage.
.
endlich
.
Es ist nur ein "Workaround" - nämlich absolut unbefriedigend
und die bislang bekannten Clone-Werkzeuge funktionieren nicht oder sind noch schlimmer.
Alles in Allem - sehr unbefriedigend im Jahr 2012.
.