DVDs mit dvd::rip und transcode im Cluster kopieren

Aus LinuxUser 05/2002

DVDs mit dvd::rip und transcode im Cluster kopieren

Mit vereinten Kräften

Nachdem wir in der letzten Ausgabe die Installation und Benutzung von transcode [2] und dvd::rip vorgestellt haben, nehmen wir nun den Cluster-Modus des Software-Gespanns ausführlich unter die Lupe.

Der Begriff “Cluster” bezeichnet einen Verbund von Rechnern (auch Knoten genannt), die über ein Netzwerk miteinander kommunizieren und eine Aufgabe gemeinsam schneller oder auch ausfallsicherer erledigen. In unserem Fall heißt die Aufgabe: Erstellung einer DVD-Kopie, wobei die Video- und Audiodaten aus Platzgründen voN MPEG2 (Video) und AC3 (Audio) in die besser komprimierenden Formate DivX und MP3 umgewandelt werden sollen. Als Ergebnis erhält der Benutzer eine AVI-Videodatei, die bei vergleichbarer Qualität auf zwei bis drei CD-Rohlingen Platz findet. Das entspricht einer Datenreduktion auf 20 bis 30 Prozent des Ausgangsmaterials.

Die Umrechnung der Video- und Audiodaten benötigt sehr viel Zeit: Je nach Rechnerausstattung und Qualitätsanforderung kann das auch auf einem aktuellen System vier bis acht Stunden beanspruchen. Hier begrüßt jeder die Möglichkeit, den etwas älteren Zweitrechner oder das Notebook als weiteren Rechenknecht mit einzuspannen und so die Rechenzeit entscheidend zu verkürzen.

Installation

transcode und dvd::rip bringen schon alles mit, was zur Erfüllung dieses Wunsches nötig ist. Lediglich dvd::rip braucht über die in [1] beschriebenen Perl-Module hinaus noch die Module Storable[4] und Event[5] sowie die Kommandozeilenprogramme fping und pstree. Bei fping ist zu beachten, dass dieses das Set-UID Bit gesetzt hat. Dies erreichen Sie mit dem Befehl chmod u+s /usr/sbin/fping. Sollte fping bei Ihrem System in einem anderen Verzeichnis liegen, so legen Sie einen entsprechenden symbolischen Link an, sonst findet dvd::rip fping nicht.

Falls die Perl-Module Storable und Event bei Ihrer Distribution nicht mitgeliefert werden, können Sie sich diese aus dem CPAN herunterladen und wie jedes Perl-Modul mit diesen Befehlen installieren:

tar xvfz Module-X.XX.tar.gz
cd Module-X.XX
perl Makefile.PL
make
make test
su
make install

Nur die eigentliche Programminstallation mit make install muss dabei als Benutzer root ausgeführt werden.

Teile und herrsche

Nicht jedes Problem lässt sich ohne weiteres mit einem Cluster schneller lösen. Voraussetzung für eine Beschleunigung ist, dass sich das Problem in voneinander unabhängige Teile zerlegen lässt, die parallel auf mehreren Knoten bearbeitet werden können.

Abbildung 1: Das ist der vollständige Workflow eines dvd::rip-Cluster-Projektes

Abbildung 1: Das ist der vollständige Workflow eines dvd::rip-Cluster-Projektes

Was beim DVD-Kopieren wirklich lange dauert, ist die Transkodierung des Videos. Diese lässt sich recht einfach auf mehrere Knoten verteilen: Jeder Knoten berechnet nur einen bestimmten zeitlichen Abschnitt des Films (auch Chunk genannt). Die so entstehenden Dateien enthalten natürlich auch nur den entsprechenden Teil und müssen am Ende wieder zu einer großen Filmdatei zusammengefügt werden.

transcode bietet Programmoptionen, mit denen sich die Transkodierung auf einen bestimmten zeitlichen Abschnitt beschränken lässt. Aus technischen Gründen kann dabei aber nur die Videoinformation verarbeitet werden, Audio bleibt erst einmal außen vor. Die Audiodaten werden deshalb separat transkodiert und das Ergebnis später der Videodatei hinzugefügt. Ein dvd::rip Cluster hat also folgende Aufgaben: * Transkodierung der Audiodaten * Transkodierung der Videodaten (eventuell im 2-Pass-Verfahren) * Zusammenfügen der entstandenen Videodateien * Hinzufügen der transkodierten Audiodatei * Für CD-Rohlinge passende Aufteilung

Dabei erfolgt die Transkodierung des Videos nach Program Stream Units (PSU) unterteilt. Jede PSU wird logisch in einzelne Chunks zerlegt, die dann parallel bearbeitet werden können. Den vollständigen Ablauf zeigt Abbildung 1.

Architektur

Bevor wir auf die Bedienung des Cluster-Modus eingehen, möchten wir Ihnen zum besseren Verständnis einen Überblick über die Software-Architektur geben. In Abbildung 2 sind alle am Cluster beteiligten Komponenten aufgeführt. Dabei ist aber noch nicht festgelegt, auf welchem Knoten diese Komponenten laufen müssen – diese Verteilung kann fast beliebig vorgenommen werden. Abbildung 3 zeigt ein konkretes Standardszenario, auf das wir uns auch im Folgenden beziehen werden.

Abbildung 2: Dies sind alle an einem dvd::rip-Cluster beteiligten Software-Komponenten. Die Verteilung auf die Knoten im Cluster kann dabei nahezu beliebig erfolgen

Abbildung 2: Dies sind alle an einem dvd::rip-Cluster beteiligten Software-Komponenten. Die Verteilung auf die Knoten im Cluster kann dabei nahezu beliebig erfolgen

Für den gemeinsamen Zugriff aller Rechner auf die Dateien nutzt dvd::rip NFS. Der NFS-Server-Dienst läuft am besten auf dem Rechner, auf dem auch das dvd::rip GUI läuft und an den das DVD-Laufwerk zum Kopieren der Daten auf die Festplatte angeschlossen ist. Dies ist also der meister-Rechner aus Abbildung 3. Der transcode-PC knoten greift über NFS auf dieses zentrale Verzeichnis zu, wobei er seine Ausgabedateien auch über NFS zurückschreibt. Damit liegen schließlich alle Daten immer auf dem meister-Rechner, die Knoten speichern keine lokalen Daten.

Abbildung 3: So kann die Architektur eines dvd::rip-Clusters mit zwei Computern aussehen: meister nimmt alle zentralen Aufgaben wahr und arbeitet auch als transcode-Knoten, wobei knoten ein reiner Rechensklave ohne weitere Aufgaben ist

Abbildung 3: So kann die Architektur eines dvd::rip-Clusters mit zwei Computern aussehen: meister nimmt alle zentralen Aufgaben wahr und arbeitet auch als transcode-Knoten, wobei knoten ein reiner Rechensklave ohne weitere Aufgaben ist

Kontrolle ist besser

Die Steuerung des Clusters erfolgt über den sogenannten Cluster Control Daemon, der Bestandteil von dvd::rip ist. Dieser wird einmal im Hintergrund gestartet, am besten auch auf dem meister-Rechner. Der Daemon nimmt nun vom dvd::rip-GUI Projekte entgegen, die auf dem Cluster verarbeitet werden sollen.

Der Cluster Control Daemon startet via SSHtranscode-Prozesse auf den Knoten, dort muss also nur transcode installiert sein – dvd::rip wird lediglich auf dem meister-Rechner benötigt. Die vom Control Daemon gestarteten transcode-Jobs werden von diesem beobachtet, er kennt also jederzeit den Zustand aller Jobs und gibt dem GUI hierüber auch Auskunft, so dass man beobachten kann, was die einzelnen Knoten gerade tun.

Die Flexibilität der Architektur und die Verwendung von Standardprotokollen wie NFS und SSH ermöglichen den Betrieb eines dvd::rip-Clusters auf den unterschiedlichsten Rechnerkonfigurationen. So ist es auch ohne weiteres möglich, einen dvd::rip-Cluster auf einem einzigen Rechner zu verwenden. Auf den ersten Blick erscheint dies sinnlos, aber auf diese Weise erhält der Benutzer ein flexibles Job-Kontrollsystem, das dvd::rip in der Standardanwendung nicht bietet.

Voraussetzung für den erfolgreichen Einsatz des dvd::rip-Clusters sind also ein NFS Server und eine funktionierende SSH-Kommunikation. Für das in Abbildung 3 gezeigte Beispiel erläutern wir nun die notwendigen Konfigurationsschritte. Dabei beziehen wir uns auf ein SuSE-7.3-System mit OpenSSH. Für andere Distributionen dürften die meisten Anweisungen aber auch gelten. Bitte ersetzen Sie in allen Beispielen die beiden Hostnamen meister und knoten durch die Namen Ihrer Rechner.

NFS Server einrichten

Die grundsätzliche Einrichtung eines NFS Servers geht am einfachsten mit YaST. Wählen Sie hierzu den Menüpunkt Administration des Systems/Netzwerk konfigurieren/Netzwerkdienste konfigurieren. Es folgen nun einige Fragen. Ob inetd gestartet werden soll oder nicht, hat mit unserem Vorhaben nichts zu tun, bleiben Sie hier bei den bisherigen Einstellungen. Die nächsten beiden Fragen nach Portmapper und NFS Server beantworten Sie mit “Ja”. Die letzte Frage nach der From-Einstellung für News Postings ist für uns ebenfalls nicht von Belang, drücken Sie hier einfach [Return].

Nun muss dem NFS Server gesagt werden, welche Verzeichnisse freigegeben werden sollen. Editieren Sie hierzu die Datei /etc/exports und tragen den Namen Ihres dvd::rip-Projektstammverzeichnisses wie folgt ein:

/home/dvdrip *(rw)

Achtung: Durch das “*(rw)” darf jeder Rechner im Netz auf dieses Verzeichnis lesend und schreibend zugreifen darf. Das vereinfacht die Konfiguration, kann aber je nach Umgebung ein erhebliches Sicherheitsproblem sein. NFS bietet auch die Möglichkeit, die Zugriffsrechte weiter einzuschränken. Näheres dazu finden Sie in den Man pages.

Nun müssen noch die entsprechenden Dienste gestartet werden. Am einfachsten geht das als Benutzer root mit diesen Befehlen:

rcportmap start
rcnfsserver start

Nicht-SuSE-Anwender müssen hier anders vorgehen; in der Regel finden Sie im Verzeichnis /etc/rc.d/init.d/ oder /etc/init.d/ Startskripte für NFS. Von Interesse sind portmap und nfs.

Wenn das ohne Fehler geklappt hat, können Sie leicht überprüfen, ob das Verzeichnis korrekt freigegeben wurde: Geben Sie hierzu den Befehl showmount -e ein. Das sollte ähnlich wie im folgenden Abschnitt aussehen:

$ showmount -e
Export list for meister:
/home/dvdrip *

Einrichten der NFS Clients

Nun muss auf jedem Knoten ein entsprechender NFS-Mount-Punkt eingerichtet werden. Am einfachsten geht dies, indem Sie folgendes in die Datei /etc/fstab eintragen:

meister:/home/dvdrip  /hosts/meister/dvdrip  nfs

Das Verzeichnis /hosts/meister/dvdrip muss dabei schon existieren. Sie können natürlich auch ein beliebiges anderes Verzeichnis wählen. Als root sollte sich das Verzeichnis nun mit

mount /hosts/meister/dvdrip

mounten lassen. Durch die Eintragung in die /etc/fstab wird dies übrigens beim Neustarten des Rechners automatisch erledigt.

Wenn Sie das Verzeichnis lieber manuell mounten möchten (weil der Server vielleicht nicht immer erreichbar ist), so können Sie auf den /etc/fstab-Eintrag verzichten und bei Bedarf diesen Befehl verwenden:

mount meister:/home/dvdrip /hosts/meister/dvdrip

SSH-Konfiguration

Die Kommunikation zwischen dem Cluster Control Daemon und den Knoten erfolgt über SSH. Da der Daemon kein interaktives Programm ist, das Passwortanfragen beantworten könnte, muss die SSH-Authentifizierung ohne Passwort erfolgen. Um das zu erreichen, verwenden wir die Public-Key-Methode von SSH.

Diese Methode benötigt für den Unix-Benutzer, der ohne Passwort auf ein anderes System gelangen möchte, einen Schlüssel – den sogenannten Public Key. Sollten Sie auf dem meister-Rechner noch keinen haben, so legen Sie ihn dort mit ssh-keygen -t rsa an. Sie werden zweimal nach einem Passwort gefragt, mit dem Sie Ihren Schlüssel vor fremden Zugriff schützen können. Geben Sie hier einfach [Return] ein, also ein leeres Passwort.

Natürlich stellt dies auch ein Sicherheitsproblem dar: Ihr SSH-Schlüssel ist nun nicht durch ein Passwort geschützt. So kann sich jeder, der (unter Ihrem Account oder als root) Zugang zu Ihrem Rechner hat, später auf den Knoten einloggen, ohne dafür ein Passwort kennen zu müssen. Sie können das Problem aber abschwächen, indem Sie für diesen Zweck einen eigenen Account anlegen, so dass diese Sicherheitslücke auf diesen beschränkt ist.

Im Ergebnis haben Sie in Ihrem Home-Verzeichnis nun einen Ordner .ssh mit einigen Dateien. Der Datei rsa.pub gilt unser Interesse, denn sie enthält den Public Key und muss nun an die ~/.ssh/authorized_keys Datei auf knoten angehängt werden:

scp ~/.ssh/rsa.pub user@knoten:
[Passwort von user eingeben]
ssh user@knoten
[Passwort von user eingeben]
mkdir -p .ssh
cat rsa.pub >> .ssh/authorized_keys
rm rsa.pub

Nun müssten Sie mit ssh user@knoten ohne Passwortabfrage auf den knoten Rechner gelangen. Falls das nicht klappt, so rufen Sie ssh -vvv user@knoten auf: Sie erhalten nun Debugging-Ausgaben, die genauer Auskunft darüber geben, was schief läuft.

Cluster-Konfiguration

Nachdem NFS- und SSH-Konfiguration erledigt sind, kann der Cluster in Betrieb genommen werden, wobei wir dvd::rip zunächst beibringen müssen, welche Rechner denn daran teilhaben sollen.

Starten Sie hierzu dvd::rip auf dem meister-Rechner mit dem Befehl dvdrip. Überprüfen Sie zunächst die Einstellungen zum Cluster Control Daemon in den Preferences, indem Sie das Fenster mit [Strg+P] öffnen. Stellen Sie Start Cluster Control Daemon locally auf Yes, lassen das Eingabefeld Hostname of server with Cluster Control Daemon leer und die TCP Port Number of Cluster Control Daemon auf dem Default-Wert von 28646.

Beenden Sie den Dialog und wählen den Menüpunkt Cluster/Control. Es wird nun geprüft, ob schon ein Daemon läuft – falls nicht, wird einer gestartet. Im Ergebnis wird das Cluster-Control-Fenster geöffnet, wie es in Abbildung 7 zu sehen ist. Noch sind alle Listen in diesem Fenster leer, doch das soll sich schon bald ändern.

Drücken Sie auf Add Node, um das Edit-Cluster-Node-Fenster zu öffnen. Zunächst tragen Sie den meister-Rechner selbst als Knoten ein. Für diesen gelten deshalb auch ein paar Sondereinstellungen. Bei Name tragen Sie den Hostnamen des Rechners ein. NFS Mount Point ist in diesem Fall der Basisordner für dvd::rip-Projekte, wie er auch in den Preferences eingestellt ist. Bei Does the Cluster Control Daemon run on this Node tragen Sie Yes ein, ebenfalls bei Is the dvd::rip data harddrive connected to this node. Letztere Einstellung hilft, datenintensive Jobs zu optimieren, indem sie bevorzugt auf diesem Knoten ausgeführt werden. Die beiden Felder zu SSH lassen sie leer. SSH-Kommunikation ist hier unnötig, da ja der Daemon auf diesem Rechner läuft und die Befehle deshalb lokal ausgeführt werden können.

Abbildung 4: Dies sind die Einstellungen für den meister-Rechner. Es werden z. B. keine SSH-Parameter benötigt, weil alle Programme lokal aufgerufen werden

Abbildung 4: Dies sind die Einstellungen für den meister-Rechner. Es werden z. B. keine SSH-Parameter benötigt, weil alle Programme lokal aufgerufen werden

Konfigurationstest

Um Ihre Einstellungen zu überprüfen, können Sie jederzeit auf Test klicken. Es wird ein Fenster geöffnet, das die verschiedensten Aspekte der Konfiguration prüft und die Ergebnisse ausgibt. Wenn überall Ok erscheint, ist alles in Ordnung. Ansonsten erscheinen weitere Programmausgaben und Fehlermeldungen, die die Fehlersuche erleichtern.

War der Test erfolgreich, drücken Sie auf Ok, und der Knoten taucht in der Liste der Registered Nodes auf. Falls er hier über längere Zeit als offline markiert wird, sollten Sie Ihre fping-Installation überprüfen, vor allem das oben angesprochene Set-UID-Bit.

Nun kommt noch der reine transcode-Knoten dran. Drücken Sie wieder auf Add Node. Beim NFS Mount Point tragen Sie nun den NFS-Pfad ein, über den auf das dvd::rip-Projektstammverzeichnis des meister-Rechners zugegriffen werden kann. Die Fragen nach dem lokalen Cluster Control Daemon und dem lokalen Plattenzugriff beantworten Sie diesmal mit No. Dafür tragen Sie den Benutzernamen für die SSH-Verbindung ein; ferner ein spezielles ssh-Kommando, falls Sie besondere Optionen brauchen, um etwa durch eine Firewall zu kommen. In aller Regel können Sie dieses Eingabefeld aber leer lassen.

Abbildung 5: Beim knoten-PC sehen die Einstellungen etwas anders aus, so wird hier z. B. die SSH-Konfiguration zwingend benötigt

Abbildung 5: Beim knoten-PC sehen die Einstellungen etwas anders aus, so wird hier z. B. die SSH-Konfiguration zwingend benötigt

Arbeit für den Cluster

Um ein Cluster-Projekt zu beginnen, müssen Sie zunächst nichts besonderes tun. Öffnen Sie wie üblich mit dvd::rip ein existierendes Projekt oder legen ein neues an. Konfigurieren Sie das Projekt wie gewohnt.

Der Unterschied besteht darin, dass Sie am Ende statt auf Transcode Video auf Add To Cluster klicken. Falls nicht schon geschehen, öffnet sich das Cluster-Control-Fenster, und das Projekt wird an die Liste Project Queue angehängt. Außerdem wird das Fenster Edit Cluster Project geöffnet (Abbildung 6), in dem Sie noch einige Einstellungen vornehmen können – etwa, ob temporäre Dateien so früh wie möglich gelöscht werden sollen oder die AVI-Datei am Ende gleich auf CD-Größe aufgeteilt werden soll.

Abbildung 6: Ein paar besondere Einstellungen für ein Cluster-Projekt

Abbildung 6: Ein paar besondere Einstellungen für ein Cluster-Projekt

Wenn alles eingestellt ist, drücken Sie Ok. Im mittleren Bereich des Cluster-Control-Fensters (Abbildung 7) sehen Sie die Job-Liste für dieses Projekt. Diese führt alle durchzuführenden Schritte und die jeweiligen Abhängigkeiten, die sich ergeben, wenn bestimmte Schritte erst nach Abschluss von anderen begonnen werden können, auf.

Startschuss

Per Klick auf Schedule Project beginnt die Verarbeitung. Die Jobs werden der Reihe nach den freien Knoten zugewiesen. Es gibt eine Fortschrittsanzeige, die Sie darüber informiert, wie weit die einzelnen Jobs sind.

Mit Stop Node und Start Node können Sie jederzeit einzelne Knoten ab- bzw. einschalten. Wenn gerade ein Job auf dem Knoten läuft, wird dieser abgebrochen und bei nächster Gelegenheit erneut gestartet.

Sie können auf diese Weise beliebig viele Projekte auf das Cluster legen. Mit den Knöpfen Move Up und Move Down legen Sie deren Priorität fest.

Abbildung 7: Hier sehen Sie ein Cluster mit drei Knoten bei der Arbeit

Abbildung 7: Hier sehen Sie ein Cluster mit drei Knoten bei der Arbeit

Wenn das Projekt fertig berechnet wurde, wird es in der Liste entsprechend gekennzeichnet und nach unten verschoben. Mit Remove Project können Sie es dann auch ganz aus der Liste entfernen, um die Sicht für neue Projekte frei zu machen.

Das Cluster-Control-Fenster kann übrigens inklusive dvd::rip jederzeit geschlossen werden: Der Cluster Control Daemon läuft unabhängig davon. Wenn Sie den Daemon beenden wollen, wählen Sie hierzu Shutdown Daemon. Das Fenster schließt sich, und der Daemon wird sich kurze Zeit später beenden, wobei natürlich auch alle laufenden Jobs abgebrochen werden.

Abschließend möchten wir noch auf ein besonderes Projekt verweisen, das auf dem transcode / dvd::rip Cluster aufbaut: eine boot-fähige Linux-CD [6], die alles an Bord hat, um aus einem beliebigen Rechner einen dvd::rip-Cluster-Knoten zu machen. Das System wird im RAM gestartet und benötigt keine Linux-Partition auf der Festplatte. Damit kann man auch eigentlich nicht unter Linux betriebene Rechner (es soll ja noch ein paar davon geben) kurzzeitig in einen dvd::rip-Cluster einbinden.

Glossar

Transkodierung

Die Umrechnung von Video- und Audiodaten in ein anderes Dateiformat (z. B. MPEG2 Video nach DivX4 und AC3 Audio nach MP3).

PSU

Die Program Stream Unit ist eine interne Verwaltungseinheit von DVD-Videos. Bei der Zerlegung des Videodatenstroms in voneinander unabhängige Teile müssen die PSUs berücksichtigt werden.

NFS

Network File System. Die Standardmethode um unter Unix über das Netzwerk auf die Festplatte anderer Rechner zuzugreifen.

SSH

SSH ist ein Protokoll, welches ähnliche Dienste realisiert wie telnet, d. h. man kann sich mit dem ssh Programm interaktiv auf anderen Rechnern im Netz einloggen. Im Unterschied zu telnet wird die Kommunikation dabei aber vollständig verschlüsselt.

Public Key

Neben der üblichen Passwortabfrage kann SSH Public-Key-Authentifizierung verwenden. Dabei wird ein auf dem Heimrechner erstellter Schlüssel (der Public Key) auf dem entfernten Rechner in eine Liste von autorisierten Schlüsseln eingetragen. Wenn der eigene Public Key auf dem Heimrechner nicht mit einem Passwort geschützt ist, ermöglicht dies auch das Einloggen auf dem entfernten Rechner ohne Passwort.

Infos

[1] “DVDs gequetscht und gebrannt”, Artikel zu dvd::rip und transcode, LinuxUser 04/2002, Seite 52, http://www.linux-user.de/ausgabe/2002/04/052-dvdrip/dvdrip.html

[2] http://www.theorie.physik.uni-goettingen.de/~ostreich/transcode/, das Kommandozeilenprogramm zur Videobearbeitung unter Linux von Thomas Östreich

[3] http://www.exit1.org/dvdrip/, dvd::rip ist die transcode-Oberfläche zum Kopieren von DVDs

[4] http://www.cpan.org/modules/by-module/Storable/, Perl-Modul Storable, wird von dvd::rip benötigt

[5] http://www.cpan.org/modules/by-module/Event/, Perl-Modul Event, wird von dvd::rip benötigt

[6] http://www.ronsmits.org/cluster-node.html, boot-fähige transcode-Cluster-Mode-Linux-CD

Der Autor

Jörn Reder ist der Programmautor von dvd::rip, Open-Source-Verfechter und begeisterter Perl-Entwickler. Er arbeitet für die dimedis GmbH, Köln, und entwickelt dort schwerpunktmäßig Internet-Datenbankanwendungen.

LinuxUser 05/2002 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben