Je suis un utilisateur Fedora Linux qui exécute yum upgrade
du quotidien. Bien que cette habitude me permette d'exécuter tous les logiciels les plus récents (l'une des quatre fondations de Fedora est "la première", et elle est à la hauteur de cela), elle met également en évidence toute incompatibilité entre la plate-forme de stockage ZFS et un nouveau noyau.
Plus de ressources Linux
- Aide-mémoire des commandes Linux
- Aide-mémoire des commandes Linux avancées
- Cours en ligne gratuit :Présentation technique de RHEL
- Aide-mémoire sur le réseau Linux
- Aide-mémoire SELinux
- Aide-mémoire sur les commandes courantes de Linux
- Que sont les conteneurs Linux ?
- Nos derniers articles Linux
En tant que développeur, j'ai parfois besoin de nouvelles fonctionnalités de la dernière branche ZFS. Par exemple, ZFS 2.0.0 contient une nouvelle fonctionnalité intéressante améliorant considérablement les performances de synchronisation ZVOL, ce qui est essentiel pour moi en tant qu'utilisateur KVM. Mais cela signifie que si je veux utiliser la branche 2.0.0, je dois construire ZFS moi-même.
Au début, je compilais ZFS manuellement à partir de son référentiel Git après chaque mise à jour du noyau. Si j'oubliais, ZFS ne serait pas reconnu au prochain démarrage. Heureusement, j'ai rapidement appris à configurer la prise en charge dynamique des modules du noyau (DKMS) pour ZFS. Cependant, cette solution n'est pas parfaite. D'une part, il n'utilise pas le puissant système yum, qui peut aider à résoudre les dépendances et à mettre à niveau. De plus, basculer entre votre propre package et un package en amont est assez facile avec yum.
Dans cet article, je vais vous montrer comment configurer un référentiel yum pour empaqueter ZFS. La solution comporte deux étapes :
- Créer des packages RPM à partir du référentiel ZFS Git
- Configurer un référentiel yum pour héberger les packages
Créer des packages RPM
Pour créer des packages RPM, vous devez installer la chaîne d'outils RPM. Yum fournit des groupes pour regrouper l'installation des outils :
sudo dnf group install 'C Development Tools and Libraries' 'RPM Development Tools'
Une fois ceux-ci installés, vous devez installer tous les packages nécessaires pour créer ZFS à partir du référentiel ZFS Git. Les packages appartiennent à trois groupes :
- Autotools pour générer des fichiers de compilation à partir des configurations de plate-forme
- Bibliothèques pour la création d'outils pour le noyau et l'espace utilisateur ZFS
- Bibliothèques pour créer des packages RPM
sudo dnf install libtool autoconf automake gettext createrepo \
libuuid-devel libblkid-devel openssl-devel libtirpc-devel \
lz4-devel libzstd-devel zlib-devel \
kernel-devel elfutils-libelf-devel \
libaio-devel libattr-devel libudev-devel \
python3-devel libffi-devel
Vous êtes maintenant prêt à créer vos propres packages.
Construire OpenZFS
OpenZFS fournit une excellente infrastructure. Pour le construire :
- Cloner le dépôt avec
git
et basculez vers la branche/tag que vous espérez utiliser. - Exécutez Autotools pour générer un makefile.
- Exécutez
make rpm
et, si tout fonctionne, les fichiers RPM seront placés dans le dossier build.
$ git clone --branch=zfs-2.0.0-rc3 https://github.com/openzfs/zfs.git zfs
$ cd zfs
$ ./autogen.sh
$ ./configure
$ make rpm
Configurer un dépôt yum
Dans yum, un référentiel est un serveur ou un chemin local qui inclut des métadonnées et des fichiers RPM. Un consommateur configure un fichier de configuration INI, et le yum
La commande résout automatiquement les métadonnées et télécharge les packages correspondants.
Fedora fournit le createrepo
outil pour mettre en place un repo yum. Tout d'abord, créez le référentiel et copiez tous les fichiers RPM du dossier ZFS vers le référentiel. Ensuite, exécutez createrepo --update
pour inclure tous les packages dans les métadonnées :
$ sudo mkdir -p /var/lib/zfs.repo
$ sudo createrepo /var/lib/zfs.repo
$ sudo cp *.rpm /var/lib/zfs.repo/
$ sudo createrepo --update /var/lib/zfs.repo
Créez un nouveau fichier de configuration dans /etc/yum.repos.d
pour inclure le chemin du référentiel :
$ echo \
"[zfs-local]\\nname=ZFS Local\\nbaseurl=file:///var/lib/zfs.repo\\nenabled=1\\ngpgcheck=0" |\
sudo tee /etc/yum.repos.d/zfs-local.repo
$ sudo dnf --repo=zfs-local list available --refresh
Enfin, vous avez atteint la fin du voyage ! Vous disposez d'un référentiel yum fonctionnel et de packages ZFS. Il ne vous reste plus qu'à les installer :
$ sudo dnf install zfs
$ sudo /sbin/modprobe zfs
Exécutez sudo zfs version
pour voir la version de vos outils userland et kernel. Toutes nos félicitations! Vous avez ZFS pour Fedora.