• Technologie
  • Équipement électrique
  • Industrie des matériaux
  • La vie numérique
  • politique de confidentialité
  • Ô nom
Emplacement: Accueil / Technologie / Fans de ZFS, réjouissez-vous, l'extension RAIDz sera une chose très bientôt

Fans de ZFS, réjouissez-vous, l'extension RAIDz sera une chose très bientôt

Plateforme de services à guichet unique |
3473

Agrandir

/

OpenZFS prend en charge de nombreuses topologies de disques complexes, mais la "pile en spirale assise sur un bureau" n'en fait toujours pas partie.

Jim Salter

commentaires des lecteurs

102

avec 48 affiches participantes, y compris l'auteur de l'histoire

Partagez cette histoire

Partager sur Facebook

Partager sur Twitter

Partager sur Reddit

Le développeur fondateur d'OpenZFS, Matthew Ahrens, a ouvert un communiqué de presse pour l'une des fonctionnalités les plus recherchées de l'histoire de ZFS, l'extension RAIDz, la semaine dernière. La nouvelle fonctionnalité permet à un utilisateur ZFS d'étendre la taille d'un seul vdev RAIDz. Par exemple, vous pouvez utiliser la nouvelle fonctionnalité pour transformer un RAIDz1 à trois disques en un RAIDz1 à quatre, cinq ou six disques.

Lectures complémentaires

ZFS 101—Comprendre le stockage et les performances ZFS

OpenZFS est un système de fichiers complexe, et les choses vont nécessairement devenir un peu compliquées pour expliquer le fonctionnement de la fonctionnalité. Donc, si vous êtes un débutant ZFS, vous pouvez vous référer à notre ZFS 101 complet

introduction

.

Extension du stockage dans ZFS

En plus d'être un système de fichiers, ZFS est une matrice de stockage et un gestionnaire de volumes, ce qui signifie que vous pouvez lui fournir toute une pile de périphériques de disque, pas un seul. Le cœur d'un système de stockage ZFS est le

zpool

— il s'agit du niveau le plus fondamental du stockage ZFS. Les

zpool

contient à son tour

vdev

, et

vdev

contiennent des disques réels en leur sein. Les écritures sont divisées en unités appelées

enregistrements

ou

blocs

, qui sont ensuite répartis de manière semi-équitable entre les

vdev

.

Un stockage

vdev

peut être l'un des cinq types suivants : un seul disque, un miroir,

RAIDz1

,

RAIDz2

, ou

RAIDz3

. Vous pouvez ajouter plus

vdev

à un

zpool

, et tu peux

attacher

plusieurs disques sur un seul ou un miroir

vdev

. Mais gérer le stockage de cette manière nécessite une planification et une budgétisation à l'avance, ce dont les amateurs et les homelabbers ne sont souvent pas très enthousiastes.

Conventionnel

RAID

, qui ne partage pas le concept de « pool » avec ZFS, offre généralement la possibilité d'étendre et/ou de remodeler une baie en place. Par exemple, vous pouvez ajouter un seul disque à un ensemble de six disques

RAID6

tableau, le transformant ainsi en un sept disques

RAID6

déployer. Subir un remodelage en direct peut être assez douloureux, en particulier sur des baies presque complètes ; il est tout à fait possible qu'une telle tâche nécessite une semaine ou plus, les performances de la baie étant limitées à un quart ou moins de la normale tout le temps.

Historiquement, ZFS a évité ce type d'expansion. ZFS a été développé à l'origine pour une utilisation professionnelle, et le remodelage des baies en direct est généralement un non-starter dans le monde des affaires. Réduire les performances de votre stockage à des niveaux inutilisables pendant des jours coûte généralement plus cher en salaires et en frais généraux que l'achat d'un tout nouvel ensemble de matériel. L'expansion en direct est également potentiellement très dangereuse car elle implique la lecture et la réécriture de toutes les données et met le tableau dans une condition temporaire et beaucoup moins bien testée "moitié ceci, moitié cela" jusqu'à ce qu'elle se termine.

Pour les utilisateurs disposant de nombreux disques, le nouveau

RAIDz

Il est peu probable que l'expansion change de manière significative la façon dont ils utilisent ZFS. Il sera toujours à la fois plus simple et plus pratique à gérer

vdev

comme des unités complètes plutôt que d'essayer de fouiner à l'intérieur. Mais les amateurs, les homelabbers et les petits utilisateurs qui exécutent ZFS avec un seul

vdev

tirera probablement beaucoup parti de la nouvelle fonctionnalité.

Comment ça marche?

Agrandir

/

Dans cette diapositive, nous voyons un RAIDz1 à quatre disques (à gauche) étendu à un RAIDz1 à cinq disques (à droite). Notez que les données sont toujours écrites en quatre bandes larges !

Matthieu Ahrens

D'un point de vue pratique, le nouveau

vdev

la fonction d'extension ajoute simplement de nouvelles capacités à une commande existante, à savoir,

zpool attacher

, qui est normalement utilisé pour ajouter un disque à un seul disque

vdev

(en le transformant en un

miroir vdev

) ou ajouter un disque supplémentaire à un

miroir

(par exemple, tourner un disque à deux

miroir

dans un trois disques

miroir

).

Publicité

Avec le nouveau code, vous pourrez

attacher

de nouveaux disques sur un disque existant

RAIDz

vdev aussi. Cela étend le vdev en largeur mais ne change pas le

vdev

tapez, de sorte que vous pouvez tourner un six-disque

RAIDz2

vdev dans un sept disques

RAIDz2

vdev, mais vous

ne peut pas

le transformer en un sept disques

RAIDz3

.

Lors de la délivrance de votre

zpool attacher

commande, l'expansion commence. Au cours de l'expansion, chaque

bloquer

ou

enregistrer

est lu à partir du

vdev

étendu et est ensuite réécrit. Les secteurs de la réécriture

bloquer

sont répartis entre tous les disques du

vdev

, y compris le(s) nouveau(x) disque(s), mais la largeur de la bande elle-même n'est pas modifiée. Donc un

vdev RAIDz2

étendu de six disques à dix sera toujours plein de bandes de six larges une fois l'extension terminée.

Ainsi, alors que l'utilisateur verra l'espace supplémentaire rendu disponible par les nouveaux disques, l'efficacité de stockage des données étendues ne se sera pas améliorée en raison des nouveaux disques. Dans l'exemple ci-dessus, nous sommes passés d'un système à six disques

RAIDz2

avec une efficacité de stockage nominale de 67 % (quatre secteurs sur six sont des données) sur dix disques

RAIDz2

. Données

nouvellement

écrites sur les dix disques RAIDz2 a une efficacité de stockage nominale de 80 %—huit secteurs sur dix sont des données—mais les anciennes données étendues sont toujours écrites sur six bandes larges, elles ont donc toujours l'ancienne efficacité de stockage de 67 %.

Il convient de noter qu'il ne s'agit pas d'un état inattendu ou bizarre pour un vdev—

RAIDz

utilise déjà une largeur de bande dynamique et variable pour tenir compte

blocs

ou

enregistrements

trop petit pour rayer tous les disques en un seul

vdev

.

Par exemple, si vous écrivez un seul bloc de métadonnées (les données contenant le nom, les autorisations et l'emplacement d'un fichier sur le disque), il tient dans un seul

secteur

sur disque. Si vous écrivez ce bloc de métadonnées dans un bloc de dix

RAIDz2

, vous n'écrivez pas une bande complète de

dix de large - à la place, vous écrivez une sous-dimensionnée

bloquer

seulement trois disques de large ; une seule donnée

secteur

plus deux parité

secteurs

. Donc le "sous-dimensionné"

blocs

dans une nouvelle extension

RAIDz

vdev n'est pas un sujet de confusion pour ZFS. Ils sont juste un autre jour au bureau.

Y a-t-il un impact durable sur les performances ?

Comme nous l'avons vu ci-dessus, une nouvelle version élargie

RAIDz vdev

ne ressemblera pas tout à fait à une conception conçue de cette façon dès la "naissance" - du moins, pas au début. Bien qu'il y ait plus de disques dans le mix, la structure interne des données n'est pas modifiée.

Ajout d'un ou plusieurs nouveaux disques au

vdev

signifie qu'il devrait être capable d'un débit un peu plus élevé. Même si l'héritage

blocs

ne couvrent pas toute la largeur du

vdev

, les disques ajoutés signifient plus de broches pour répartir le travail. Cela ne fera probablement pas augmenter la vitesse à couper le souffle, cependant - six bandes larges sur un sept disques

vdev

signifie que vous ne pouvez toujours pas lire ou écrire deux

blocs

simultanément, de sorte que toute amélioration de la vitesse est susceptible d'être mineure.

L'impact net sur les performances peut être difficile à prévoir. Si vous étendez à partir d'un six disques

RAIDz2

sur un sept disques

RAIDz2

, par exemple, votre configuration d'origine à six disques n'avait besoin d'aucun remplissage. Un 128Ko

bloquer

peut être coupé uniformément en quatre morceaux de données de 32KiB, avec deux morceaux de parité de 32KiB. Le même record partagé entre

Sept

les disques nécessitent un rembourrage car 128 Ko/cinq éléments de données ne sortent pas sur un nombre pair de secteurs.

Publicité

De même, dans certains cas, en particulier avec un petit

taille d'enregistrement

ou

tailleblocvol

set : la charge de travail par disque individuel peut être nettement moins difficile dans l'ancienne configuration plus étroite que dans la plus récente et plus large. Un 128Ko

bloquer

divisé en morceaux de 32KiB pour une largeur de six

RAIDz2

peut être lu ou écrit plus efficacement

par disque

qu'un divisé en morceaux de 16KiB pour une dizaine de large

RAIDz2

, par exemple, c'est donc un peu fou si plus de disques mais des morceaux plus petits fourniront plus de débit que moins de disques mais des morceaux plus gros.

La seule chose dont vous pouvez être certain, c'est que la nouvelle configuration étendue devrait généralement fonctionner aussi bien que la version originale non étendue et qu'une fois que la majorité des données est (ré)écrite dans la nouvelle largeur, la

vdev

ne fonctionnera pas différemment ou ne sera pas moins fiable que celui qui a été conçu de cette façon dès le départ.

Pourquoi ne pas remodeler les enregistrements/blocs pendant l'expansion ?

Il peut sembler étrange que le processus d'expansion initial ne réécrive pas tous les

blocs

à la nouvelle largeur pendant son exécution - après tout, il lit et réécrit les données de toute façon, n'est-ce pas ? Nous avons demandé à Ahrens pourquoi la largeur d'origine avait été laissée telle quelle, et la réponse se résume à "c'est plus facile et plus sûr de cette façon".

Un facteur clé à reconnaître est que techniquement, l'expansion

n'est pas

en mouvement

blocs

; ça bouge juste

secteurs

. La façon dont il est écrit, le code d'extension n'a pas besoin de savoir où la logique de ZFS

bloquer

les limites sont—la routine d'expansion n'a aucune idée si un individu

secteur

est la parité ou les données, sans parler de ce qui

bloquer

il appartient à.

L'expansion pourrait traverser tous les

bloquer

pointeurs pour localiser

bloquer

limites, et

alors

il saurait lequel

secteur

appartient à quoi

bloquer

et comment remodeler le

bloquer

, mais selon Ahrens, faire les choses de cette façon serait extrêmement envahissant pour le format sur disque de ZFS. L'extension devrait être continuellement mise à jour

cartes de l'espace

au

métadalles

pour tenir compte des changements dans la taille sur disque de chaque

bloquer

- et si le

bloquer

fait partie d'un

base de données

Plutôt qu'un

zvol

, mettez également à jour la comptabilisation de l'espace par jeu de données et par fichier.

Si cela vous démange vraiment de savoir que vous avez quatre bandes larges sur un vdev fraîchement cinq larges, vous pouvez simplement lire et réécrire vos données vous-même une fois l'expansion terminée. La façon la plus simple de le faire est d'utiliser

instantané zfs

,

zfs envoyer

, et

zfs recevoir

reproduire l'intégralité

ensembles de données

et

zvols

. Si les propriétés ZFS ne vous inquiètent pas, un simple

mv

l'opération fera l'affaire.

Cependant, nous vous recommandons dans la plupart des cas de vous détendre et de laisser ZFS faire son travail. Votre sous-dimensionné

blocs

à partir de données plus anciennes ne nuisent vraiment à rien, et comme vous supprimez et/ou modifiez naturellement des données au cours de la vie du

vdev

, la plupart d'entre eux seront réécrits naturellement si nécessaire, sans avoir besoin d'une intervention de l'administrateur ou de longues périodes de charge de stockage élevée en raison de la lecture et de la réécriture obsessionnelle de tout en même temps.

Quand l'extension RAIDz arrivera-t-elle en production ?

Le nouveau code d'Ahrens ne fait encore partie d'aucune version d'OpenZFS, et encore moins ajouté aux référentiels de quiconque. Nous avons demandé à Ahrens quand nous pourrions nous attendre à voir le code en production, et malheureusement, cela prendra un certain temps.

Il est trop tard pour que l'extension RAIDz soit incluse dans la prochaine version OpenZFS 2.1, attendue très bientôt (la version 2.1 release candidate 7 est disponible dès maintenant). Il devrait être inclus dans la prochaine version majeure d'OpenZFS ; il est trop tôt pour des dates concrètes, mais les versions majeures se produisent généralement environ une fois par an.

D'une manière générale, nous nous attendons à ce que l'expansion de RAIDz atteigne la production comme Ubuntu et FreeBSD vers août 2022, mais ce n'est qu'une supposition. TrueNAS peut très bien le mettre en production plus tôt que cela, car ixSystems a tendance à extraire les fonctionnalités ZFS du maître avant qu'elles n'atteignent officiellement le statut de version.

Matt Ahrens a présenté l'extension RAIDz au FreeBSD Developer Summit—son discours commence à 1 heure 41 minutes dans cette vidéo.