Melhor ordem de RAID, LVM e LUKS

13

Vou instalar um servidor de arquivos com o Debian GNU / Linux 8.

Eu quero ter o software RAID-1 usando mdadm, bem como discos criptografados usando LUKS. Eu também gosto da flexibilidade de ter LVM.

Existem diferentes maneiras de fazer isso. Uma maneira é: primeiro configurar o RAID-1 usando o mdadm. Em seguida, configure PVs LVM para cobrir o / dev / mdX criado. Em seguida, configure LVs e criptografe aqueles usando LUKS. Em seguida, formate-os com um sistema de arquivos, por exemplo ext4. Isso resulta em um layout como este:

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

Ou eu poderia fazê-lo em uma ordem diferente:

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

Ou talvez até:

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

E talvez até uma ordem completamente diferente.

Quais são os benefícios e as desvantagens das diferentes abordagens? O que oferece melhor desempenho, segurança, capacidade de manutenção etc.?

Existe uma "melhor maneira" de fazer isso?

Thomas
fonte

Respostas:

18

Primeiro, a ordem de LUKS e LVM depende se você deseja ter senhas LUKS diferentes ou outras configurações para LVs diferentes. Se, digamos, você precisar configurar senhas diferentes para LVs diferentes, você definitivamente precisará colocar LUKS no topo do LVM. Por outro lado, se todos os LVs compartilharem a mesma senha e configurações como keylen, convém ter LUKS abaixo do LVM, para que você não precise lidar com a sobrecarga de ter mais de uma partição LUKS (pense no que você teria que fazer quando você precisar alterar a senha).

Segundo, você quase sempre deseja que o RAID seja o nível mais baixo, para que, quando um disco morrer, ele possa ser trocado com facilidade e transparência. Se você configurasse o RAID sobre o LVM, teria que substituir um PV quando um disco morrer, isso seria uma grande dor no pescoço. Também o RAID sobre o LVM derrotaria totalmente a flexibilidade do LVM. Você provavelmente precisará configurar a segunda camada do LVM sobre o RAID novamente!

Portanto, como na maioria dos casos as pessoas só precisam usar uma única senha, isso seria suficiente:

RAID -> LUKS -> LVM -> ext4

Em alguns casos, pode ser necessário usar o LVM para combinar vários dispositivos RAID em um grande volume, e você pode:

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

Teoricamente, a ordem não deve afetar muito o desempenho, se todas as camadas estiverem configuradas corretamente e, na prática, eu não vi essa configuração ter um desempenho particularmente ruim. O mais importante é provavelmente o alinhamento:

  1. verifique se suas partições estão alinhadas com 1 MB (muito importante para SSD);
  2. para camada RAID, escolha sabiamente o tamanho do pedaço ;
  3. para LVM, certifique-se de definir --dataalignmento tamanho do pedaço RAID ( isso pode ser útil).

Além disso, se no SSD, certifique-se de permitir que LUKS TRIM / DISCARD pass-through pela adição rd.luks.options=discardde /etc/default/grube discardpara /etc/crypttab(Estes são o que eu faço no Red Hat / Fedora Linux. Pode ser um pouco diferente em Debian.) LVM e RAID deve descartar o apoio automaticamente se você usar um kernel new-ish.

Obviamente, estas são apenas diretrizes gerais. Se você tiver necessidades especiais, atualize sua pergunta ou comentário aqui.

Yan Li
fonte
Obrigado pela resposta rápida. Bons pontos! Você pode comentar sobre as diferenças de desempenho se elas não forem triviais?
Thomas
Atualizado com algumas notas de desempenho.
Yan Li
1
Também deve ser destacado que você nem sempre precisa usar o MDADM (embora eu espere que essa seja a solução mais típica). O LVM oferece RAID (também conhecido como espelhamento)
davidgo 29/03
@davidgo Sim. Pensei em mencionar isso também, mas não o fiz, porque não tenho certeza se esse é o caminho certo a seguir. Eu não tentei pessoalmente (principalmente, uso níveis mais altos de RAID como 5 ou 6) e li comentários mistos sobre o espelhamento LVM, como mencionado por algumas respostas nesta pergunta .
Yan Li
@Yan, eu concordo. Eu também sempre uso mdadm RAid (1)
davidgo 29/03
4

Se você deseja todos os RAID, LUKS e LVM, eu recomendaria RAID -> LUKS -> LVM -> FS. RAID --> LVM --> LUKS --> LVM --> FSnão é melhor que RAID -> LUKS -> LVM- para estender volumes, basta adicionar mais RAID -> LUKSdispositivos a um grupo de volumes.

RAID --> LVM --> LUKS --> FS - criptografar apenas volumes lógicos específicos tem o recurso de não criptografar tudo por padrão (pode ser visto como vantagem ou desvantagem), mas facilitará a extensão do FS raiz.

Estender LUKS sobre volumes lógicos é uma fonte comum de problemas quando os usuários os estendem / redimensionam na ordem errada. Ter o LUKS em todo o dispositivo md RAID simplificará o redimensionamento - adicione um novo dispositivo md, crie LUKS além disso, adicione o dispositivo ao / etc / crypttab (pelo menos nos clones do Fedora e RHEL) e estenda seu grupo de volumes. Se o FS raiz estiver no grupo de volumes, você precisará adicionar outra rd.luks.uuidentrada ao cmdline do kernel (edite / etc / default / grub e gere novamente o grub.cfg.)

LUKS -> RAIDgeralmente está errado - os dados serão criptografados várias vezes, consumindo mais ciclos de CPU sem ganho. Também é possível substituir por engano um disco com falha por um novo sem configurar o LUKS quando um disco falhar.

Estendendo e encolhendo:

Ao estender, vá sempre do fundo da pilha, ao encolher por cima.

Exemplo:

Estendendo RAID -> LVM -> LUKS -> FS (as duas primeiras etapas são opcionais se houver espaço livre suficiente no grupo de volumes):

  1. Adicione novos discos e crie md RAID.
  2. Adicione o dispositivo mdX ao grupo de volumes.
  3. Estenda o volume lógico.
  4. Estenda o dispositivo LUKS.
  5. Estenda o FS.

Encolhendo RAID -> LVM -> LUKS -> FS :

  1. Encolher FS.
  2. Encolher o dispositivo LUKS.
  3. Encolher volume lógico.
marciano
fonte