web-dev-qa-db-fra.com

Cryptage ZFS RAID et LUKS à Linux

Je prévois de configurer un ensemble de lecteurs de 3x 2TB 7200RPM en tant que piscine Z-RAIDC cryptée LUKS sous Linux (pour A NAS).

Ma compréhension du problème est que le seul moyen d'y parvenir est de luksFormat chaque dispositif physique, puis d'assembler un zpool à partir de conteneurs LUKS déverrouillés.

J'ai les préoccupations suivantes avec ceci:

  • Cela ne gênerait-il pas de manière significative la performance d'écriture? Dans cette configuration, les données redondantes sont cryptées à plusieurs reprises car LUKS n'est pas "consciente" de Z-RAID. Dans Luks-On-Mdadm, les données de solution sont cryptées une fois et simplement écrites aux disques plusieurs fois. Mon CPU soutient Intel AES-NI.

  • Est-ce que ZFS sera conscient des pannes de disque lors du fonctionnement des conteneurs LUKS de périphérique-Mapper, par opposition à des dispositifs physiques? Que diriez-vous de la déduplication et d'autres fonctionnalités ZFS?

28
MasterM

L'un des serveurs que je suis administré exécute le type de configuration que vous décrivez. Il dispose de six disques durs de 1 To avec une piscine RAIDZ cryptée LUKS. J'ai également deux disques durs 3 To dans un miroir ZFS crypté LUKS qui sont échangés toutes les semaines à prendre hors site. Le serveur utilise cette configuration pendant environ trois ans et je n'ai jamais eu de problème avec cela.

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

Dans cette configuration, les données redondantes sont cryptées à plusieurs reprises car LUKS n'est pas "consciente" de Z-RAID. Dans Luks-On-Mdadm, les données de solution sont cryptées une fois et simplement écrites aux disques plusieurs fois.

Gardez à l'esprit que Luks n'est pas au courant du raid. Cela sait seulement qu'il est assis sur un appareil de blocage. Si vous utilisez Mdadm pour créer un périphérique RAID, puis luksformat It, c'est MDADM qui reproduit les données cryptées aux périphériques de stockage sous-jacents, pas LUKS.

Question 2.8 du LUKS FAQ adresse si - cryptage doit être au-dessus du RAID ou de l'autre côté . Il fournit le diagramme suivant.

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

Parce que ZFS combine la fonctionnalité du RAID et du 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 énuméré les partitions brutes comme facultatif que ZFS s'attend à ce qu'il utiliserait le stockage de bloc brut plutôt qu'une partition. Bien que vous puissiez créer votre zpool à l'aide de partitions, il n'est pas recommandé car il ajoutera un niveau de gestion inutile et il faudra être pris en compte lors du calcul de votre décalage pour la partition d'alignement des blocs.

Cela ne gênerait-il pas de manière significative la performance d'écriture? [...] Mon CPU soutient Intel AES-NI.

Il ne devrait pas y avoir de problème de performance tant que vous choisissez une méthode de cryptage soutenue par votre pilote AES-NI. Si vous avez CryPetUp 1.6.0 ou plus récent, vous pouvez exécuter cryptsetup benchmark et voir quel algorithme fournira la meilleure performance.

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

Étant donné que vous avez un support de cryptage matériel, vous êtes plus susceptible de faire face à des problèmes de performance en raison d'un désalignement de la partition.

ZFS sur Linux a Ajout de la propriété ashift à la commande zfs Pour vous permettre de spécifier la taille du secteur pour vos disques durs. Selon la FAQ lié, ashift=12 Dites-lui que vous utilisez des lecteurs avec une taille de bloc de 4K.

Le LUKS FAQ indique qu'une partition LUKS a un alignement de 1 Mo. questions 6.12 et 6.1 Discutez de cela en détail et fournissez également des conseils sur la manière de faire la partition LUKS En-tête plus grand. Cependant, je ne suis pas sûr qu'il soit possible de le rendre assez grand pour vous assurer que votre système de fichiers ZFS sera créé sur une limite de 4K. Je serais intéressé à entendre comment cela fonctionne pour vous s'il s'agit d'un problème Besoin de résoudre. Puisque vous utilisez des lecteurs de 2 To, vous ne pouvez pas faire face à ce problème.

Est-ce que ZFS sera conscient des pannes de disque lors du fonctionnement des conteneurs LUKS de périphérique-Mapper, par opposition à des dispositifs physiques?

ZFS sera au courant des défaillances du disque dans la mesure où il peut se lire et écrire à eux sans problèmes. ZFS nécessite un stockage de bloc et ne se soucie pas et ne connaît pas les détails de ce stockage et d'où vient. Il ne cesse de suivre une trace de toutes les erreurs de lecture, d'écriture ou de somme de contrôle qu'il rencontre. C'est à vous de surveiller la santé des dispositifs de stockage sous-jacents.

la documentation ZFS a une section sur le dépannage qui vaut la peine d'être lu. La section sur remplaçant ou réparant un périphérique endommagé décrit ce que vous pourriez rencontrer lors d'un scénario de défaillance et de la manière dont vous pourriez le résoudre. Vous feriez la même chose ici que vous feriez pour des appareils qui n'ont pas de ZFS. Consultez le syslog pour les messages de votre pilote SCSI, de votre contrôleur HBA ou HD, et/ou SMART et agissez en conséquence.

Que diriez-vous de la déduplication et d'autres fonctionnalités ZFS?

Toutes les fonctionnalités ZFS fonctionnent de la même manière que le stockage de bloc sous-jacent est crypté ou non.

Sommaire

  1. ZFS sur les appareils cryptés à Luks fonctionne bien.
  2. Si vous avez du cryptage matériel, vous ne verrez pas de performances touchées tant que vous utilisez une méthode de cryptage prise en charge par votre matériel. Utilisation cryptsetup benchmark Pour voir ce qui fonctionnera mieux sur votre matériel.
  3. Pensez à ZFS comme raid et système de fichiers associé à une seule entité. Voir le ASCII diagramme ci-dessus pour l'endroit où il s'inscrit dans la pile de stockage.
  4. Vous aurez besoin de déverrouiller chaque périphérique de bloc de LUKS-crypté que le système de fichiers ZFS utilise.
  5. Surveillez la santé du matériel de stockage de la même manière que vous le faites maintenant.
  6. Soyez conscient de l'alignement du bloc du système de fichiers si vous utilisez des lecteurs avec des blocs 4K. Vous devrez peut-être expérimenter des options Luksformat ou d'autres paramètres pour obtenir l'alignement dont vous avez besoin pour une vitesse acceptable.

Mise à jour de 2020 février

Cela fait six ans que j'ai écrit cette réponse. ZFS sur Linux V0.8. prend en charge le cryptage natif, que vous devriez considérer si vous n'avez pas de besoin spécifique de LUKS.

32
Starfish

Une mise en œuvre alternative consiste à créer un périphérique de bloc Zvol ( http://zfsonlinux.org/example-zvol.html ), utilisez LUKS pour chiffrer le zvol nouvellement créé, puis créer une ext4 (ou une autre). Système de fichiers sur le dessus du périphérique de bloc crypté.

4
Tux Racer