2013-11-30 15:51:13 +00:00
|
|
|
\subsection{Provisionierung}
|
|
|
|
\label{sub:provisionierung}
|
2013-12-08 20:13:48 +00:00
|
|
|
|
|
|
|
\subsubsection{Vorbereitung}
|
|
|
|
|
|
|
|
\begin{sloppypar}
|
|
|
|
|
2014-04-03 09:37:41 +00:00
|
|
|
Für die Provisionierung wurde Clonezilla verwendet. Wir haben uns für dieses
|
|
|
|
Verfahren entschieden. Bei einem Netzwerk-Boot beispielsweise, bei dem das
|
|
|
|
gesamte Dateisystem per NFS eingebunden wird, wäre in unserem Fall ineffektiv,
|
|
|
|
da auf den Festplatten der Compute-Nodes genügend Speicher für das
|
|
|
|
Betriebssystem vorhanden ist und bei jedem Zugriff auf das Dateisystem unnötigen
|
|
|
|
Latenzen entstehen würden.
|
2013-12-15 16:59:59 +00:00
|
|
|
|
2014-04-03 09:37:41 +00:00
|
|
|
Um Clonezilla auf den Computenodes zu booten, haben wir den
|
|
|
|
\emph{in.tftpd}-Server installiert und das Service-File für \emph{Systemd}
|
|
|
|
angepasst (siehe \emph{aufgabe4.4/tftpd.service}). Außerdem haben wir die
|
|
|
|
Konfiguration des DHCP-Servers so angepasst, dass nun jede Compute-Node eine
|
|
|
|
eigene Konfigurationsdatei in \emph{/etc/dhcpd.d/} hat, die jeweils von
|
|
|
|
\emph{/etc/dhcpd.d/all} inkludiert wird.
|
2013-12-08 20:13:48 +00:00
|
|
|
|
2014-03-20 07:41:07 +00:00
|
|
|
Außerdem haben wir ein Script \emph{ cluster} geschrieben, mit dem die Computenodes verwaltet werden können. Mit
|
2013-12-08 20:13:48 +00:00
|
|
|
\begin{lstlisting}
|
|
|
|
cluster add <HOSTNAME> <IP> <MAC>
|
|
|
|
\end{lstlisting}
|
|
|
|
wird ein neuer Node hinzugefügt (DHCP- und DNS-Eintrag). Mit
|
|
|
|
\begin{lstlisting}
|
|
|
|
cluster set-<MODE> <HOSTNAME>
|
|
|
|
\end{lstlisting}
|
2014-04-03 09:37:41 +00:00
|
|
|
kann der Modus für den nächsten Boot des Nodes festgelegt werden. Hier kann
|
|
|
|
zwischen \emph{local} (Boot von lokaler Festplatte), \emph{live} (Boot in das
|
|
|
|
Clonezilla Image), \emph{clone} (Clonen nach Boot) und \emph{restore} (Image
|
|
|
|
laden nach Boot) gewechselt werden.
|
2013-12-08 20:13:48 +00:00
|
|
|
|
2014-04-03 09:37:41 +00:00
|
|
|
Um den Netzwerk-Boot zu ermöglichen, haben wir \emph{pxelinux} unter
|
|
|
|
\emph{/srv/tftp/pxelinux} installiert und konfiguriert. In dieses Verzeichnis
|
|
|
|
haben wir die Dateien \emph{vmlinuz}, \emph{initrd.img} und
|
|
|
|
\emph{filesystem.squashfs} aus der Clonezilla-Live-ISO kopiert, sowie außerdem
|
|
|
|
noch \emph{ldlinux.c32, libcom32.c32, libutil.c32, menu.c32, chain.c32} und
|
|
|
|
\emph{pxelinux.0} aus der \emph{syslinux}-Installation. Die
|
|
|
|
Konfigurationsdateien liegen in \emph{/srv/tftp/pxelinux/pxelinux.cfg}.
|
2013-12-08 20:13:48 +00:00
|
|
|
|
|
|
|
\end{sloppypar}
|
|
|
|
|
|
|
|
\subsubsection{Provisionierung der Computenodes}
|
|
|
|
|
|
|
|
\begin{sloppypar}
|
|
|
|
|
2014-04-03 09:37:41 +00:00
|
|
|
Um den Clone-Vorgang zu starten, führten wir nun mit dem Befehl \emph{sudo
|
|
|
|
cluster set-clone <HOSTNAME>} aus. Durch Neustart des Nodes wird das Clonezilla
|
|
|
|
Live Image gebootet. Dieses holt sich nun vom Headnode ein Script und führt es
|
|
|
|
aus. In diesem Script haben wir alle nötigen Befehle eingetragen, um das Clonen
|
|
|
|
vorzubereiten und zu starten (siehe \emph{aufgabe4.4/clone.sh}). Dazu wird per
|
|
|
|
NFS das \emph{/cluster}-Verzeichnis des Headnodes eingebunden und dort im
|
|
|
|
Unterverzeichnis \emph{images} das Image der Festplatte abgelegt. Geclont werden
|
|
|
|
nur die \emph{/}- und die \emph{/boot}-Partition.
|
2013-12-08 20:13:48 +00:00
|
|
|
|
2014-04-03 09:37:41 +00:00
|
|
|
Zum Wiederherstellen des Images wird mit \emph{sudo cluster set-restore
|
|
|
|
<HOSTNAME>} wieder der entsprechende Boot-Modus gesetzt und der Node
|
|
|
|
neugestartet. Dort wird nun ein anderes Script vom Headnode geholt (siehe \emph{
|
|
|
|
aufgabe4.4/restore.sh}) und die beiden Partitionen wiederhergestellt.
|
|
|
|
Anschließend werden noch die Swap-Partition und die Daten-Partition für das
|
|
|
|
verteilte Dateisystem neu formatiert und die alten UUIDs gesetzt.
|
2013-12-08 20:13:48 +00:00
|
|
|
|
2014-04-03 09:37:41 +00:00
|
|
|
Da Clonezilla bei uns das Dateisystemformat \emph{ext4} nicht als solches
|
|
|
|
erkannt hat. Es fiel auf das generische Programm \emph{partclone.dd} zurück,
|
|
|
|
welches allerdings sehr langsam ist, weil es die komplette Partition klont und
|
|
|
|
freie Blöcke nicht überspringt. Deswegen haben wir zwei kleine Wrapper-Scripts
|
|
|
|
geschrieben.Diese Skripte verwenden stattdessen das schnellere
|
|
|
|
\emph{partclone.ext4} (siehe \emph{aufgabe4.4/partclone.dd-clone} und
|
|
|
|
\emph{partclone.dd-restore}).
|
2013-12-08 20:13:48 +00:00
|
|
|
|
2014-04-03 09:37:41 +00:00
|
|
|
Da wir in unserem Cluster gemischte Boards haben (Intel und Zotac), mussten wir
|
|
|
|
anschließend außerdem noch das Ziel-Root-Verzeichnis mounten und dort mit Befehl
|
|
|
|
\emph{mkinitcpio -p linux} ein neue Init-Ramdisk erstellen lassen, welches die
|
|
|
|
entsprechenden Treiber für Bootvorgang enthält.
|
2013-12-08 20:13:48 +00:00
|
|
|
|
2014-04-03 09:37:41 +00:00
|
|
|
Um die automatische Umbenennung der Netzwerk-Interfaces vorzubeugen, haben wir
|
|
|
|
außerdem einen Symlink \emph{/etc/udev/rules.d/80-net-name-slot.rules ->
|
|
|
|
/dev/null} erstellt. Dadurch wird verhindert, dass Ethernet-Interface nicht nach
|
|
|
|
dem neuen Schema enpXsY sondern fest den Namen eth0 erhalten.
|
2013-12-08 20:13:48 +00:00
|
|
|
|
2014-04-03 09:37:41 +00:00
|
|
|
\end{sloppypar}
|