Suite du : post précédent, mais en beaucoup plus simple. Maintenant on veut accéder à notre lvm avec des logical volumes formatés en reiserfs.

LVM sous FreeBSD

Sachez tout d'abord que si lvm est bel est bien supporté sous FreeBSD, cela n'est vrai que sur la branche 7.0-STABLE (et -CURRENT). Or il ne va sans dire que ses branches restent expérimentales.
C'est pourquoi je vous propose de mettre en -STABLE que les sources du kernel, afin de bénéficier temporairement du module geom_linux_lvm qui nous intéresse. Ensuite, on retournera sur un kernel -RELEASE.

Le Module Kernel

Il se nomme geom_linux_lvm, et n'est disponible que dans la branche -STABLE au moment de l'édition du billet.

Un kernel -STABLE

Vous devez avoir le kernel 7.0-STABLE de FreeBSD. Pour cela, utiliser le fichier /usr/share/example/cvsup/stable-supfile et cvsup, Using CVSup. Remplacez-y le nom de l'hôte par un des mirroirs cvsup, commentez src-all et décommentez src-base, src-sys et src-crypto.

La recompilation

Pour recompiler le noyau, soit vous ajoutez la ligne options GEOM_LINUX_LVM dans le fichier de config du kernel en même temps que la ligne options KVAPAGES=512. Soit vous ajoutez geom_linux_lvm_load="YES" dans le /boot/loader.conf.

Une fois le noyau recompilé et le système redémarré, vous verrez apparaître un dossier /dev/linux_lvm avec dedans les logical volumes de votre lvm.

Le LVM

Pour connaitre les détails, et donc les disques utilisés par le volume group, exécuter :
geom linux_lvm list

Vous n'avez plus qu'à les monter :

mkdir -p /vg/lv1
mount -t reiserfs -o ro /dev/linux_lvm/vg-lv1 /vg/lv1

Dans le cas où le système de fichiers soit reiserfs.

Le zpool mirror

Ensuite, vous pouvez créer votre zpool tank en faisant attention de le créer sur les bons disques :

fdisk -BI /dev/da2
fdisk -BI /dev/da3
bsdlabel -w /dev/da2s1
bsdlabel -w /dev/da3s1
zpool create tank da2s1 da3s1

Puis vous créez vos dossier zfs dans ce zpool, transférez les fichiers du lvm au zpool. Et vous finalisez votre zpool (attention, le volume group du lvm va être détruit !) :

fdisk -BI /dev/da0
fdisk -BI /dev/da1
bsdlabel -w /dev/da0s1
bsdlabel -w /dev/da1s1
zpool attach tank da2s1a da0s1a
zpool attach tank da3s1a da1s1a

Pensez tout de même à vérifiez que les disques durs mis en mirror ensembles (da0 et da2, da1 et da3) sont bien ceux de taille correspondante. Au pire, vous pouvez vous en sortir avec un offline puis un replace.

Le zpool raidz

Ainsi, vous avez deux zpool, system et tank, tout deux en mirror sur votre système. Cela est plutôt inutile, il aurait mieux fallu rajouter les disques dans le zpool system.

Sauf si vous voulez avoir un zraid sur le zpool tank. Malheureusement, on peut pas créer de zraid en attachant des disques. Pour cela il va falloir ruser avec la méthode des fichiers blocs que je vais décrire.

Les fichiers blocs.

Pour cela, on va créer deux fichiers blocs qui vont servir à créer le zpool en raidz, puis on les mettra offline pour finalement les remplacer.

dd if=/dev/zero of=/home/disk1.img bs=1M count=1 seek=409600
dd if=/dev/zero of=/home/disk2.img bs=1M count=1 seek=768000
mdconfig -a -t vnode -u 1 -f /home/disk1.img
mdconfig -a -t vnode -u 2 -f /home/disk2.img
fdisk -BI /dev/da2
fdisk -BI /dev/da3
bsdlabel -w /dev/da2s1
bsdlabel -w /dev/da3s1
zpool create tank raidz md1 da2s1a raidz md2 da3s1a
zpool offline tank md1 md2
mdconfig -d -u1 -u2
rm /home/disk*.img

Finalisation

Puis on copie les fichiers et on remplace md1 et md2 par les disques qui étaient dans le lvm :

fdisk -BI /dev/da0
fdisk -BI /dev/da1
bsdlabel -w /dev/da0s1
bsdlabel -w /dev/da1s1
zpool replace tank md1 da0s1a
zpool replace tank md2 da1s1a

En étant sûr que les tailles correspondent.

Vous pouvez faire de même si vous avez 6 disques, répartis en 2 zraid.