Cet article a pour but d'expliquer comment passer du système de fichiers ext2 vers le système de fichiers journalisé qu'est ReiserFS.
Qu'apporte de plus ReiserFS par rapport à l'ext2 ?
Pour commencer, la journalisation. Ce qui permet de ne plus perdre son temps avec fsck à chaque fois que la batterie de votre portable se vide, que votre kernel décide que votre partition a été montée trop de fois, que votre système crash ... ReiserFS utilise les "balanced trees", ce qui permet d'obtenir de meilleures performances. Vous pouvez également placer plus de 100 000 fichiers dans un même répertoire sans que cela ne pose le moindre problème. Contrairement aux systèmes de fichiers classiques, si vous écrivez des fichiers de 100 bytes, ReiserFS n'utilise pas un block pour chacun d'entre eux, mais peut en enregistrer plusieurs dans un même block, ce qui évite de perdre de l'espace disque inutilement. De plus, ReiserFS évolue sans cesse. Actuellement à la version 3.6, la future version, la 4, apportera son lot de nouveautés parmis lesquelles le passage aux "Dancing Trees", pour un fs plus rapide, un système de plugins pour les fichiers, les répertoires, plein de nouvelles fonctionnalités concernant la sécurité, l'encryption des données ...
Comment procéder ?
Malheureusement, il n'existe pas, et n'existera sans doute jamais de convertisseur ext2 -> ReiserFS. De ce fait, à moins de passer par une distribution qui propose dès la phase d'installation ReiserFS dans les choix disponibles, il vous faudra procéder manuellement. Le mieux étant d'avoir un disque libre sous la main.
Première étape, configurer puis compiler un kernel supportant ReiserFS. Dans le cas d'un kernel 2.2 il vous faudra patcher les sources. Dans les kernels 2.4, ReiserFS est disponible en standard. Pour la marche à suivre, je vous conseil de lire mon article sur le kernel. Juste une petite précision, quand vous activerez le support du ReiserFS, activez le en dur et non sous forme de module.
Patchs pour la branche 2.2.x
Kernels 2.2.x
Kernels 2.4.x
Notez qu'il est vivement déconseillé de compiler avec le gcc 2.96 livré avec les Red Hat 7.x et les dernières Mandrake.
Nous allons maintenant installer les reiserfsprogs. Des packages Debian Potato et Debian Sid sont également disponibles.
Avant de passer au formatage du disque, il va falloir le partitionner. Vous pouvez créer des patitions de taille identique ou supérieure à celles de votre premier disque. Utiliser fdisk et cfdisk.
Une fois que cela est fait, nous allons passé au formatage du disque dur. Celui qui est libre, pas votre disque système :) Pour ce faire, nous allons utilisé la commande mkreiserfs /dev/hdXX. Là encore, vous l'aurez compris, vous devez remplacer hdXX par le périphérique correspondant. (hda pour IDE0 maitre, hdb pour IDE0 esclave, hdc pour IDE1 maitre, hdd pour IDE1 esclave). Dans le cas de disques SCSI, il s'agit bien entendu de /dev/sdXX. Le formatage en ReiserFS est extrêmement rapide. Ne vous inquiétez pas si cela ne prend que quelques secondes :)
Montez votre disque ou vos partitions. mount -t reiserfs /dev/hdXX /mnt/disque2 (par exemple). Il ne nous reste plus maintenant qu'a copier le contenu du premier disque sur le second. Si vous n'avez que deux partitions, une racine et une swap, c'est facile, il vous suffit d'utiliser cp -a / /mnt/disque2. Dans le cas où il y aurait de multiples partitions, vérifiez que vous copiez bien les données au bon endroit.
Avant de rebooter, il nous faut pensé à modifier quelques fichiers de configuration. Attention, il s'agit de ceux se trouvant sur le second disque. En premier, le fichier /etc/fstab (qui, d'après notre précédent exemple, correspond à /mnt/disque2/etc/fstab). Dans ce dernier, il nous faut modifier la structure des partitions, dans le cas où elle serait différente du premier disque, ainsi que le type des partitions. Pour ce faire, il suffit de remplacer "ext2" en "reiserfs". Pous pouvez également avoir à modifier lilo.conf dans le cas où la partition racine serait différente. En modifiant les fichiers, ayez toujours en tête que votre second disque deviendra par la suite le premier, votre disque de boot. Donc, si maintenant il correspond à /dev/hdb, après la permutation des disques il deviendra /dev/hda ...
Nous allons maintenant préparer la disquette de boot. Même si vous possédez déjà de nombreuses disquettes de boot, il y a de fortes chances pour que ces dernières ne supportent pas ReiserFS. Cette phase est donc importante.
Placez une disquette vierge dans le lecteur, sans la monter. Utilisez la commande cat kernel > /dev/fd0 en remplaçant "kernel" par le nom du fichier représentant ce dernier. Maintenant, nous allons spécifier au kernel présent sur la disquette où se trouve votre partition racine. rdev -o 508 /dev/fd0 /dev/hdXX. man rdev pour le descriptif des options. Bien entendu, vous remplacerez /dev/hdXX par le device correspond à votre partition racine. La partition racine (root) est désignée comme étant / Il s'agit bien entendu de la racine de votre second disque, qui deviendra par la suite le premier :)
Il ne nous reste maintenant plus qu'a faire un shutdown de la machine. Ensuite vous allez permuter les disques et redémarrer sur la disquette de boot que nous avons créé. De retour au prompt, il faut réinstaller LILO. Il suffit de taper tout bêtement lilo. Si tout se passe bien, vous pouvez retirer la disquette et redémarrer le système. Vous devriez désormais avoir un système valide utilisant ReiserFS.