Migration d'une gentoo LVM-Reiserfs à une Freebsd ZFS - Partie II
Par Dante le dimanche 21 décembre 2008, 23:36 - Linux/BSD - Lien permanent
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.