Dumbbell's home

ReiserFS pour FreeBSD

ReiserFS est un système de fichiers journalisé, développé par Hans Reiser (namesys.com). Il est disponible sous Linux depuis la série 2.4.x. En revanche, il n'y a aucun support sous FreeBSD, et donc les partitions ReiserFS ne sont pas accessibles.

Depuis le 10 juillet 2004, je travaille sur un port de ReiserFS vers FreeBSD 5-CURRENT. L'objectif est d'avoir un accès en lecture seule à une partition ReiserFS 3.6. Il n'est pas prévu pour l'instant d'implémenter le support en écriture.

Téléchargement

Limitations actuelles

Pour connaître les limitations actuelles du module, référez-vous à la section Avancement du projet.

Version en développement

Un mirroir bien plus rapide que ma connexion ADSL est disponible à l'adresse suivante : http://dumbbell.nerim.net/

ReiserFS for FreeBSD, version 0.1.6 (jeudi 14 avril 2005)

Mise à jour du locking pour être en accord avec 6-CURRENT.

Pour FreeBSD 6-CURRENT uniquement.

Fichiers :

ReiserFS for FreeBSD, version 0.1.5 (jeudi 07 avril 2005)

Support de l'exportation NFS.

Pour FreeBSD 6-CURRENT uniquement.

Fichiers :

ReiserFS for FreeBSD, version 0.1.4 (mardi 05 avril 2005)

Mise à s'aligner avec les derniers changements du VFS.

Pour FreeBSD 6-CURRENT uniquement.

Fichiers :

ReiserFS for FreeBSD, version 0.1.3 (jeudi 10 février 2005)

Correction d'un problème de compilation.

Fichiers :

ReiserFS for FreeBSD, version 0.1.2 (lundi 7 février 2005)

Support de FreeBSD 6-CURRENT.

Changements :

  • Adaptation aux derniers changements du VFS sous 6-CURRENT
  • Amélioration du mmap(2), qui n'est plus juste un read(2) derrière

Fichiers :

ReiserFS for FreeBSD, version 0.1.1 (lundi 18 octobre 2004)

Version de correction.

Changements :

  • Correction de plusieurs bugs provoquant des panic()

Fichiers :

ReiserFS for FreeBSD, version 0.1.0 (jeudi 26 août 2004)

Première version publique.

Nouveautés :

  • Accès en lecture de seule
  • Lecture de fichier par read(2) et mmap(2)
  • Support des liens symboliques
  • Cache d'inodes

Archives :

  • reiserfs_for_freebsd-0.1.0.tar.bz2 (somme MD5) (signature PGP)
  • reiserfs_for_freebsd-0.1.0.tar.gz (somme MD5) (signature PGP)

Installation

Ce module requiert FreeBSD 5.x, et les sources du noyau pour la compilation. Il a été testé avec FreeBSD 5.2.1-RELEASE, 5.2-CURRENT (plusieurs checkouts depuis la sortie de 5.2.1-RELEASE) et 6-CURRENT (datant du 23 août 2004).

Après avoir décompressé les sources, il faut executer les classiques make/make install :

freebsd# make
freebsd# make install

Le module noyau reiserfs.ko, ainsi que la commande mount_reiserfs seront compilés puis installés. L'ensemble utilisant les Makefiles du noyau, vous pouvez changer les paramètres de compilation et installation avec les même variables.

Ce serait nettement plus pratique s'il y avait un port.

Documentation

Méthode de travail

Pour éviter toute corruption d'un système de fichiers en production sur un disque dur, je passe par un système dans un fichier image. Je peux recréer et détruire ce fichier autant de fois qu'il le faut :) Tout d'abord, j'ai créé ce fichier sous Linux :

linux$ dd if=/dev/zero of=REISERFS bs=1k count=50k

Ce fichier accueillera le système de fichiers ReiserFS. Il doit faire un minimum de 32 Mo pour recevoir le journal. Ici, 50 Mo suffiront pour les tests. Il est temps de créer ce système de fichiers :

linux$ mkreiserfs -f -l "ReiserFS/FreeBSD" REISERFS

Cette commande va formatter le fichier REISERFS en mettant le label ReiserFS/FreeBSD. L'option -f force l'execution de la commande, sinon, elle s'arrête en emettant un warning sur le fait que ce fichier n'est pas une block device (autrement dit un disque dur par exemple).

Pour tester ce fichier et rendre les futurs essais plus réalistes, j'ai rempli le tout avec quelques fichiers :

linux# mount -o loop  REISERFS /mnt/reiserfs
linux# cd /mnt/reiserfs
linux# cp /etc/motd .
linux# mkdir "Le Dernier Samouraï"
linux# cp "~/audio/01 - Le Dernier Samouraï.ogg" "Le Dernier Samouraï"
linux# cd
linux# umount /mnt/reiserfs

En montant ce fichier grâce au module loop de Linux, j'ai pu tester puis copier un fichier texte et un fichier audio sur ce système de fichiers.

De retour sous FreeBSD, la commande mdconfig vient remplacer le mécanisme de loop de Linux. Elle permet d'associer le fichier REISERFS à une entrée dans /dev :

freebsd# mdconfig -a -t vnode -f REISERFS -u 0

La suite exige de pouvoir monter une partition ReiserFS sous FreeBSD :)