Meilleur ordre de RAID, LVM et LUKS

13

Je vais installer un serveur de fichiers avec Debian GNU / Linux 8.

Je veux avoir un logiciel RAID-1 utilisant mdadm ainsi que des disques cryptés utilisant LUKS. J'aime aussi la flexibilité d'avoir LVM.

Il existe différentes façons de procéder. Une façon consiste à: Tout d'abord configurer RAID-1 à l'aide de mdadm. Configurez ensuite les PV LVM pour couvrir le / dev / mdX créé. Configurez ensuite les LV et cryptez ceux qui utilisent LUKS. Formatez-les ensuite avec un système de fichiers, par exemple ext4. Il en résulte une mise en page comme celle-ci:

RAID --> LVM --> LUKS --> ext4

Ou je pourrais le faire dans un ordre différent:

RAID --> LUKS --> LVM --> ext4

Ou peut-être même:

LVM --> RAID --> LUKS --> ext4

Et peut-être même un tout autre ordre.

Quels sont les avantages et les inconvénients des différentes approches? Qu'est-ce qui donne les meilleures performances, sécurité, maintenabilité, etc.?

Existe-t-il une «meilleure façon» de procéder?

Thomas
la source

Réponses:

18

Tout d'abord, l'ordre des LUKS et LVM dépend de si vous souhaitez avoir différents mots de passe LUKS ou d'autres paramètres pour différents LV. Si, par exemple, vous devez configurer différents mots de passe pour différents LV, vous devez absolument mettre LUKS au-dessus de LVM. D'un autre côté, si tous les LV partagent le même mot de passe et les mêmes paramètres comme keylen, vous voudriez avoir LUKS en dessous de LVM, de sorte que vous n'ayez pas à faire face à la surcharge d'avoir plus d'une partition LUKS (pensez à ce que vous devrait faire quand vous devez changer le mot de passe).

Deuxièmement, vous voulez presque toujours que le RAID soit le niveau le plus bas, de sorte que lorsqu'un disque meurt, il puisse être échangé facilement et de manière transparente. Si vous deviez configurer un RAID au-dessus de LVM, vous auriez à remplacer un PV quand un disque meurt, ce serait une grosse douleur dans le cou. De plus, le RAID au-dessus de LVM annulerait totalement la flexibilité de LVM. Vous devrez alors probablement reconfigurer la deuxième couche de LVM au-dessus du RAID!

Par conséquent, parce que dans la plupart des cas, les gens n'ont qu'à utiliser un seul mot de passe, cela suffira:

RAID -> LUKS -> LVM -> ext4

Dans certains cas, vous devrez peut-être utiliser LVM pour combiner plusieurs périphériques RAID en un grand volume, alors vous pouvez faire:

RAID -> LVM -> LUKS (-> LVM) -> ext4

Théoriquement, l'ordre ne devrait pas affecter beaucoup les performances, si chaque couche est correctement configurée , et dans la pratique, je n'ai pas vu cette configuration avoir des performances particulièrement mauvaises. La chose la plus importante est probablement l'alignement:

  1. assurez-vous que vos partitions sont alignées à 1 Mo (très important pour les SSD);
  2. pour la couche RAID, choisissez judicieusement la taille des morceaux ;
  3. pour LVM, assurez-vous de régler --dataalignmentpour correspondre à la taille de bloc RAID ( cela peut être utile).

Aussi, si sur SSD, assurez-vous d'activer le pass-through LUKS TRIM / DISCARD en ajoutant rd.luks.options=discardà /etc/default/grubet discardà /etc/crypttab(c'est ce que je fais sur Red Hat / Fedora Linux. Cela pourrait être un peu différent sur Debian.) LVM et RAID devraient automatiquement prendre en charge la suppression si vous utilisez un noyau new-ish.

Bien sûr, ce ne sont que des directives générales. Si vous avez des besoins particuliers, n'hésitez pas à mettre à jour votre question ou commentaire ici.

Yan Li
la source
Merci pour la réponse rapide. Bons points! Pouvez-vous commenter les différences de performances si elles ne sont pas triviales?
Thomas
Mis à jour avec quelques notes de performance.
Yan Li
1
Il convient également de noter que vous n'avez pas toujours besoin d'utiliser MDADM (bien que je m'attende à ce que ce soit la solution la plus typique). - LVM propose un RAID (alias mise en miroir)
davidgo
@davidgo Oui. J'ai pensé à le mentionner aussi, mais je ne l'ai pas fait, car je ne sais pas si c'est la bonne façon de procéder. Je ne l'ai pas essayé personnellement (j'utilise principalement des niveaux de RAID plus élevés comme 5 ou 6) et j'ai lu des commentaires mitigés sur la mise en miroir LVM, comme mentionné par certaines réponses dans cette question .
Yan Li
@Yan, je suis d'accord. Moi aussi, j'utilise toujours mdadm RAid (1)
davidgo
4

Si vous voulez tous les RAID, LUKS et LVM, je recommanderais RAID -> LUKS -> LVM -> FS. RAID --> LVM --> LUKS --> LVM --> FSn'est pas mieux que RAID -> LUKS -> LVM- pour étendre des volumes, ajoutez simplement plus de RAID -> LUKSpériphériques à un groupe de volumes.

RAID --> LVM --> LUKS --> FS - Le chiffrement de volumes logiques particuliers a la particularité de ne pas tout chiffrer par défaut (peut être considéré comme un avantage ou un inconvénient), mais il facilitera l'extension de la racine FS.

L'extension de LUKS au-dessus des volumes logiques est une source courante de problèmes lorsque les utilisateurs les étendent / les redimensionnent dans le mauvais ordre. Avoir LUKS sur l'ensemble du périphérique RAID md simplifiera le redimensionnement - ajoutez un nouveau périphérique md, créez LUKS en plus de cela, ajoutez un périphérique à / etc / crypttab (au moins sur les clones Fedora et RHEL) et étendez votre groupe de volumes. Si root FS est sur le groupe de volumes, vous devrez ajouter une autre rd.luks.uuidentrée à la cmdline du noyau (éditez / etc / default / grub et régénérez grub.cfg.)

LUKS -> RAIDest généralement faux - les données seront cryptées plusieurs fois, consommant plus de cycles CPU sans gain. Il est également possible de remplacer par erreur un disque défaillant par un nouveau sans configurer LUKS en cas de défaillance d'un disque.

Extension et rétrécissement:

Lors de l'extension, allez toujours par le bas de la pile, lorsque vous rétrécissez par le haut.

Exemple:

Extension RAID -> LVM -> LUKS -> FS (les deux premières étapes sont facultatives s'il y a suffisamment d'espace libre dans le groupe de volumes):

  1. Ajoutez de nouveaux disques et créez md RAID.
  2. Ajoutez un périphérique mdX au groupe de volumes.
  3. Étendez le volume logique.
  4. Étendez le périphérique LUKS.
  5. Étendez FS.

Rétrécissement RAID -> LVM -> LUKS -> FS :

  1. Shrink FS.
  2. Rétrécir le périphérique LUKS.
  3. Réduire le volume logique.
Martien
la source