Recentemente, começamos a pesquisar o GlusterFS para uso próprio, então essa pergunta foi interessante para mim. O Gluster usa o que é chamado de 'tradutores' no cliente do FUSE para manipular como você armazena dados. Existem vários tipos de tradutores que são descritos aqui:
O que você está perguntando especificamente é chamado de Automatic Replication Translator ou AFR, e é abordado em detalhes aqui:
Olhando para o código fonte, parece que os dados são realmente gravados em nós simultaneamente, muito melhor que o rsync!
Em relação à recuperação de uma situação de falha, há uma nota interessante que encontrei. O sistema Gluster é diferente do Ceph, pois não está ativamente ciente das mudanças de estado de replicação e precisa ser "acionado". Então, se você perder um nó em seu cluster, terá que procurar cada arquivo para que o Gluster tenha certeza de que foi replicado:
Não consegui encontrar uma boa página descrevendo internamente os mecanismos do cenário de falha, como a forma como o cliente detecta que as coisas estão quebradas. No entanto, ao baixar o código-fonte e procurar no cliente, aparecem vários tempos limites que ele usa para os comandos e um teste que, de vez em quando, faz com outros sistemas no cluster. Parece que a maioria delas tem marcas TODO e não são configuráveis atualmente, exceto através da modificação do código-fonte, o que pode ser uma preocupação para você se o tempo de convergência for crítico.