El mejor pedido de RAID, LVM y LUKS

13

Voy a instalar un servidor de archivos con Debian GNU / Linux 8.

Quiero tener el software RAID-1 usando mdadm así como discos encriptados usando LUKS. También me gusta la flexibilidad de tener LVM.

Hay diferentes formas de hacer esto. Una forma es: Primero configurar RAID-1 usando mdadm. Luego configure los PV LVM para cubrir el / dev / mdX creado. Luego configure LV y cifre los que usan LUKS. Luego formatee estos con un sistema de archivos, digamos ext4. Esto da como resultado un diseño como este:

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

O podría hacerlo en un orden diferente:

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

O tal vez incluso:

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

Y tal vez incluso un orden completamente diferente.

¿Cuáles son los beneficios y las desventajas de los diferentes enfoques? ¿Qué ofrece el mejor rendimiento, seguridad, facilidad de mantenimiento, etc.?

¿Hay una "mejor manera" de hacer esto?

Thomas
fuente

Respuestas:

18

Primero, el orden de LUKS y LVM depende de si desea tener contraseñas LUKS diferentes u otras configuraciones para diferentes LV. Si dice, necesita configurar diferentes contraseñas para diferentes LV, definitivamente necesita colocar LUKS encima de LVM. Por otro lado, si todos los LV comparten la misma contraseña y configuración como keylen, querrás tener LUKS por debajo de LVM, para que no tengas que lidiar con la sobrecarga de tener más de una partición LUKS (piensa en lo que tendría que hacerlo cuando necesite cambiar la contraseña).

En segundo lugar, casi siempre desea que RAID sea el nivel más bajo, de modo que cuando un disco muere, se pueda intercambiar de manera fácil y transparente. Si tuviera que configurar RAID sobre LVM, tendría que reemplazar un PV cuando un disco muere, eso sería un gran dolor en el cuello. También RAID sobre LVM derrotaría totalmente la flexibilidad de LVM. ¡Entonces probablemente deba configurar la segunda capa de LVM sobre RAID nuevamente!

Por lo tanto, como en la mayoría de los casos las personas solo necesitan usar una sola contraseña, esto sería suficiente:

RAID -> LUKS -> LVM -> ext4

En algunos casos, es posible que necesite usar LVM para combinar múltiples dispositivos RAID en un gran volumen, luego puede hacer lo siguiente:

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

Teóricamente, el orden no debería afectar mucho el rendimiento, si cada capa está configurada correctamente , y en la práctica no he visto que esta configuración tenga un rendimiento particularmente malo. Lo más importante es probablemente la alineación:

  1. asegúrese de que sus particiones estén alineadas con 1 MB (muy importante para SSD);
  2. para la capa RAID, elija el tamaño del fragmento de forma inteligente;
  3. para LVM, asegúrese de configurar --dataalignmentpara que coincida con el tamaño del fragmento RAID ( esto podría ser útil).

Además, si el SSD, asegúrese de habilitar LUKS TRIM / DESCARTAR de paso a través añadiendo rd.luks.options=discarda /etc/default/gruby discarda /etc/crypttab(Esto es lo que hago en Red Hat / Fedora Linux. Puede ser un poco diferente en Debian.) LVM y RAID debe descartar el apoyo de forma automática si usa un kernel nuevo.

Por supuesto, estas son solo pautas generales. Si tiene necesidades especiales, no dude en actualizar su pregunta o comentario aquí.

Yan Li
fuente
Gracias por la rápida respuesta. ¡Buenos puntos! ¿Puedes comentar sobre las diferencias de rendimiento si no son triviales?
Thomas
Actualizado con algunas notas de rendimiento.
Yan Li
1
También debe señalarse que no siempre necesita usar MDADM (aunque espero que esta sea la solución más típica). - LVM ofrece RAID (también conocido como reflejo)
davidgo
@davidgo Sí. Pensé en mencionar eso también, pero no lo hice, porque no estoy seguro de si ese es el camino correcto. No lo he probado personalmente (principalmente uso niveles más altos de RAID como 5 o 6), y he leído comentarios mixtos sobre la duplicación de LVM, como se menciona en algunas respuestas en esta pregunta .
Yan Li
@ Yan, estoy de acuerdo. Yo también siempre uso mdadm RAid (1)
davidgo
4

Si desea todo RAID, LUKS y LVM, lo recomendaría RAID -> LUKS -> LVM -> FS. RAID --> LVM --> LUKS --> LVM --> FSno es mejor que RAID -> LUKS -> LVM: para ampliar los volúmenes, simplemente agregue más RAID -> LUKSdispositivos a un grupo de volúmenes.

RAID --> LVM --> LUKS --> FS - cifrar solo volúmenes lógicos particulares tiene la característica de no cifrar todo de forma predeterminada (puede verse como una ventaja o una desventaja), pero facilitará la extensión del FS raíz.

Ampliar LUKS sobre volúmenes lógicos es una fuente común de problemas cuando los usuarios los amplían / ​​cambian de tamaño en el orden incorrecto. Tener LUKS en todo el dispositivo md RAID simplificará el cambio de tamaño: agregue un nuevo dispositivo md, cree LUKS además de eso, agregue el dispositivo a / etc / crypttab (al menos en los clones de Fedora y RHEL) y amplíe su grupo de volúmenes. Si el FS raíz está en el grupo de volúmenes, deberá agregar otra rd.luks.uuidentrada al cmdline del núcleo (editar / etc / default / grub y regenerar grub.cfg).

LUKS -> RAIDgeneralmente es incorrecto: los datos se cifrarán varias veces, consumiendo más ciclos de CPU sin ganancia. También existe la posibilidad de reemplazar por error un disco fallido con uno nuevo sin configurar LUKS cuando falla un disco.

Extendiéndose y encogiéndose:

Cuando se extienda, siempre vaya desde la parte inferior de la pila, cuando se encoja desde la parte superior.

Ejemplo:

Ampliación RAID -> LVM -> LUKS -> FS (los dos primeros pasos son opcionales si hay suficiente espacio libre en el grupo de volúmenes):

  1. Agregue nuevos discos y cree md RAID.
  2. Agregar dispositivo mdX al grupo de volúmenes.
  3. Extiende el volumen lógico.
  4. Extienda el dispositivo LUKS.
  5. Extiende FS.

Encogimiento RAID -> LVM -> LUKS -> FS :

  1. Shrink FS.
  2. Reducir el dispositivo LUKS.
  3. Reducir el volumen lógico.
marciano
fuente