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).