Duponin's blog

Yet the best blog ever made.


Changer les disques système sous FreeBSD

Posted on Saturday, 31 Aug 2019 by Antonin Dupont, Duponin


Un peu de contexte

Il y a quatre mois j’ai mis en place chez moi tournant sous FreeBSD. Tout fonctionnait très bien mais j’était bloqué derrière la Box de mon FAI. Je l’ai donc migré dans un Datacenter Libre. Ainsi j’ai pu avoir mon serveur directement connecté sur Internet, avoir plusieurs addresses IPv4 et une alimentation verte.

Quitte à déplacer physiqument mon serveur je me suis dis que c’était l’occasion pour refaire toute sa configuration dont passer sur un système sur Raid1 pour éviter de tout perdre en cas de défaillance du disque.

La migration

Le travail a réaliser est relativement trivial. Les services tournent dans des jails, il me suffit de les arrêter et d’exporter le Zpool qui les contient (Le Zpool des jails est différent de celui du système).

Note : Par défaut iocage utilise le Zpool root pour les jails, il faut utiliser la commande iocage activate <ZFS pool> pour qu’il créé les jails sur un pool différent de celui par défaut, le système. Documentation

Préparation du terrain

Afin d’éviter d’avoir de mauvaises surprises, il peut être utile de sauvegarder des fichiers de configuration (sshd_config, utilisateurs, etc.) du host avant de commencer les opérations.

Procéder à l’extinction des jails afin de pouvoir exporter le zpool associé :

for jail in jail_1 jail_2 jail_3 jail_n
do
    iocage stop $jail
done

Une fois toutes les jails arrêtés, on fait l’exportation du Zpool des jails :

iocage export <jails_zpool>

À ce moment là le Zpool des jails n’apparait plus avec zpool list mais uniquement avec zpool import (ne pas faire l’importation évidemment).

Installation du système

Cette étape est faite par chaque personne à sa sauce et ses préférences. Personnellement je passe avec l’utilitaire d’installation fournis avec bsdinstall et coche les options qui m’intéressent (ouais cette partie n’est pas des plus folles)

Je fais l’installation du système en mode Mirror ZFS pour avoir une légère sécurité et que ZFS puisse détecter et corriger les corruptions de données.

Configuration du nouveau système

Un bon sysadmin est fainéant ; ainsi il va mettre en place des routines et autres afin d’automatiser les tâches courrantes. Je partage ainsi généreusement un lien vers le dépot git (Framagit) où se trouve une recette Ansible pour faire la configuration de base d’un hôte FreeBSD.

Il y a certains prérequis mais tout est normalement écrit dans le README. Le but étant d’être générique, certaines choses ne sont pas configurées (Ex : Packet Filter).

Il ne faut pas hésiter à forker pour l’adapter à ses besoins :-)

Revenir au bon vieux temps

Maintenant que l’hôte est configuré, il faut les services reviennent (sinon ça sert un peu à rien). Ça se fait ainsi :

Une fois ces trois étapes faite, il faut s’assurer que les services fonctionnent correctement. Je n’ai pas de conseil à donner pour ça, ça dépend de se que chaque personne héberge.

Conclusion

Migrer un système FreeBSD d’un pool de disque à un autre n’est pas une tâche compliquée ; elle nécessite un peu de préparation. Si tout est anticipé et que des scripts sont présent pour automatiser certaines tâches (comme changer les IP des jails) alors ça peut se faire (très) rapidement.

Bon amusement ! :-)