Confiabilidade do ZFS / ext4 no ZVOL, usado não para desempenho, mas para compressão transparente, em sistemas com pouca memória?

5

Li muitas declarações controversas sobre o ZFS em sistemas com pouca memória na Internet, mas a maioria dos casos de uso foi para armazenamento de dados de alto desempenho.

Eu quero usar o ZFS não por motivos de desempenho, mas porque ele suporta compactação e desduplicação transparentes (o último pode ser opcional) e ainda parece ser mais maduro do que o BTRFS. Eu não quero usar nenhuma configuração RAID.

Eu quero usá-lo em um laptop, para sistema de arquivos raiz e doméstico, e espaço de armazenamento e segurança de dados (recuperação após perda de energia ou outras inconsistências aleatórias, muito baixo risco de corrupção devido à baixa RAM, etc.) mais importante que o desempenho do disco. Eu quero segurança comparável como ext2 / 3/4 dar.

Eu gostaria de usar o ext4 ontop de um ZVOL.

Então, as perguntas são:

  • O ZFS pode ser configurado para funcionar de forma confiável com "baixa RAM" se o desempenho / armazenamento em cache do IO não for o motivo de preocupação e nenhuma funcionalidade do RAID for desejada?
  • Como a memória RAM necessária muda se eu não usar o ZFS como um sistema de arquivos em si, mas apenas usar ZVOLs onde coloco outro sistema de arquivos ontop?
  • Como a RAM precisava mudar com a desduplicação ativada? Se a desduplicação estiver ativada e a RAM começar a ficar baixa, ela ainda será segura - o ZFS pode simplesmente suspender a desduplicação e usar menos memória RAM?
  • É possível desativar a deduplicação automática, mas executá-la manualmente de vez em quando?
  • O ext4 ontop de um ZVOL pode armazenar meus dados de forma confiável mesmo em situações de pouca RAM, e se inconsistências acontecem, as chances de sucesso para reparos são altas (como no caso do ext2 / 3/4)? O ext4 ontop de um ZVOL aumenta a friabilidade porque acrescenta robustez do ext4, ou os dados são tão robustos quanto o ZVOL subjacente é?

Especificações do sistema:

  • Linux
  • 8 GiB RAM (compartilhada com placa gráfica), mas a maioria (pelo menos 7 GiB) dela deve estar disponível para o software de espaço do usuário,
  • cerca de 700 GB de armazenamento SSD a ser usado para o ZFS,
  • talvez em outro sistema 128 GiB de eMMC para usar no ZFS.
  • Uso atual do disco ( du -sh dos diretórios maiores em / ) (/ é ext4, / var montado ontop é reiserfs) (deseja mover isso para um armazenamento com compressão transparente):

    74M     /etc
    342G    /home
    5.0G    /opt
    1.5G    /root
    261M    /tmp
    35G     /usr
    30G     /var
    

OU, é só usar BTRFS (ler que grave / difícil de recuperar perda de dados pode ocorrer devido a "bugs", mas isso é tudo controverso ...)?

    
por Golar Ramblar 13.04.2017 / 15:03

2 respostas

4

Resposta curta:

  • Sim, é possível usar pouca RAM (~ 1 GB) com o ZFS com êxito.
  • Você não deve usar a dedução, mas o RAID e a compactação geralmente são aceitáveis.
  • Quando a duplicação estiver ativada, ela funcionará para todos os dados recém-gravados e você não poderá se livrar dela com facilidade.
  • Você não pode ativar a dedução retroativa, porque ela funciona apenas com dados on-line.
  • Sua ideia é desnecessariamente complexa sem um bom motivo, então eu recomendaria apenas usar o ZFS e chamá-lo por um dia.

Resposta longa:

Can ZFS be configured to work reliably with "low RAM" if IO performance/ caching is not of concern, and no RAID funtionality is wanted?

Sim, mesmo com recursos RAID habilitados. Você precisa de muito menos do que as pessoas afirmam na rede, por exemplo, olhe para esse cara que executa um servidor de arquivos veloz com o FreeBSD, 2 núcleos e 768 MB virtualizado. Ou dê uma olhada no Guia do SolarisInternals (atualmente disponível somente através do archive.org), onde 512 MB são mencionados como mínimo, 1 GB como recomendação mínima e 2 GB como uma recomendação completa.

Eu ficaria longe de dedup, no entanto. Não porque é lento por causa da memória de paginação, mas porque você não pode voltar para a não-dedup se o seu sistema for interrompido. Além disso, é um comércio entre RAM e discos, e em um sistema de orçamento você não tem nenhum, então você não vai ganhar muito.

How does the RAM needed change if I do not use ZFS as a filesystem itself, but just use ZVOLs where I put another filesystem ontop?

Você precisaria de memória adicional para o segundo sistema de arquivos e para a camada acima do ZFS, dependendo de como você planeja acessá-lo (virtualização como KVM, FUSE, iSCSI, etc.)

How does RAM needed change with deduplication turned on? If deduplication is turned on and RAM starts to get low, is it still safe -- can ZFS just suspend deduplication and use less RAM?

Você não pode suspender a deduplicação, mas seus dados ainda são seguros. Haverá muita troca de memória e espera, por isso pode não ser muito útil. A desduplicação está on-line, portanto, para desativá-la, você precisa desativar a dedução e gravar todos os dados novamente (o que é essencialmente copiar todos os dados para um novo sistema de arquivos e destruir o antigo).

Is it possible to deactivate automatic deduplication, but run it from time to time manually?

Não, porque não afeta os dados em repouso. Se você tiver deduzido e quiser gravar um bloco, o ZFS verificará se ele está presente na tabela de desduplicação. Se sim, a gravação será descartada e uma referência será incluída na tabela de dedução. Se não, está escrito e a primeira referência é adicionada. Isso significa que seus dados antigos não são afetados pela dedução, e ativá-los sem escrever nenhum bloco novo não faz nada reagindo ao tamanho usado dos dados antigos.

Can ext4 ontop of a ZVOL reliably store my data even on low RAM situations, and if inconsistencies happen, success chances for repairs are high (as it is with ext2/3/4)? Does ext4 ontop of a ZVOL increase rubustness because it adds ext4's robustness, or is data as robust as the underlying ZVOL is?

Aos meus olhos, isso é uma complexidade desnecessária, já que você não obteria novos recursos (como no caso inverso com ext4 abaixo e ZFS no topo, ex. snapshots) e adicionalmente obteria novas responsabilidades como fsck e mais fdisk de exercícios de formatação.

O único caso de uso em que eu faria algo assim é ter um aplicativo especial que exige recursos de baixo nível de um sistema de arquivos específico ou ter suposições codificadas (felizmente, esse comportamento parece ter morrido nos últimos tempos).

    
por 13.04.2017 / 17:31
1

user121391 fez um ótimo trabalho em dar-lhe boas informações, então eu só vou tocar em suas preocupações de memória.

Até onde a memória chega, sim, o ZFS pode ser um "hog" de memória. Ele fará uso da memória do sistema livre para armazenamento em cache. Com o passar dos anos, a Sun, agora com a Oracle, aprimorou o desempenho, a confiabilidade e o aprimoramento do uso da memória. Você pode verificar o site de guia de ajuste interno / mal do ZFS ou o blog do ZFS para obter detalhes. No entanto, a maioria desses ajustes e recursos só pode ser encontrada na versão Solaris 11.x do ZFS.

Se você estiver realmente preocupado com a memória, não desejará usar a dedução, pois ela exige uma boa quantidade de memória, já que as inscrições estão ativas e precisam manter a tabela de exclusão na memória.

    
por 14.04.2017 / 19:16