Configuration d'un système FreeBSD en ZFS miroir

Certains clouds ne facilitent pas toujours l'installation de FreeBSD sur des serveurs hébergés.

Il faut donc parfois tricher pour parvenir à installer l'OS (c'est le cas sur certains serveurs OVH par exemple).

Si vous disposez de 2 NVMe sur votre serveur, peut-être n'aurez-vous pas d'autre choix que d'installer l'OS sur un seul de ces disques au début.

Et toute la question est : comment rattacher le second NVMe au premier pour obtenir une redondance en miroir du système après l'installation ?

Nous partons du postulat que vous utilisez ZFS, pas UFS.

Rien de bien trop complexe.

Mais à la différence d'illumos, c'est un peu plus délicat sur FreeBSD.

Dans mon exemple, le système a été installé sur /dev/nda1.

/dev/nda0 n'est pas encore utilisé.

Je veux donc créer un miroir ZFS avec les 2 nda.


1) D'abord s'assurer que le système est bien installé sur nda1 :-D ! (Avant de faire des bêtises !)

gpart show
root@SERVER:/dev # gpart show
=> 40 3750748768 nda1 GPT (1.7T)
 40 532480 1 efi (260M)
 532520 1024 2 freebsd-boot (512K)
 533544 984 - free - (492K)
 534528 33554432 3 freebsd-swap (16G)
 34088960 3716659200 4 freebsd-zfs (1.7T)
 3750748160 648 - free - (324K)

=> 40 3750748768 nda0 GPT (1.7T)
 40 3750748768 - free - (1.7T)

root@SERVER:/dev #

2) Effacer nda0 (optionnel mais recommandé)

dd if=/dev/urandom of=/dev/nda0 bs=1M status=progress

3) Recréer la même architecture de partitions sur nda0 que nda1

gpart create -s GPT nda0
gpart add -t efi -s 260M nda0
gpart add -t freebsd-boot -s 512K nda0
gpart add -t freebsd-swap -s 16G nda0
gpart add -t freebsd-zfs -a 1M nda0

4) Installer le bootloader EFI

newfs_msdos /dev/nda0p1
mount -t msdosfs /dev/nda0p1 /mnt
mkdir -p /mnt/EFI/BOOT
cp /boot/loader.efi /mnt/EFI/BOOTBOOTX64.efi
umount /mnt

4) Installer le bootcode FreeBSD (partition freebsd-boot)

gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 2 nda0

5) Ajouter la nouvelle partition ZFS au pool existant (zroot)

zpool attach zroot nda1p4 nda0p4

6) Vérifier que le resilvering est en cours :

zpool status

7) Activer la partition swap secondaire

echo '/dev/nda0p3 none swap sw 0 0' >> /etc/fstab
swapon -a

8) Redémarrer le système :

reboot

9) Vérifier que tout va bien :

zpool status
root@SERVER:~ # zpool status
 pool: zroot
 state: ONLINE
 scan: resilvered 2.84G in 00:00:03 with 0 errors on Fri Apr 18 14:35:55 2025
config:

 NAME STATE READ WRITE CKSUM
 zroot ONLINE 0 0 0
 mirror-0 ONLINE 0 0 0
 nda1p4 ONLINE 0 0 0
 nda0p4 ONLINE 0 0 0

errors: No known data errors
root@SERVER:~ #


↑ Haut de page