Table des matières

,

Comment utiliser dvdrip/transcode en mode cluster ?

"Comment accélérer l'encodage d'une vidéo en utilisant plusieurs ordinateurs sous GNU/Linux"

Ce tutoriel est destiné à un large public, c'est pourquoi je l'ai volontairement vraiment détaillé. J'apprécie quotidiennement ce mode cluster, et je souhaite le faire découvrir à un maximum de passionnés. Les utilisateurs plus expérimentés sous Linux/Ubuntu pourront sauter de nombreuses étapes, ou bien me corriger si des erreurs se sont glissées dans cette présentation.

Présentation de transcode et dvdrip

Transcode est un outil très puissant permettant de manipuler les fichiers multimédia (vidéo / audio).
Il peut, entre autres, vous permettre d'encoder vos DVD dans un format compressé pour vos sauvegardes personnelles. Son utilisation se fait en ligne de commande.

Dvdrip est une interface graphique de Transcode facilitant ainsi son utilisation. Il intègre le mode cluster ou "grappe" en français.

Le mode cluster

Le clustering est une technique permettant de combiner plusieurs ordinateurs lorsque de nombreux calculs sont à effectuer, chaque machine connectée s'appelle « nœud » ou node en anglais. Dans notre cas, nous allons créer un réseau local NFS / SSH (réseau local classique Linux) et laisser le démon cluster répartir le travail sur tous les ordinateurs de ce réseau. Le temps d'encodage sera donc plus faible. À ma connaissance il n'y a pas de limite du nombre de PC connectés.

Voilà un aperçu de ce que l'on peut obtenir avec un réseau de 3 PC, les « nœuds » correspondant aux machines connectées.

controledvdripcluster9qy.jpg

Sur mon installation, l'encodage d'un film me prenait 4h avec mon ordinateur le plus récent. Maintenant en ajoutant mes deux autres PC cela ne prend que 2h20 environ. Ça vaut le coup de s'y mettre. La configuration de mes PC figure sur le schéma un peu plus bas.

Matériel

Vous pouvez utiliser des ordinateurs de puissance différente, même les vieilles machines qui traînent dans un coin de votre grenier. Tout le travail effectué par celles-ci, sera toujours ça de moins à faire par vos bêtes de course. Il est quand même préférable d'avoir un réseau homogène, constitué de PC de puissance égale, nous verrons plus tard pourquoi.

* Une carte réseau Fast Ethernet 10/100 Mbps reconnue et fonctionnelle sur chaque ordinateur.
* Un routeur ou un switch.
* Le tout relié par des câbles Ethernet droits RJ45

Pré-requis

Fonctionnement du mode cluster en réseau local

Voici un schéma qui représente globalement ce que nous souhaitons réaliser. Pour me faciliter la tâche je me suis basé sur mon propre réseau local, à savoir un réseau de 3 PC derrière un routeur et j'ai remplacé les noms de machines par PC1 PC2 et PC3 et les noms d'utilisateurs par tux1 tux2 et tux3 selon la machine.

PC1 sera le PC principal qui servira de serveur et de lieu de stockage, c'est sur ce PC qu'il y aura le plus gros du travail à réaliser. Concernant PC2 et PC3, la configuration est assez rapide, à vous de rajouter autant de machines que vous pouvez, les réglages seront toujours les mêmes (PC4, PC5…).

Note: Ce schéma reste valable pour toute version supérieure d'Ubuntu.

Installation des applications et serveurs

Sur PC1

Installer les paquets

apt://nfs-kernel-server,nfs-common,ssh,imagemagick,ogmtools,xvid4conf,mjpegtools,transcode,dvdrip,mplayer-skins,mplayer-fonts,libdvdcss2,subtitleripper,libxvidcore4

Sur PC2, PC3...

Les applications à installer sont moins nombreuses.

apt://ssh,openssh-server,openssh-client,nfs-common,transcode,libdvdcss2,libxvidcore4,ogmtools

Création des dossiers

Je rappelle que pour une question de clarté, j'ai choisi "tux" comme nom d'utilisateur suivi du numéro du PC auquel il appartient, tux1 pour pc1… à vous d'adapter selon vos noms d'utilisateurs.

Sur chaque PC, nous allons créer le dossier "Divx" situé dans /home/tux(1,2,3…)/

Configuration du serveur NFS sur PC1

Tous les fichiers à encoder seront stockés "réellement" dans /home/tux1/Divx.
Il est donc primordial que PC2 et PC3 aient le droit d'écrire dans ce dossier en utilisant le partage de fichier NFS.

gksudo gedit /etc/hosts.allow

et insérer les lignes suivantes dans le fichier texte :

portmap:192.168.2.3 192.168.2.4
lockd:192.168.2.3 192.168.2.4
mountd:192.168.2.3 192.168.2.4
rquotad:192.168.2.3 192.168.2.4
statd:192.168.2.3 192.168.2.4

Enregistrez et fermez.

gksudo gedit /etc/exports

et insérer la ligne suivante dans le fichier texte :

/home/tux1/Divx 192.168.2.3(rw,sync) 192.168.2.4(rw,sync)

Enregistrez et fermez.

sudo /etc/init.d/nfs-kernel-server restart

Voilà pour la configuration du serveur NFS sur PC1.

En cas de souci, je vous renvoie sur ce lien du Wiki.

6. Configuration du serveur SSH sur PC1

Le chef d'orchestre

Le duo SSH / demon cluster peut être considéré comme le chef d'orchestre de toute cette organisation. Il va permettre de faire circuler l'information et de distribuer les différentes tâches. Grâce à SSH vous pouvez prendre le contrôle de la machine PC2 tout en restant sur PC1.

Un mot de passe bien gênant

Bien sûr, ce système fort pratique pour toutes manipulations à distance, nécessite l'entrée du mot de passe de l'utilisateur du PC distant. C'est ce qui nous gêne dans notre cas.

Lors d'un encodage en mode cluster, le démon cluster interroge toutes les machines (noeuds) disponibles et répartit le travail sur chacun. Seulement il faut entrer le mot de passe à chaque nouvelle connexion et nouvelle portion de travail créée. Cela devient vite infernal voire impossible à gérer.

C'est pourquoi nous allons automatiser cette tâche afin de ne plus avoir à donner aucun mot de passe, le démon cluster pourra travailler sans être bloqué.

Automatisons la tâche pour les mots de passe

Tout se fait de PC1 :

ssh-keygen -t dsa

à la phrase "Enter file in which to save the key (/home/tux1/.ssh/id_dsa)" faites juste Entrée
et à la phrase
"Enter passphrase (empty for no passphrase):" entrer le mot de passe ou passphrase de votre choix (5 caractères minimum).

puis

ssh-copy-id -i ~/.ssh/id_dsa.pub tux3@192.168.2.3

mot de passe utilisateur tux3

ssh-copy-id -i ~/.ssh/id_dsa.pub tux2@192.168.2.4

mot de passe utilisateur tux2

ainsi de suite pour toutes les machines connectées….

Et pour finir

ssh-add

et entrer le mot de passe ou passphrase donné un peu plus haut.

Attention

Si vous devez redémarrer PC1, vous devrez retaper après chaque redémarrage

ssh-add

et le mot de passe ou passphrase, c'est tout.

On arrive à la fin de la configuration de SSH. Normalement aucun mot de passe ne sera demandé lors de l'utilisation du mode cluster.

7. Montage automatique des fichiers (fstab) sur PC2 et PC3

Tout à l'heure, nous avons configuré le serveur NFS sur PC1 pour partager son répertoire /home/tux1/Divx
(rappelez-vous le gksudo gedit /etc/exports), et bien maintenant nous allons donc monter (virtuellement) ce répertoire dans PC2 et PC3.

Faites cette manipulation sur toutes vos machines connectées (PC2, PC3, PC4...)

Exemple à effectuer sur la machine PC2 :

gksudo gedit /etc/fstab

et insérer la ligne suivante :

192.168.2.2:/home/tux1/Divx /home/tux2/Divx nfs rw 0 0

Enregistez et fermez.

gksudo gedit /etc/hosts.allow
portmap:192.168.2.2 192.168.2.3
lockd:192.168.2.2 192.168.2.3
mountd:192.168.2.2 192.168.2.3
rquotad:192.168.2.2 192.168.2.3
statd:192.168.2.2 192.168.2.3

Enregistrez et fermez.

Pour que le montage soit pris en compte tout de suite :

sudo mount -a

Faites un essai en créant un fichier dans /home/tux2/Divx
Normalement il devrait apparaître dans /home/tux1/Divx

Et ainsi de suite pour toutes les machines connectées.

8. dvdrip

Si tout s'est bien déroulé, nous n'avons plus à intervenir sur PC2, PC3… Tout se passe maintenant sur PC1. Allez courage, le plus intéressant arrive.

Configuration générale

Selon la version utilisée de dvdrip, nous pouvons trouver le bouton Grappe ou Cluster, c'est la même chose.

Lancer dvdrip puis Edition –> préférences

La configuration concernant le lecteur de DVD doit être correcte. Pour la suite cela doit ressembler à ça :

dvdrippreferences5tr.jpg

Toujours dans les préférences, à "Options de la grappe" ou "Options du cluster" selon votre version :

dvdripclusteroption4be.jpg

Configuration du cluster et ajouts des noeuds (pc1, pc2 et pc3)

Il est temps d'ajouter enfin toutes les machines de votre réseau, que l'on va à présent appeler "noeuds".
Grappe –> panneau de contrôle –> ajouter un noeud

D'abord on ajoute le noeud du PC principal PC1 :

ajouternoeudtux19pv.jpg

Un petit "test", et vous devriez voir ceci :

messagedvdvripclustertux16bl.jpg

On ajoute ensuite tous les autres noeuds un par un, "ajouter un noeud" toujours, mais cette fois avec ce genre de configuration, un exemple avec PC2 :

ajouternoeudtux20sq.jpg

Un autre "test", et on obtient un seul "not ok" :

messagedvdvripclustertux27gt.jpg

C'est normal, cool. Ajouter au fur et à mesure toutes les machines de votre réseau, en prenant comme exemple PC2.

Votre panneau de contrôle doit maintenant contenir tous vos noeuds/machines disponibles et ils sont pour le moment arrêtés.

Faites "démarrer le noeud" pour chacun d'eux. PC1 est le plus rapide à se connecter, pour les deux autres la connexion met une dizaine de secondes, jusqu'à se mettre en position "idle", c'est à dire prêt à travailler.

9. Premier essai

Insérer un DVD, je vous conseille de juste lire le début de ce DVD dans votre lecteur multimédia afin de déverrouiller la sécurité (grâce à libdvdcss2). Une fois que le DVD passe bien:

Nouveau projet

dvdrip –> Fichier –> nouveau projet
Pour l'exemple je l'ai appelé "22"

nouveauprojetdvdripcluster9va.jpg

Lecture de la table

dvdrip –> Extraction –> lire la table des matières du DVD
Les différents plages du DVD apparaissent comme ceci:

extractiondvdripcluster3xh.jpg

Choisissez la plage qui vous convient

Utilisez "visualiser les titres ou chapitres sélectionnés" pour être sûr de sélectionner la bonne plage. Pour cet essai, prenez plutôt une plage de courte durée 5 à 10 minutes, de façon à faire la procédure en entier en peu de temps.

Extraire les titres

Prévoyez au moins 7 Go de libre (film complet) sur le disque dur de PC1 Quand vous avez sélectionné votre plage –> faites "extraire les titres ou chapitres sélectionnés"
L'extraction commence.

Petite vérification

Pendant l'extraction, profitez-en pour regarder sur PC2 et PC3 dans leur /home/tux(2et3)/Divx respectif.
Le fichier "22" devrait être présent.

Note

Il faut garder à l'esprit que les répertoires /home/tux2/Divx et /home/tux3/Divx ne sont rien d'autre qu'un accès direct à /home/tux1/Divx. Rien n'est écrit sur le disque dur de PC2 et PC3. Mais toute mauvaise manipulation dans le fichier "Divx" que l'on soit sur PC2, PC3… aura des répercussions sur toute la procédure.

En revanche, et c'est là que cette technique est appréciable, si une machine tombe en panne ou se bloque pour diverses raisons, à part PC1 évidemment, il n'y aura aucun problème. Le démon cluster attribuera la tâche en cours de la machine fautive à une autre machine, c'est un système très souple et très stable. Vous pourrez à tout moment arrêter n'importe quel noeud, même PC1.

L'extraction doit être terminée

Je ne rentre pas dans les détails d'encodage proprement dit : redimensionnement, sous-titres… chacun ses goûts. Juste pour information, le trio : conteneur avi –> xvid4 mode pass 2 –> Sons AC3 fonctionne parfaitement en mode cluster.
En revanche, j'ai rencontré des problèmes lors de l'encodage du son en MP3 et Ogg J'attends des retours là dessus.

Le mode cluster ne permet pas la prévisualisation d'un échantillon. Pour cela vous utiliserez uniquement PC1.

Lorsque vous avez suivi les précédentes étapes, et que vos paramètres sont bons :

Encoder –> "ajouter à la grappe" en bas à droite, cette fenêtre apparaît:

dvdripclusterproprietes5cc.jpg

Ici je vous conseille de mettre Oui pour la suppression des fichiers avi temporaires, en revanche Non pour les fichiers Vob, car si votre encodage ne vous convient pas, vous pourrez le reprendre sans problème. Validez.

Vérifier que vos noeuds sont démarrés et faites "Programmer ce projet" ou "Schedule Project". Normalement tous vos noeuds doivent se mettre au travail, comme ceci:

controledvdripcluster9qy.jpg

Elle est pas belle la vie!!!

10. Trucs et astuces

Si votre réseau est composé d'ordinateurs de puissance inégale

Comme je l'ai annoncé dans la section matériel, tout ordinateur même le vieux coucou peut être utile dans ce genre de configuration, car tout calcul effectué par celui-ci ne sera pas à faire par vos bêtes de course. Comme c'est un système très souple, le petit PC peut commencer une tâche tranquillement, mais il n'est pas obligé de la finir, vous pouvez sans problème le "stopper", un autre PC prendra le relais.

C'est pourquoi, je vous conseille de surveiller la fin de l'encodage, car il se peut (c'est très fréquent) que vos PC puissants aient fini toutes leurs tâches et soient en position d'attente, pendant que votre petit PC poussif peine à finir son travail.

Le mode cluster perd tout son sens car vous allez peut-être attendre des heures.

Pour corriger ce souci

Stoppez le noeud du PC poussif, puis les autres, en ne laissant que celui de la machine la plus puissante, c'est celui-ci qui prendra le relais et qui finira le travail beaucoup plus rapidement.

Pour corriger ce souci lorsque vous avez lancé plusieurs projets

Dans le même cas de figure, plutôt que d'être en position d'attente, les PC puissants sont déjà passés au projet suivant, laissant seul le petit PC finir le travail.

Dans ce cas stoppez "tous les noeuds" –> sélectionnez le projet à finir (en haut du panneau de contrôle) et redémarrez le PC le plus puissant en premier, il finira le travail. Puis redémarrez tous les autres noeuds qui se remettront au boulot sur les autres projets.

11. Dépannage

Si vous constatez que les noeuds distants se mettent en position "running" mais qu'il n'y a aucune activité
ssh-add

et ré-entrer le mot de passe :

Redémarrez portmap

sudo /etc/init.d/portmap restart

Vérifiez que le montage du dossier "Divx" sur les PC distants fonctionne bien. Assurez-vous qu'un firewall ne bloque pas l'accès.

Si toujours rien lire la suite…

"Can't start local Démon..."

Si le démon refuse de démarrer

Redémarrez dvdrip
Redémarrez portmap

sudo /etc/init.d/portmap restart

Si toujours rien

dvdrip-master 2

Le message vous donne des informations sur les noeuds, les projets en cours…. Si vous avez le message suivant:
"Changement de fichier du projet" '/home/tux1/.dvdrip-master/projects/00000……22(exemple).rip'

Allez dans : /home/tux1/.dvdrip-master/projects/ Et supprimez le projet en question.

Puis dvdrip –> Grappe –> panneau de contrôle.

12. Contact

Mails: julian_duhamel@yahoo.fr
Pour toutes remarques sur ce tutoriel:
http://forum.ubuntu-fr.org/viewtopic.php?pid=43136#p43136

13. Liens et sources

Site Officiel de dvdrip: http://www.exit1.org/dvdrip/index.cipp
Site Officiel francophone Ubuntu: http://www.ubuntu-fr.org/
Forum francophone Ubuntu: http://forum.ubuntu-fr.org/
Le site Funix: http://www.funix.org/fr/linux/conversion.htm
Pour tout savoir sur SSH: http://doc.ubuntu-fr.org/ssh


Contributeurs : Rédigé par Julian