Backup para unidade externa com registro de disco completo e prevenção de podridão de bits

4

Eu tenho um novo HDD externo de 2 TB USB e gostaria de usá-lo como backup para meu servidor doméstico.

Meus desejos são:

  • criptografia de disco completo (o disco será armazenado fora do site)
  • prevenção contra apodrecimento

Atualmente, estou usando um disco externo antigo de 320 GB com criptografia TrueCrypt no nível da partição. Mas como isso não oferece proteção contra a podridão e, como o TrueCrypt está obsoleto, gostaria de tentar outra coisa.

Meu servidor roda o Ubuntu Server 14.04.3 LTS e possui memória ECC com 2 discos de 3 TB no RAID 1.

Para a parte de criptografia, o uso do LUKS é provavelmente a melhor escolha, certo?

Mas quando se trata de lidar com a podridão de bits, as coisas ficam um pouco complicadas. Pelo menos para configurações de disco único. Uma opção seria criar duas partições idênticas e criar um RAID 1 com a limpeza regular. Mas esta solução parece um pouco estranha no mesmo disco.

O btrfs seria uma opção? É possível adicionar redundância para configurações de unidade única?

Não me importo de sacrificar metade do armazenamento por redundância. Perda de desempenho também não é um problema para mim.

    
por alesc 02.09.2015 / 13:47

2 respostas

4

Dado que você tem todos os pré-requisitos básicos, especialmente o ECC RAM, eu acho que o ZFS (através da implementação do ZFS no Linux ) pode ser utilizável opção.

Diferentemente do btrfs, que empresta muitas ideias de design do ZFS, o ZFS é um sistema de arquivos testado e comprovado (gerenciador de volumes e). Claro, a porta do Linux tem algumas arestas que estão sendo suavizadas ao longo do tempo, mas o código e o design foram testados em um grande número de cenários de falhas do mundo real.

Você poderia usar o ZFS com duas partições separadas em uma configuração espelhada ou com uma partição e definindo copies=2 no sistema de arquivos raiz do pool. O espaço em disco e a sobrecarga de desempenho de E / S destes seriam semelhantes. Você poderá migrar para discos maiores ou configurações com vários discos, pois as suas necessidades mudam com o tempo. Você pode usar o raidz vdevs (com vários níveis de redundância: um, dois ou três discos), mas isso apresenta problemas caso você queira alterar os níveis de redundância.

Eu sugiro seriamente considerar a execução do ZFS sobre o LUKS.

O oposto (executando o LUKS no topo do ZFS) também é possível, mas significativamente mais envolvido. Você também pode executar algo como ecryptfs em cima do ZFS não criptografado, mas isso potencialmente vaza quantidades significativas de metadados do sistema de arquivos.

Em outras palavras, crie contêineres LUKS (um para cada unidade ou partição) e use esses contêineres para criar um pool do ZFS. Executar o ZFS em cima do LUKS deve ser suficiente para evitar um invasor offline na maioria dos cenários, embora represente um pequeno obstáculo para um invasor online. Se isso é um problema depende do seu modelo de ameaça, mas para backups externos, o acesso off-line é geralmente o aspecto mais importante a ser considerado.

A execução de duas partições separadas como contêineres LUKS distintos deve ajudar a evitar danos ao cabeçalho LUKS, tornando as duas cópias inacessíveis, mas outros métodos também podem fazer isso (por exemplo, um backup de cabeçalho LUKS armazenado com segurança). A execução de um contêiner LUKS de única partição para cada unidade permitirá que o ZFS tome decisões sobre o armazenamento de metadados do sistema de arquivos em diversos locais redundantes.

Se você for com copies=2 , certifique-se de definir isso imediatamente ao criar o pool. Em outras palavras, você quer algo como:

cryptsetup luksFormat /dev/sdx
cryptsetup luksOpen /dev/sdx sdx-crypt
zpool create -O copies=2 tank /dev/mapper/sdx-crypt

e não

cryptsetup luksFormat /dev/sdx
cryptsetup luksOpen /dev/sdx sdx-crypt
zpool create tank /dev/mapper/sdx-crypt
zfs set copies=2 tank

porque o último não replica completamente os metadados do sistema de arquivos raiz até que esses metadados sejam reescritos.

Observe que, como acontece com qualquer sistema de arquivos copy-on-write, o ZFS é melhor quando a utilização do disco é mantida abaixo de 75 a 80%, e você deve esperar a fragmentação ao longo do tempo. Para backups, isso não deve ser uma grande preocupação.

    
por 02.09.2015 / 15:04
0

O Par2 é uma opção de software madura para criar arquivos de paridade. Você pode configurá-lo para permitir e definir a porcentagem de arquivos a serem perdidos, mas ainda recuperáveis. [1] [2] Por exemplo, 30% de redundância:

par2 c -r30 file-to-protect

O LUKS precisa de uma boa configuração para segurança. aes-xts-plain64: sha256 ou um pouco melhor PBKDF2-sha512 com uma chave aleatória de qualidade de 256/512 bits é a recomendação padrão [3]

[1] link

[2] link

[3] link

[4] Quão segura é a criptografia de disco completo padrão do Ubuntu?
link

P.S. O ZFS criptografado projetado pelo SUN para Enterprise Data seria ótimo, mas é apenas no Solaris. O ZFS no Linux só tem suporte para criptografia nativa do ZFS + LUKS. O ZFS Scrub verifica o bitrot e geralmente é configurado diariamente para unidades de classe do consumidor. Você pode até mesmo fazer um espelho de três vias do ZFS para segurança de dados extrema. link

    
por 02.09.2015 / 14:41