Estou inclinado a sugerir replicação que é independente de dados, como drbd. O grande número de arquivos fará com que qualquer coisa que esteja sendo executada em um nível mais alto do que o "armazenamento em bloco" gaste uma quantidade excessiva de tempo andando na árvore - como você descobriu usando o rsync ou criando relógios inotify.
A versão curta da minha história pessoal confirma isso: eu não usei o Ceph, mas tenho certeza de que esse não é o principal objetivo de mercado com base na semelhança com o Gluster. No entanto, tenho tentado implementar esse tipo de solução com a Gluster nos últimos anos. Ele está em funcionamento na maior parte do tempo, apesar de várias atualizações importantes de versão, mas não tive problemas com o fim. Se seu objetivo é mais redundância do que desempenho, o Gluster pode não ser uma boa solução. Especialmente se o seu padrão de uso tiver muitas chamadas stat (), o Gluster não se sairá muito bem com a replicação. Isso ocorre porque as chamadas de estatísticas para volumes replicados vão para todos os nós replicados (na verdade, "tijolos", mas você provavelmente terá apenas um tijolo por host). Se você possui uma réplica bidirecional, por exemplo, cada stat () de um cliente aguarda uma resposta de ambos os tijolos para garantir que esteja usando os dados atuais. Você também terá a sobrecarga do FUSE e a falta de armazenamento em cache se estiver usando o sistema de arquivos gluster nativo para redundância (em vez de usar o Gluster como back-end com o NFS como protocolo e o montador automático para redundância, o que ainda é uma merda pelo motivo stat ()) . O Gluster se sai muito bem com arquivos grandes, nos quais você pode espalhar dados por vários servidores; a distribuição e distribuição de dados funciona bem, pois é para isso que serve. E a replicação mais recente do tipo RAID10 tem um desempenho melhor que os volumes replicados retos mais antigos. Mas, com base no que eu acho que é o seu modelo de uso, eu desaconselho. Você também terá a sobrecarga do FUSE e a falta de armazenamento em cache se estiver usando o sistema de arquivos gluster nativo para redundância (em vez de usar o Gluster como back-end com o NFS como protocolo e o montador automático para redundância, o que ainda é uma merda pelo motivo stat ()) . O Gluster se sai muito bem com arquivos grandes, nos quais você pode espalhar dados por vários servidores; a distribuição e distribuição de dados funciona bem, pois é para isso que serve. E a replicação mais recente do tipo RAID10 tem um desempenho melhor que os volumes replicados retos mais antigos. Mas, com base no que eu acho que é o seu modelo de uso, eu desaconselho. Você também terá a sobrecarga do FUSE e a falta de armazenamento em cache se estiver usando o sistema de arquivos gluster nativo para redundância (em vez de usar o Gluster como back-end com o NFS como protocolo e o montador automático para redundância, o que ainda é uma merda pelo motivo stat ()) . O Gluster se sai muito bem com arquivos grandes, nos quais você pode espalhar dados por vários servidores; a distribuição e distribuição de dados funciona bem, pois é para isso que serve. E a replicação mais recente do tipo RAID10 tem um desempenho melhor que os volumes replicados retos mais antigos. Mas, com base no que eu acho que é o seu modelo de uso, eu desaconselho. o que ainda é péssimo pelo motivo stat ()). O Gluster se sai muito bem com arquivos grandes, nos quais você pode espalhar dados por vários servidores; a distribuição e distribuição de dados funciona bem, pois é para isso que serve. E a replicação mais recente do tipo RAID10 tem um desempenho melhor que os volumes replicados retos mais antigos. Mas, com base no que eu acho que é o seu modelo de uso, eu desaconselho. o que ainda é péssimo pelo motivo stat ()). O Gluster se sai muito bem com arquivos grandes, nos quais você pode espalhar dados por vários servidores; a distribuição e distribuição de dados funciona bem, pois é para isso que serve. E a replicação mais recente do tipo RAID10 tem um desempenho melhor que os volumes replicados diretos mais antigos. Mas, com base no que eu acho que é o seu modelo de uso, eu desaconselho.
Lembre-se de que você provavelmente precisará encontrar uma maneira de realizar eleições-mestre entre as máquinas ou implementar o bloqueio distribuído. As soluções de dispositivos de bloco compartilhado requerem um sistema de arquivos com reconhecimento de vários mestres (como GFS) ou requer que apenas um nó monte a leitura / gravação do sistema de arquivos. Os sistemas de arquivos em geral não gostam quando os dados são alterados no nível do dispositivo de bloco abaixo deles. Isso significa que seus clientes precisarão saber qual é o mestre e direcionar solicitações de gravação lá. Isso pode se tornar um grande incômodo. Se o GFS e toda a sua infraestrutura de suporte for uma opção, o drbd no modo multimestre (eles chamam de "dual primário") pode funcionar bem. https://www.drbd.org/en/doc/users-guide-83/s-dual-primary-mode para obter mais informações sobre isso.
Independentemente da direção que você seguir, você poderá descobrir que isso ainda é uma dor bastante grande para fazer em tempo real, sem apenas dar a uma empresa de SAN um caminhão cheio de dinheiro.