Archive pour la catégorie ‘Sysadmin’

Installation du systeme FreeBSD10 sur un pool ZFS

mardi 11 mars 2014

Le but de ce tuto est de montrer comment installer un systeme FreeBSD a partir de rien, sur un pool ZFS multi disque (mirroir ou zraid).

L’exemple ce basera sur une install en raidz1 sur 3 disques.

Prérequis :

Une ISO du système (la version CD suffit) ou une clé usb préparée a partir de l’image « memstick.img ».

Vous trouverez tout ca par ici.

Démarrage en mode « Live ».

Démarrez sur le support (cd ou usb) préparé a cet effet (voir prérequis).

Après la procédure de boot, vous vous retrouvez sur le premier écran de l’installeur.

tutofbsdzfs1

Choisissez le mode « Live CD ».

Vous vous retrouverez alors sur un écran de login : Logguez vous en root, sans mot de passe.

Vous constaterez que le clavier est en qwerty

Pour repasser en azerty (ou toute autre version de clavier) utilisez la commande « kbdmap », sans argument.

Cette commande affiche une liste dans laquelle vous pourrez choisir votre clavier.

tutobsdzfs2

Ensuite, listons nos disques avec camcontrol.

camcontrol devlist

La commande réponds avec la liste des lecteurs de disque.

tutobsdzfs3

La référence du disque est entre parenthèses, après la virgule. Ici, nous avons, en plus du lecteur cd, 3 disques (ada0, ada1 et ada2).

Vérifions ensuite l’état de partitionnement de nos disques :

gpart show ada0 ...

Cette commande, a lancer pour chaque disque, affiche le partitionnement.

Si aucun partitionnement n’est présent, le message s’affiche :

gpart: No such geom: ada0

Nous allons repartitionner les disques avec le mode GPT. Si un partitionnement est déja présent, nous le supprimons avec la commande :

gpart destroy -F ada0

Et ce pour chaque disque.

tutofbsdzfs4

Créons ensuite les partitions :

Pour chaque disque, nous allons créer 3 partitions GPT : boot, swap, et zfs. Nous allons aligner ces partitions sur des secteurs de 4k.

gpart create -s GPT ada0
gpart add -a 4k -s 64k -t freebsd-boot ada0
gpart add -a 4k -s 2G -t freebsd-swap -l swap-disk0 ada0
gpart add -a 4k -t freebsd-zfs -l zroot-disk0 ada0

Notez que nous ajoutons un label sur les partitions swap et zfs, pensez a mettre un nom différent sur chaque disque. Nous pouvons ensuite vérifier le partitionnement avec la commande « gpart show ».

gpart show ada0

tutobsdzfs5

Faites de même pour l’ensemble des disques.

Ensuite, nous allons poser tout de suite les secteurs de boot. Il est effectivement possible de le faire dès cette étape.

gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada...

Nous allons ensuite créer le pool ZFS.

Nous le monterons sur une racine alternative : /tmp/zfs. Notez que sous freebsd10, le fichier zpool.cache n’est plus nécessaire au démarrage.

La commande se décompose comme suit : zpool create -o cachefile=/tmp/zpool.cache -R /tmp/zfs nom_du_pool  [mirror|raidz1|raidz2] ada0p2 ada1p2 …

Choisissez le nom du pool. Dans notre exemple, nous choisirons « zroot« . Le type de vdev peux être mirror (disques en mirroir), raidz1 ou raidz2 (simple ou double parité). Le « p2 » suivant le nom du disque indique quelle partition nous souhaitons utiliser. Exemple :

zpool create -o cachefile=/tmp/zpool.cache -R /tmp/zfs zroot raidz1 gpt/zroot-disk0 gpt/zroot-disk1 gpt/zroot-disk2
zpool status

tutobsdzfs6

Nous allons ensuite créer les systèmes de fichier pour le système.

zfs create -o mountpoint=/ -o canmount=off  zroot/root
zfs create -o mountpoint=none zroot/root/env
zfs create -o mountpoint=/ zroot/root/env/10.0-RELEASE
zfs create -o canmount=off zroot/root/usr
zfs create zroot/root/tmp
zfs create zroot/root/home
zfs create zroot/root/usr/local
zfs create zroot/root/usr/local/etc
zfs create zroot/root/usr/src
zfs create zroot/root/usr/obj
zfs create zroot/root/usr/ports
zfs create zroot/root/var
zfs create zroot/root/var/tmp
zfs create zroot/root/var/log

Nous pouvons vérifier la bonne création de la structure avec les commandes suivantes :

zfs list
mount

tutobsdzfs7 tutobsdzfs8

Notez que zroot/root et zroot/root ne doivent PAS être montés. Ces deux FS servent a conserver l’arborescence, mais ne serons jamais montés.

Nous allons maintenant pouvoir décompresser le systeme.

Allez dans la future racine et décompressez les archives :

cd /tmp/zfs/
tar xJf /usr/freebsd-dist/base.txz
tar xJf /usr/freebsd-dist/kernel.txz
tar xJf /usr/freebsd-dist/doc.txz
tar xJf /usr/freebsd-dist/lib32.txz

Notez que doc et lib32 sont facultatifs. Seuls base et kernel sont nécessaire au bon déroulement du redémarrage systeme.
Finalisation avant premier reboot :

zpool set bootfs=zroot/root/env/10.0-RELEASE
touch /tmp/zfs/etc/fstab
echo 'zfs_enable="YES"' > /tmp/zfs/etc/rc.conf
echo 'zfs_load="YES"' > /tmp/zfs/boot/loader.conf
cp /tmp/zpool.cache /tmp/zfs/boot/zfs/zpool.cache

Vous pouvez ensuite redémarrer la machine.

Vous pourrez ensuite finaliser l’installation avec la commande bsdconfig.

Pour ce qui est de la configuration du swap : ajoutez les lignes suivantes a votre fichier /etc/fstab :

/dev/gpt/swap-disk0             none            swap    sw      0       0
/dev/gpt/swap-disk1             none            swap    sw      0       0
...

puis activez le swap avec la commande ‘swapon -a‘.