Après 11 mois de développement, le projet OpenZFS 2.4.0, qui améliore la mise en œuvre du système de fichiers ZFS pour Linux et FreeBSD, a été publié. Le projet est devenu connu sous le nom de « ZFS sur Linux » et se limitait auparavant au développement d'un module pour le noyau Linux. Cependant, après la fusion avec le code de FreeBSD, il a été reconnu comme la mise en œuvre principale d'OpenZFS et renommé.
Le fonctionnement d'OpenZFS a été vérifié avec les noyaux Linux de 4.18 à 6.18 et toutes les branches de FreeBSD, à partir de 13.3. Le code est distribué sous la licence libre CDDL. OpenZFS est déjà utilisé dans FreeBSD et fait partie des distributions Debian, Ubuntu, Gentoo, NixOS et ALT Linux. Des paquets avec la nouvelle version seront bientôt préparés pour les principales distributions Linux, y compris Debian, Ubuntu, Fedora, RHEL/CentOS.
OpenZFS fournit une implémentation des composants ZFS, liés à la fois au fonctionnement du système de fichiers et à la gestion des volumes. Les composants suivants ont été implémentés : SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) et ZPL (ZFS POSIX Layer). Le projet permet également d'utiliser ZFS comme backend pour le système de fichiers clusterisé Lustre. Les contributions d'OpenZFS sont basées sur le code original de ZFS, importé du projet OpenSolaris et amélioré par des enrichissements et corrections de la communauté Illumos. Le projet se développe avec la participation d'employés du Lawrence Livermore National Laboratory sous contrat avec le Département de l'énergie des États-Unis.
Le code est distribué sous la licence libre CDDL, qui est incompatible avec la GPLv2, ce qui empêche l'intégration d'OpenZFS dans la branche principale du noyau Linux, car le mélange de code sous les licences GPLv2 et CDDL est inadmissible. Pour contourner l'incompatibilité des licences, il a été décidé de distribuer le produit pour Linux entièrement sous la licence CDDL sous forme de module à télécharger séparément, distinct du noyau. La stabilité de la base de code d'OpenZFS est jugée comparable à celle d'autres systèmes de fichiers pour Linux.
Principales modifications :
- Il est désormais possible de définir des quotas par défaut pour les utilisateurs, les groupes et les projets. Dans les versions précédentes, les quotas ne pouvaient être définis que séparément pour chaque identifiant d'utilisateur. Dans la nouvelle version, une valeur par défaut peut être définie, qui sera appliquée si aucun quota n'a été établi pour un utilisateur spécifique.
- Ajout de la possibilité de revenir du mode d'entrée/sortie directe (O_DIRECT, Direct I/O) à l'utilisation d'un mécanisme léger d'entrée/sortie non mis en cache (Uncached I/O) pour les requêtes non alignées sur les frontières de pages mémoire, qui ne sont pas prises en charge en mode Direct I/O.
- Un nouvel algorithme unifié de limitation de la vitesse des opérations d'écriture et de placement des blocs a été proposé, réduisant la fragmentation des vdev (Virtual Device) en agrégeant plusieurs opérations d'écriture et en utilisant pour elles de plus grands espaces libres contigus au lieu de placer les résultats d'opérations d'écriture individuelles dans de petits espaces libres.
- Les performances du chiffrement ont été améliorées grâce à l'utilisation des instructions AVX2 dans la mise en œuvre de l'algorithme AES-GCM. Dans les tests réalisés, l'accélération atteint 80%.
- Il est désormais autorisé de placer des blocs ZIL (ZFS Intent Log) non seulement sur des vdev normaux ou sur un appareil SLOG dédié, mais également sur des vdev spéciaux. Si un vdev normal est associé à un disque dur et qu'un vdev spécial l'est à un SSD, ce changement permet d'éviter des situations où les données sont écrites sur le SSD, tandis que les blocs ZIL associés sont écrits sur le disque dur, entraînant ainsi des délais supplémentaires.
- Il est désormais possible d'attribuer la propriété special_small_blocks aux sections (ZVOL) et non seulement aux systèmes de fichiers, ce qui permet d'organiser le placement de petits blocs sur un vdev spécial distinct, par exemple sur un disque SSD.
- Un mode d'écriture « zfs rewrite -P » a été ajouté, laissant, dans la mesure du possible, l'heure de création logique inchangée, permettant ainsi de distinguer les blocs simplement déplacés vers le pool des blocs réellement modifiés par l'utilisateur.
- Pour les commandes « zpool trim », « zpool scrub » et « zpool initialize », une option « -a » (—all) a été mise en œuvre, permettant d'exécuter ces commandes simultanément pour tous les pools importés.
- Une commande « zpool scrub -S -E » a été ajoutée pour effectuer une vérification des sommes de contrôle des données dans les intervalles de temps spécifiés.
- De nouvelles optimisations du processus de déduplication ont été ajoutées.
Source : opennet.ru
