Qualquer sistema de arquivos (incluindo XFS pouco extenso e pouco XFS) pode atender aos requisitos que você listou, que são basicamente a capacidade de armazenar muitos arquivos e desempenho razoável em uma ampla variedade de casos de uso. Meu conhecimento (e os detalhes interessantes nessa resposta) é principalmente sobre o ZFS, então vou me concentrar nisso.
As habilidades adicionais que você obteria do ZFS são:
- Dedup. Como você disse, isso não é super maravilhoso no ZFS porque tem um requisito pesado de RAM, mas funciona. Para obter algo semelhante em não-ZFS, você poderia fazer um hash em seus arquivos e usar os hashes como nomes de arquivos / nomes de diretório, ou manter um banco de dados de hash - > nome do arquivo para que você possa criar links físicos. (Em qualquer um desses casos, você precisa ter exatamente os mesmos arquivos, não apenas as imagens com a mesma aparência).
- compressão. A maioria das imagens já está compactada, o que pode não ser muito valioso, mas, se elas forem RAW em vez de JPEG, isso pode representar uma grande economia. Se não, isso não vai te comprar muito.
- Capacidade de tirar fotos / fazer backup. O ZFS tem ótimas ferramentas internas para isso. Você também pode fazer backup de não-ZFS, embora possa ser difícil obter um instantâneo consistente de seus dados. O LVM pode fazer um pouco disso, embora possivelmente não seja bem assim.
- O gerenciamento de volume faz parte do ZFS. Você pode escolher entre um conjunto de configurações RAID muito flexíveis para obter a configuração ideal de [redundância de dados, uso de espaço, desempenho] para seu aplicativo específico. Você pode obter um pouco disso com o LVM e outro software RAID, mas acredito que o ZFS tenha uma das soluções mais bem projetadas para gerenciamento de volume, combinada com um sistema bem projetado para detecção e recuperação de falhas.
Duas outras coisas que você mencionou:
- Movimentando metadados. Eu não acho que o ZFS seria pior do que outros sistemas de arquivos: ele atualiza uma boa quantidade de metadados durante as gravações, mas copia na gravação e faz essas atualizações em lotes a cada 5-10 segundos, o que significa que grandes gravações contíguas estão acontecendo em vez de pequenas gravações no local que exigem que blocos NAND sejam apagados e reescritos várias vezes. Em um sistema de arquivos tradicional, você terminará de outra maneira porque fará atualizações no local, o que provavelmente é um pouco pior. De qualquer forma, os SSDs modernos têm muitos blocos extras internamente que eles reservam para prolongar a vida útil do disco na presença de desgaste - tempos de vida normais do disco são considerados comparáveis aos tempos de vida do disco. Eu não estou dizendo que isso não importa, eu só acho que você não deveria se fixar muito nesse aspecto, já que é bem menor.
- Escalabilidade do link físico. Deve escalar tão bem ou melhor que os arquivos normais (no ZFS ou não). De qualquer forma, um link físico é apenas um ponteiro para o mesmo inode de outro arquivo, e você provavelmente obterá uma pequena eficiência de cache, pois ler esse arquivo de um dos links fará com que ele seja armazenado em cache por acessos através de outros links. também.