Apportez votre aide…
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.
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
- Chaque ordinateur du réseau doit avoir une distribution Linux installée, de préférence la distribution Ubuntu Breezy ou Dapper.
- Votre réseau doit être correctement configuré pour que vos PC puissent communiquer librement.
- Je ne prends pas en compte la présence d'un firewall, n'oubliez pas de régler le/les vôtres pour cette utilisation.
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
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.
- Il faut spécifier à PC1, quels PC (adresse IP de PC2 et PC3) sont autorisés à communiquer avec lui :
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.
- Nous allons autoriser PC2 et PC3 à avoir accés au dossier /home/tux1/Divx, toujours sur PC1
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.
- Maintenant que notre configuration est opérationnelle, on redémarre le serveur NFS
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 :
Toujours dans les préférences, à "Options de la grappe" ou "Options du cluster" selon votre version :
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 :
Un petit "test", et vous devriez voir ceci :
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 :
Un autre "test", et on obtient un seul "not ok" :
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
Lecture de la table
dvdrip –> Extraction –> lire la table des matières du DVD
Les différents plages du DVD apparaissent comme ceci:
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:
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:
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