it-swarm.dev

Melhor ordem de RAID, LVM e LUKS

Eu 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 o LVM.

Existem diferentes maneiras de fazer isso. Uma maneira é: Primeiro, configure o RAID-1 usando o mdadm. Em seguida, configure os PVs do LVM para cobrir o/dev/mdX criado. Em seguida, configure os LVs e criptografe os que estiverem usando o LUKS. Em seguida, formate-os com um sistema de arquivos, digamos 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 desvantagens para as diferentes abordagens? O que dá melhor desempenho, segurança, facilidade de manutenção etc.?

Existe uma "melhor maneira" de fazer isso?

12
Thomas

Primeiro, a ordem de LUKS e LVM depende se você deseja ter diferentes senhas LUKS ou outras configurações para diferentes LVs. Se disser, você precisa configurar senhas diferentes para diferentes LVs, você definitivamente precisa colocar o LUKS em cima do LVM. Por outro lado, se todos os LVs compartilham a mesma senha e configurações como o keylen, você desejaria ter o LUKS abaixo do LVM, para que você não tenha que lidar com a sobrecarga de ter mais de uma partição LUKS (pense no que você teria que fazer quando você precisa mudar a senha).

Segundo, você quase sempre quer que o RAID seja o nível mais baixo, de modo que quando um disco morre, ele pode ser trocado com facilidade e transparência. Se você configurasse o RAID em cima do LVM, você teria que substituir um PV quando um disco morre, o que seria uma grande dor no pescoço. Também o RAID no topo do LVM iria derrotar totalmente a flexibilidade do LVM. Você provavelmente precisará configurar a segunda camada do LVM em cima do RAID novamente!

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

RAID -> LUKS -> LVM -> ext4

Em alguns casos, você pode precisar usar o LVM para combinar vários dispositivos RAID em um grande volume, então você pode fazer:

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 problema particularmente ruim. desempenho. O mais importante é provavelmente o alinhamento:

  1. verifique se suas partições estão alinhadas em 1MB (muito importante para SSD);
  2. para a camada RAID, escolha tamanho do bloco sabiamente;
  3. para o LVM, certifique-se de definir --dataalignment para corresponder ao tamanho do bloco RAID ( this pode ser útil).

Além disso, se estiver em SSD, certifique-se de ativar a passagem LUKS TRIM/DISCARD adicionando rd.luks.options=discard a /etc/default/grub e discard a /etc/crypttab (Isso é o que eu faço no Red Hat/Fedora Linux. Pode ser um pouco diferente no Debian.) LVM e RAID deve suportar automaticamente o descarte se você usar um kernel novo-ish.

Claro, estas são apenas diretrizes gerais. Se você tem necessidades especiais, fique à vontade para atualizar sua pergunta ou comentário aqui.

16
Yan Li

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

RAID --> LVM --> LUKS --> FS - criptografando apenas determinados volumes lógicos tem um recurso de não criptografar tudo por padrão (pode ser visto como vantagem ou desvantagem), mas tornará mais fácil extender o root FS.

A extensão do LUKS sobre os volumes lógicos é uma fonte comum de problemas quando os usuários os estendem/redimensionam na ordem errada. Ter LUKS em todo o dispositivo md RAID irá simplificar o redimensionamento - adicionar novo dispositivo md, criar LUKS em cima disso, adicionar dispositivo para /etc/crypttab ( pelo menos nos clones Fedora e RHEL) e estenda seu grupo de volumes. Se root FS estiver no grupo de volume, você precisará adicionar outra entrada rd.luks.uuid ao kernel cmdline (edit /etc/default/grub e regenere o grub.cfg.)

LUKS -> RAID geralmente está errado - os dados serão criptografados várias vezes, consumindo mais ciclos de CPU sem ganho. Há também uma chance de substituir por engano um disco com falha por um novo sem configurar o LUKS quando um disco falhar.

Estendendo e encolhendo:

Ao estender sempre, vá da parte inferior da pilha, ao encolher a partir do topo.

Exemplo:

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

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

encolhendoRAID -> LVM -> LUKS -> FS:

  1. Encolher FS.
  2. Encolher o dispositivo LUKS.
  3. Diminuir o volume lógico.
3
Martian