Chiffrement RAID ZFS et LUKS sous Linux

24

Je prévois de configurer un ensemble de disques 3x 2 To à 7200 tr / min en tant que pool Z-RAID crypté LUKS sous Linux (pour une solution NAS).

Ma compréhension du problème actuel est que la seule façon d'y parvenir est de luksFormatconnecter chaque périphérique physique à un zpool à partir de conteneurs LUKS déverrouillés.

J'ai les préoccupations suivantes à ce sujet:

  • Cela n'entraverait-il pas considérablement les performances d'écriture? Dans cette configuration, les données redondantes sont chiffrées plusieurs fois car LUKS n'est pas "au courant" de Z-RAID. Dans la solution LUKS-on-mdadm, les données sont chiffrées une fois et simplement écrites plusieurs fois sur les disques. Mon processeur prend en charge Intel AES-NI.

  • ZFS sera-t-il au courant des pannes de disque lorsqu'il fonctionne sur des conteneurs LUKS de mappeur de périphériques par opposition aux périphériques physiques? Qu'en est-il de la déduplication et des autres fonctionnalités ZFS?

MasterM
la source
4
Je ne le ferais pas. Cela semble sujet aux pannes.
ewwhite
3
@MadHatter Parce que c'est ZFS. Tu ne peux pas faire ça.
Michael Hampton
1
Très bien (je vais vous croire sur parole). Créez un seul grand ZFS contenant un seul gros fichier, montez-le en boucle et cryptez -le .
MadHatter prend en charge Monica le
1
@eewhite Je cherche simplement des options pour utiliser le cryptage avec ZFS sur Linux jusqu'à ce que le module du noyau ZFS implémente le cryptage lui-même. Mais je dois être d'accord - LUKS et ZFS ne semblent pas bien s'entendre.
MasterM
4
Jamais, jamais, créez un gros fichier et bouclez-le avec ZFS. Vous êtes parti visser votre piscine à une vitesse inutilisable lorsque CoW manque d'espace pour ses opérations.
Vinícius Ferrão

Réponses:

27

L'un des serveurs que j'administre exécute le type de configuration que vous décrivez. Il dispose de six disques durs de 1 To avec un pool RAIDZ crypté LUKS. J'ai également deux disques durs de 3 To dans un miroir ZFS crypté LUKS qui sont échangés chaque semaine pour être retirés du site. Le serveur utilise cette configuration depuis environ trois ans et je n'ai jamais eu de problème avec.

Si vous avez besoin de ZFS avec cryptage sous Linux, je recommande cette configuration. J'utilise ZFS-Fuse, pas ZFS sous Linux. Cependant, je crois que cela n'aurait aucune incidence sur le résultat autre que ZFS sur Linux aura probablement de meilleures performances que la configuration que j'utilise.

Dans cette configuration, les données redondantes sont chiffrées plusieurs fois car LUKS n'est pas "au courant" de Z-RAID. Dans la solution LUKS-on-mdadm, les données sont chiffrées une fois et simplement écrites plusieurs fois sur les disques.

Gardez à l'esprit que LUKS n'est pas au courant du RAID. Il sait seulement qu'il se trouve au-dessus d'un périphérique bloc. Si vous utilisez mdadm pour créer un périphérique RAID et ensuite luksformat, c'est mdadm qui réplique les données chiffrées sur les périphériques de stockage sous-jacents, pas LUKS.

La question 2.8 de la FAQ LUKS aborde la question de savoir si le chiffrement doit être au-dessus du RAID ou inversement . Il fournit le diagramme suivant.

Filesystem     <- top
|
Encryption
|
RAID
|
Raw partitions
|
Raw disks      <- bottom

Parce que ZFS combine la fonctionnalité RAID et le système de fichiers, votre solution devra ressembler à ce qui suit.

RAID-Z and ZFS Filesystem  <-top
|
Encryption
|
Raw partitions (optional)
|
Raw disks                  <- bottom

J'ai répertorié les partitions brutes comme facultatives car ZFS s'attend à ce qu'il utilise le stockage de blocs bruts plutôt qu'une partition. Bien que vous puissiez créer votre zpool à l'aide de partitions, ce n'est pas recommandé car cela ajoutera un niveau de gestion inutile, et il devra être pris en compte lors du calcul de votre décalage pour l'alignement des blocs de partition.

Cela n'entraverait-il pas considérablement les performances d'écriture? [...] Mon processeur prend en charge Intel AES-NI.

Il ne devrait pas y avoir de problème de performances tant que vous choisissez une méthode de chiffrement prise en charge par votre pilote AES-NI. Si vous avez cryptsetup 1.6.0 ou une version plus récente, vous pouvez exécuter cryptsetup benchmarket voir quel algorithme fournira les meilleures performances.

Cette question sur les options recommandées pour LUKS peut également être utile.

Étant donné que vous disposez d'une prise en charge du chiffrement matériel, vous êtes plus susceptible de rencontrer des problèmes de performances en raison d'un mauvais alignement de partition.

ZFS sous Linux a ajouté la ashiftpropriété à la zfscommande pour vous permettre de spécifier la taille du secteur pour vos disques durs. Selon la FAQ liée, ashift=12dirait que vous utilisez des disques avec une taille de bloc 4K.

La FAQ LUKS indique qu'une partition LUKS a un alignement de 1 Mo. Les questions 6.12 et 6.13 en discutent en détail et fournissent également des conseils sur la façon d'agrandir l'en-tête de partition LUKS. Cependant, je ne suis pas sûr qu'il soit possible de le rendre suffisamment grand pour garantir que votre système de fichiers ZFS sera créé sur une frontière 4K. J'aimerais savoir comment cela fonctionne pour vous s'il s'agit d'un problème que vous devez résoudre. Étant donné que vous utilisez des lecteurs de 2 To, vous pourriez ne pas rencontrer ce problème.

ZFS sera-t-il au courant des pannes de disque lorsqu'il fonctionne sur des conteneurs LUKS de mappeur de périphériques par opposition aux périphériques physiques?

ZFS sera conscient des pannes de disque dans la mesure où il peut les lire et y écrire sans problème. ZFS nécessite un stockage en bloc et ne se soucie pas ou ne connaît pas les spécificités de ce stockage et d'où il vient. Il ne garde trace que des erreurs de lecture, d'écriture ou de somme de contrôle qu'il rencontre. C'est à vous de surveiller la santé des périphériques de stockage sous-jacents.

La documentation ZFS contient une section sur le dépannage qui mérite d'être lue. La section sur le remplacement ou la réparation d'un périphérique endommagé décrit ce que vous pouvez rencontrer lors d'un scénario de défaillance et comment vous pouvez le résoudre. Vous feriez la même chose ici que pour les appareils qui n'ont pas ZFS. Vérifiez le journal système pour les messages de votre pilote SCSI, contrôleur HBA ou HD et / ou logiciel de surveillance SMART, puis agissez en conséquence.

Qu'en est-il de la déduplication et des autres fonctionnalités ZFS?

Toutes les fonctionnalités ZFS fonctionneront de la même manière, que le stockage sous-jacent soit chiffré ou non.

Sommaire

  1. ZFS sur les appareils cryptés LUKS fonctionne bien.
  2. Si vous disposez d'un chiffrement matériel, vous ne verrez pas de performances baisser tant que vous utilisez une méthode de chiffrement prise en charge par votre matériel. Utilisez cryptsetup benchmarkpour voir ce qui fonctionnera le mieux sur votre matériel.
  3. Considérez ZFS comme un RAID et un système de fichiers combinés en une seule entité. Voir le diagramme ASCII ci-dessus pour savoir où il s'insère dans la pile de stockage.
  4. Vous devrez déverrouiller chaque périphérique de bloc crypté LUKS utilisé par le système de fichiers ZFS.
  5. Surveillez la santé du matériel de stockage de la même manière que maintenant.
  6. Soyez conscient de l'alignement des blocs du système de fichiers si vous utilisez des disques avec des blocs 4K. Vous devrez peut-être expérimenter avec les options luksformat ou d'autres paramètres pour obtenir l'alignement dont vous avez besoin pour une vitesse acceptable.
Étoile de mer
la source
3
+1 Pour trouver un moyen de faire fonctionner cela avec des exemples.
ewwhite
1
1 MiB est déjà divisible également par 4KiB, vous devez donc être correctement aligné jusqu'à ashift = 20 (ce qui ne sera pas nécessaire selon moi au cours de ma carrière) à condition d'utiliser des disques bruts.
Michael Hampton
1
Encore une chose: je vote votre réponse parce que c'est ce que OP attendait et est bien écrit, donc c'est mieux que ma réponse.
Vinícius Ferrão
3
@ ViníciusFerrão: Notez également que FreeBSD et FreeNAS utilisent une approche identique pour le chiffrement ZFS. geliest utilisé pour créer un périphérique crypté et les données en clair sont mises à disposition via un second périphérique que ZFS utilise. Voir le deuxième point sur doc.freenas.org/index.php/Volumes#Encryption .
Starfish
2
@CMCDragonkai Étant donné que les appareils L2ARC et SLOG contiennent des morceaux de données de votre pool, si vous chiffrez le stockage afin de garantir la confidentialité (ce qui est souvent le point d'utiliser un stockage chiffré en premier lieu), vous voudrez presque certainement exécuter également tous les périphériques L2ARC et SLOG cryptés de manière similaire.
un CVn du
2

Une autre implémentation consiste à créer un périphérique de bloc ZVOL ( http://zfsonlinux.org/example-zvol.html ), à utiliser LUKS pour crypter le ZVOL nouvellement créé, puis à créer un système de fichiers ext4 (ou autre) au-dessus du bloc crypté dispositif.

Tux Racer
la source