Migliore ordine di RAID, LVM e LUKS


13

Ho intenzione di installare un file server con Debian GNU / Linux 8.

Voglio avere il software RAID-1 con mdadm e dischi crittografati con LUKS. Mi piace anche la flessibilità di avere LVM.

Esistono diversi modi per farlo. Un modo è: prima configurare RAID-1 usando mdadm. Quindi impostare i PV LVM per coprire il / dev / mdX creato. Quindi impostare LV e crittografare quelli utilizzando LUKS. Quindi formattali con un filesystem, ad esempio ext4. Ciò si traduce in un layout come questo:

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

O potrei farlo in un ordine diverso:

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

O forse anche:

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

E forse anche un ordine completamente diverso.

Quali sono i vantaggi e gli svantaggi per i diversi approcci? Cosa offre le migliori prestazioni, sicurezza, manutenibilità, ecc.?

Esiste un "modo migliore" per farlo?

Risposte:


18

Innanzitutto, l'ordine di LUKS e LVM dipende se si desidera avere password LUKS diverse o altre impostazioni per LV diversi. Se dico, devi impostare password diverse per LV diversi, devi sicuramente mettere LUKS in cima a LVM. D'altra parte, se tutti i LV condividono la stessa password e le stesse impostazioni di keylen, si vorrebbe avere LUKS sotto LVM, in modo da non dover affrontare l'overhead di avere più di una partizione LUKS (pensa a cosa dovrebbe fare quando è necessario modificare la password).

In secondo luogo, si desidera quasi sempre che il RAID sia il livello più basso, in modo che quando un disco si spegne, può essere scambiato facilmente e in modo trasparente. Se dovessi installare RAID sopra LVM, dovresti sostituire un PV quando muore un disco, sarebbe un grande dolore al collo. Anche RAID in cima a LVM avrebbe completamente vanificato la flessibilità di LVM. Quindi probabilmente dovrai impostare di nuovo il secondo livello di LVM sopra RAID!

Pertanto, poiché nella maggior parte dei casi le persone devono solo utilizzare una singola password, questo sarebbe sufficiente:

RAID -> LUKS -> LVM -> ext4

In alcuni casi, potrebbe essere necessario utilizzare LVM per combinare più dispositivi RAID in un volume di grandi dimensioni, quindi è possibile eseguire:

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

Teoricamente l'ordine non dovrebbe influire molto sulle prestazioni, se ogni livello è impostato correttamente , e in pratica non ho visto che questa configurazione ha prestazioni particolarmente negative. La cosa più importante è probabilmente l'allineamento:

  1. assicurati che le tue partizioni siano allineate di 1 MB (molto importante per SSD);
  2. per il livello RAID, scegli le dimensioni del pezzo con saggezza;
  3. per LVM, assicurati di impostare la --dataalignmentcorrispondenza con la dimensione del blocco RAID ( questo potrebbe essere utile).

Inoltre, se su SSD, assicurati di abilitare il pass-through LUKS TRIM / DISCARD aggiungendo rd.luks.options=discarda /etc/default/grube discarda /etc/crypttab(Queste sono le operazioni che eseguo su Red Hat / Fedora Linux. Potrebbe essere leggermente diverso su Debian.) LVM e RAID dovrebbero supportare automaticamente lo scarto se usi un kernel new-ish.

Naturalmente, queste sono solo linee guida generali. Se hai esigenze particolari, sentiti libero di aggiornare la tua domanda o commento qui.


Grazie per la risposta rapida. Punti buoni! Puoi commentare le differenze di prestazione se non banali?
Thomas,

Aggiornato con alcune note sulle prestazioni.
Yan Li,

1
Va anche sottolineato che non è sempre necessario utilizzare MDADM (anche se mi aspetto che questa sia la soluzione più tipica). - LVM offre RAID (aka mirroring)
davidgo

@davidgo Sì. Ho pensato di menzionarlo anch'io, ma non l'ho fatto, perché non sono sicuro che sia la strada giusta da percorrere. Non l'ho provato personalmente (principalmente utilizzo livelli più alti di RAID come 5 o 6) e ho letto feedback contrastanti sul mirroring LVM, come menzionato da alcune risposte in questa domanda .
Yan Li,

@Yan, sono d'accordo. Anch'io uso sempre mdadm RAid (1)
davidgo

4

Se si desidera tutto il RAID, LUKS e LVM lo consiglierei RAID -> LUKS -> LVM -> FS. RAID --> LVM --> LUKS --> LVM --> FSnon è meglio di RAID -> LUKS -> LVM- per estendere i volumi basta aggiungere più RAID -> LUKSdispositivi a un gruppo di volumi.

RAID --> LVM --> LUKS --> FS - la crittografia solo di determinati volumi logici ha la caratteristica di non crittografare tutto per impostazione predefinita (può essere vista come un vantaggio o uno svantaggio) ma renderà più semplice l'estensione di FS root.

L'estensione di LUKS su volumi logici è una fonte comune di problemi quando gli utenti li estendono / ridimensionano nell'ordine sbagliato. Avere LUKS sull'intero dispositivo RAID md semplifica il ridimensionamento: aggiungi un nuovo dispositivo md, crea LUKS sopra di esso, aggiungi il dispositivo a / etc / crypttab (almeno sui cloni Fedora e RHEL) ed estendi il tuo gruppo di volumi. Se root FS fa parte del gruppo di volumi, sarà necessario aggiungere un'altra rd.luks.uuidvoce al cmdline del kernel (modificare / etc / default / grub e rigenerare grub.cfg.)

LUKS -> RAIDdi solito è errato: i dati verranno crittografati più volte, consumando più cicli della CPU senza guadagno. Esiste anche la possibilità di sostituire erroneamente un disco guasto con uno nuovo senza configurare LUKS quando un disco si guasta.

Estensione e riduzione:

Quando si estende si va sempre dal fondo della pila, quando si restringe dall'alto.

Esempio:

Estensione RAID -> LVM -> LUKS -> FS (i primi due passaggi sono facoltativi se lo spazio disponibile nel gruppo di volumi è sufficiente):

  1. Aggiungi nuovi dischi e crea md RAID.
  2. Aggiungi dispositivo mdX al gruppo di volumi.
  3. Estendi volume logico.
  4. Estendi il dispositivo LUKS.
  5. Estendi FS.

Restringimento RAID -> LVM -> LUKS -> FS :

  1. Shrink FS.
  2. Riduci dispositivo LUKS.
  3. Riduci volume logico.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.