BTRFS sans doute un des « next big things » de Linux. Le système de fichiers développé initialement par Chris Mason (cf podcast) d’Oracle (http://oss.oracle.com/projects/btrfs) est maintenant Mainline dans le noyau Linux et sera disponible à partir de 2.6.29, encore RC2 aujourd’hui. Il fait déjà des petits puisque Coherent Remote FileSystem s’appuie sur BTRFS. Pour tout savoir, connectez-vous sur le site associé : http://btrfs.wiki.kernel.org.
Parmi ces nombreuses fonctionnalités, les snapshots permettent de créer différentes versions du même systèmes de fichiers, en lecture ET écriture; Si vous connaissez les technologies de Netapp, ces snapshots sont un peu comme autant de FlexClone, sur un système de fichier Open-Source. En substance: « BTRFS rocks! »
Il reste sans doute encore du chemin pour que BTRFS remplace EXT3 ou EXT4. C’est d’autant plus vrai que EXT4 est tout juste stable depuis 2.6.28 qui ne sera disponible qu’avec Ubuntu Jaunty Jackalope… Enfin, si vous voulez un avant goût de BTRFS, vous pouvez l’installer sur les versions précédentes, comme Hardy-Heron ; voici comment!
1. Installer BTRFS
Note:
Les versions au delà de 0.16 ne sont pas, pour l’instant, utilisables avec les noyaux autre que 2.6.29.
Installer BTRFS est plutôt simple d’autant que le noyau de Hardy Heron est normalement compilé avec CONFIG_LIBCRC32C=m
. Pour commencer, installer uuid-dev
comme ci-dessous:
apt-get install uuid-dev
Ensuite téléchargez BTRFS à l’URL qui suit, compilez-le et installez le btrfs.ko comme ci-dessous:
mkdir btrfs
cd btrfs
wget http://www.kernel.org/pub/linux/kernel/people/mason/btrfs/btrfs-0.16.tar.bz2
tar -jxvf btrfs-0.16.tar.bz2
cd btrfs-0.16
make
sudo make modules_install
Vous pouvez le charger avec les modules du noyau:
modprobe libcrc32c
modprobe zlib_deflate
insmod btrfs.ko
lsmod |grep btrfs
Ensuite, installez les outils nécessaires pour utiliser BTRFS :
wget http://www.kernel.org/pub/linux/kernel/people/mason/btrfs/btrfs-progs-0.16.tar.gz
tar -jxvf btrfs-progs-0.16.tar.gz
btrfs-progs-0.16
make
sudo make install
2. Créer un système de fichiers
Si vous n’avez pas de volumes pour créer un système de fichiers btrfs, vous pouvez créer un fichier et le monter sur un device comme loop0 avec losetup :
cd /
mkdir /disks
cd /disks
dd if=/dev/zero of=/disks/disk.btrfs bs=1024k count=512
losetup /dev/loop0 /disks/disk.btrfs
losetup -a
Une fois que vous avez un device, vous pouvez le formater pour btrfs et monter le système de fichier comme ci-dessous; Cette première section permet d’effacer le volume si vous vous en êtes déjà servi:
cd /
umount /btrfs
dd if=/dev/zero of=/dev/loop0 bs=1024k count=512
Pour formater le système de fichier et le monter, voici les commandes à utiliser:
mkfs -t btrfs /dev/loop0
mkdir /btrfs
mount -t btrfs -o compress,subvol=. /dev/loop0 /btrfs
df -h
Vous noterez que dans le cas de BTRFS, les snapshots sont publiés sous le forme de sous-volumes; l’option subvol=.
indique donc de monter tous les snapshots sur le même point de montage. On peut également choisir de monter les snapshots séparément.
3. Illustrer l’utilisation des snapshots
Le snapshot default
est le sous-volume par défaut; une fois le volume monté, vous pouvez écrire dans ce sous-volume:
cd /btrfs
find
.
./default
echo 1 > default/1
find
.
./default
./default/1
Vous pouvez créer un premier snapshot sur le sous-volume par défaut; vous constaterez que le snapshot est accessible en lecture et écriture:
btrfsctl -s snap1 /btrfs/default
find
.
./default
./default/1
./snap1
./snap1/1
echo 2 > default/2
echo 3 > snap1/3
find
.
./default
./default/1
./default/2
./snap1
./snap1/1
./snap1/3
Vous pouvez également créer un snapshot à partir d’un autre snapshot comme ci-dessous:
btrfsctl -s snap2 /btrfs/snap1
find
.
./default
./default/1
./default/2
./snap1
./snap1/1
./snap1/3
./snap2
./snap2/1
./snap2/3
rm default/1
echo 4 > snap2/4
find
.
./snap2
./snap2/1
./snap2/3
./snap2/4
./default
./default/2
./snap1
./snap1/1
./snap1/3
Je vous laisse imaginer ce qu’on peut faire avec ce genre de fonctionnalités et une base de données. Et imaginez que vous puissiez y accéder par un réseau; depuis des machines virtuelles. Et si (quand ?) BTRFS était plus performant que les systèmes de fichiers actuels?
5 réflexions sur “BTRFS, FileSystem pour Linux par Oracle, et Ubuntu Hardy-Heron”
Super !
En fait, je ne l’avais pas encore fait! C’est corrigé maintenant!
Ma compréhension, c’est que tant que ZFS est sous CDDL, il ne pourra jamais être Mainline. En plus, pour l’instant ZFS est porté avec Fuse, i.e dans la stack user.
C’est la raison pour laquelle, même si Btrfs est encore loin, il présenté comme l’alternative à ZFS sur Linux. Il devrait donc être le filesystem de Linux plus que ZFS.
Pour ce qui est du test:
a) L’install sur Ubuntu Hardy Heron est expliquée ici
b) Ensuite pour créer le Filesystem:
zfs-fuse
zpool create greg /dev/loop0
zpool list
zfs create greg/nyfs
zfs snapshot greg/nyfs@snap0
zfs clone snap0 greg/snap0
root@arkzoyd-laptop:/greg/nyfs# df -h /greg/*
Filesystem Size Used Avail Use% Mounted on
greg/nyfs 472M 18K 472M 1% /greg/nyfs
greg/snap0 472M 18K 472M 1% /greg/snap0
Salut Grégory,
As tu deja fait quelques essais avec ZFS sur linux ?
++
-phil-
# btrfsck /dev/loop0
found 28672 bytes used err is 0
total csum bytes: 0
total tree bytes: 28672
btree space waste bytes: 23833
file data blocks allocated: 0
referenced 0
Btrfs Btrfs v0.18
Vous pouvez aussi compiler le noyau 2.6.29-rc2 avec BTRFS comme décrit ici ! N’oubliez pas de sélectionner BTRFS dans la liste des systèmes de fichiers.
Les commentaires sont fermés.