Existe uma maneira de replicar um compartilhamento de arquivos muito grande em tempo real?

2

Eu tenho um trabalho cron por hora que copia cerca de 40 GB de dados de uma pasta de origem para uma nova pasta com a hora anexada no final.

Quando terminar, o trabalho remove qualquer coisa com mais de 24 horas. Esses dados mudam com muita frequência durante o horário de trabalho e estão em um compartilhamento de arquivos do samba. Veja como a estrutura de pastas parece:

\ server \ Version.1
\ server \ Version.2
\ server \ Version.3
...
\ server \ Version.24

O conteúdo de cada nova pasta comparado ao último normalmente não muda muito, já que este é um trabalho por hora.

Agora você pode estar pensando que sou um idiota por ter sonhado com isso. A verdade é que acabei de descobrir. Na verdade, ele é usado há anos e é incrivelmente simples, qualquer um pode excluir o compartilhamento de 40 GB (imagine que o diálogo esteja em spool ... excluindo milhares e milhares de arquivos) e seria mais rápido restaurá-lo movendo a cópia mais recente de volta para a fonte do que demorou para apagar.

Brilhante!

Agora, para superar isso, preciso replicar eficientemente esses 960 GB de dados "quase semelhantes" em um servidor remoto por meio do link WAN, com a replicação o mais próxima possível do tempo real - pense em hot spare, recuperação de desastre , etc.

Meu primeiro pensamento foi o rsync.

Falha total.

O Rsync vê uma exclusão da pasta com 24 horas e a adição de uma nova pasta com 30 GB de dados para sincronizar! Eu também olhei para rdiff-backup e unison, ambos parecem usar algoritmos similares e não mantêm meta-dados suficientes para fazer isso de forma inteligente.

A melhor coisa que eu posso encontrar "fora da caixa" para fazer isso é o Windows Server "Distributed Filesystem Replication", que usa "Remote Differential Compression" - Depois de ler as informações básicas sobre como isso funciona, parece exatamente o que eu preciso.

Problema: os dois servidores estão executando o Linux. D'oh! Uma abordagem para isso que estou olhando é isso, digamos que são 5 da manhã e a tarefa do cron termina:

  1. A nova pasta do Version.5 chega no servidor local
  2. SSH para o servidor remoto e copie a versão 4 para a versão.5
  3. Execute o rsync no servidor local empurrando as alterações para o servidor remoto. O Rsync finalmente sabe fazer uma cópia diferencial entre a Versão 4 e a Versão.5

Existe uma maneira mais inteligente de replicar os compartilhamentos do Samba o mais próximo possível do tempo real?

Qualquer coisa que faça "Compressão Diferencial Remota" no Linux?

    
por fsckin 03.05.2010 / 08:53

1 resposta

2

Você deve considerar seriamente o DRBD . O DRBD é um software RAID1 sobre TCP-IP. Ele irá replicar um dispositivo de bloco sobre qualquer link em tempo real. Toda vez que você modificar um bloco HD, ele será replicado.

É independente de FS, portanto, você pode colocar qualquer FS desejado em cima dele. Ele também funcionará lado a lado com pulsação que permitirá que você inicie o hot spare assim que o nó original morrer.

    
por 03.05.2010 / 10:30