Estou planejando configurar um conjunto de unidades de 3x 2TB 7200rpm como um pool Z-RAID criptografado por LUKS no Linux (para uma solução NAS).
Meu entendimento do problema em questão é que a única maneira de conseguir isso é para luksFormat
todos os dispositivos físicos e depois montar um zpool a partir de contêineres LUKS desbloqueados.
Tenho as seguintes preocupações com isso:
Não impediria significativamente o desempenho da gravação? Nesta configuração, os dados redundantes são criptografados várias vezes porque LUKS não está "ciente" do Z-RAID. Na solução LUKS-on-mdadm, os dados são criptografados uma vez e meramente gravados em discos várias vezes. Minha CPU suporta Intel AES-NI.
O ZFS estará ciente das falhas de disco ao operar nos contêineres LUKS do mapeador de dispositivos em oposição aos dispositivos físicos? E quanto à desduplicação e outros recursos do ZFS?
fonte
Respostas:
Um dos servidores que administro executa o tipo de configuração que você descreve. Ele possui seis discos rígidos de 1 TB com um pool RAIDZ criptografado por LUKS. Também tenho dois discos rígidos de 3 TB em um espelho ZFS criptografado por LUKS que são trocados toda semana para serem retirados do local. O servidor usa essa configuração há cerca de três anos e nunca tive problemas com ela.
Se você precisar do ZFS com criptografia no Linux, recomendo esta configuração. Estou usando o ZFS-Fuse, não o ZFS no Linux. No entanto, acredito que não teria influência no resultado, exceto o ZFS no Linux, provavelmente terá um desempenho melhor do que a instalação que estou usando.
Lembre-se de que LUKS não tem conhecimento de RAID. Só sabe que está em cima de um dispositivo de bloco. Se você usa o mdadm para criar um dispositivo RAID e, em seguida
luksformat
, ele, é o mdadm que está replicando os dados criptografados nos dispositivos de armazenamento subjacentes, não no LUKS.A pergunta 2.8 das perguntas frequentes do LUKS aborda se a criptografia deve estar sobre o RAID ou o contrário . Ele fornece o diagrama a seguir.
Como o ZFS combina a funcionalidade do RAID e do sistema de arquivos, sua solução terá a aparência da seguinte.
Eu listei as partições brutas como opcionais, pois o ZFS espera que ele use o armazenamento em bloco bruto em vez de uma partição. Embora você possa criar seu zpool usando partições, isso não é recomendado, pois adicionará um nível inútil de gerenciamento e precisará ser levado em consideração ao calcular qual será o deslocamento para o alinhamento de blocos de partição.
Não deve haver um problema de desempenho desde que você escolha um método de criptografia suportado pelo driver AES-NI. Se você tiver o cryptsetup 1.6.0 ou mais recente, poderá executar
cryptsetup benchmark
e ver qual algoritmo fornecerá o melhor desempenho.Esta pergunta sobre as opções recomendadas para LUKS também pode ser útil .
Como você tem suporte à criptografia de hardware, é mais provável que enfrente problemas de desempenho devido ao desalinhamento da partição.
O ZFS no Linux adicionou a
ashift
propriedade aozfs
comando para permitir que você especifique o tamanho do setor para seus discos rígidos. De acordo com o FAQ vinculado,ashift=12
diria que você está usando unidades com um tamanho de bloco de 4K.As Perguntas frequentes do LUKS afirmam que uma partição LUKS tem um alinhamento de 1 MB. As perguntas 6.12 e 6.13 discutem isso em detalhes e também fornecem conselhos sobre como aumentar o cabeçalho da partição LUKS. No entanto, não tenho certeza de que seja possível torná-lo grande o suficiente para garantir que o seu sistema de arquivos ZFS seja criado em um limite de 4K. Eu estaria interessado em saber como isso funciona para você, se esse é um problema que você precisa resolver. Como você está usando unidades de 2 TB, você pode não enfrentar esse problema.
O ZFS estará ciente das falhas de disco na medida em que possa ler e gravar nelas sem problemas. O ZFS requer armazenamento em bloco e não se importa ou conhece as especificidades desse armazenamento e de onde ele vem. Ele monitora apenas os erros de leitura, gravação ou soma de verificação que encontrar. Cabe a você monitorar a integridade dos dispositivos de armazenamento subjacentes.
A documentação do ZFS possui uma seção sobre solução de problemas que vale a pena ler. A seção sobre substituição ou reparo de um dispositivo danificado descreve o que você pode encontrar durante um cenário de falha e como resolvê-lo. Você faria o mesmo aqui para dispositivos que não possuem ZFS. Verifique o syslog para obter mensagens do seu driver SCSI, controlador HBA ou HD e / ou software de monitoramento SMART e, em seguida, aja de acordo.
Todos os recursos do ZFS funcionarão da mesma forma, independentemente de o armazenamento em bloco subjacente estar criptografado ou não.
Sumário
cryptsetup benchmark
para ver o que funcionará melhor em seu hardware.fonte
geli
é usado para criar um dispositivo criptografado e os dados de texto sem formatação são disponibilizados por meio de um segundo dispositivo usado pelo ZFS. Veja o segundo ponto em doc.freenas.org/index.php/Volumes#Encryption .Uma implementação alternativa é criar um dispositivo de bloco ZVOL ( http://zfsonlinux.org/example-zvol.html ), usar LUKS para criptografar o ZVOL recém-criado e criar um sistema de arquivos ext4 (ou outro) no topo do bloco criptografado dispositivo.
fonte