Como espelhar sistemas de arquivos com milhões de hardlinks?

11

Temos um grande problema no momento: precisamos espelhar um sistema de arquivos para um de nossos clientes. Isso é comum, não é realmente um problema, mas aqui está:

Neste sistema de arquivos, há uma pasta com milhões de hardlinks (sim! MILHÕES!). rsync requer mais de 4 dias para criar a lista de arquivos.

Usamos as seguintes opções rsync :

rsync -Havz --progress serverA:/data/cms /data/

Alguém tem uma idéia de como acelerar este rsync ou usar alternativas? Não foi possível usar dd porque o disco de destino é menor que a origem.

ATUALIZAÇÃO: Como o sistema de arquivos original é ext3 , tentaremos dump e restore . Vou manter você up2date

    
por Thomas Berger 28.06.2011 / 10:10

3 respostas

3

Nós usamos ext * dump agora. Funciona bem, e o lado da restauração nem precisa ser ext *.

Fizemos um backup off-line, desmontando o dispositivo e usando dump vf - /dev/vg0/opt | gzip -c > /mnt/backup/ext3dump.gz .

Aqui as últimas linhas que você pode ver tamanho, hora, velocidade e os últimos números de inode:

DUMP: dumping regular inode 47169535
DUMP: dumping regular inode 47169536
DUMP: Volume 1 completed at: Wed Jun 29 05:42:57 2011
DUMP: Volume 1 54393520 blocks (53118.67MB)
DUMP: Volume 1 took 4:16:43
DUMP: Volume 1 transfer rate: 3531 kB/s
DUMP: 54393520 blocks (53118.67MB)
DUMP: finished in 15403 seconds, throughput 3531 kBytes/sec
DUMP: Date of this level  dump: Wed Jun 29 01:24:29 2011
DUMP: Date this dump completed:  Wed Jun 29 05:42:57 2011
DUMP: Average transfer rate: 3531 kB/s
DUMP: DUMP IS DONE
    
por 29.06.2011 / 06:25
2

Você precisa atualizar ambos os lados para o rsync 3. No changelog:

- A new incremental-recursion algorithm is now used when rsync is talking
  to another 3.x version.  This starts the transfer going more quickly
  (before all the files have been found), and requires much less memory.
  See the --recursive option in the manpage for some restrictions.

Já faz mais de 2 anos desde que o rsync 3.0.0 foi lançado, mas, infelizmente, a maioria das distribuições corporativas é baseada em código mais antigo que isso, o que significa que você provavelmente está usando o rsync 2.6.

Para referência (se mais alguém estiver com este problema), se você já estiver executando o rsync 3, então você está usando opções que são incompatíveis com a recursão incremental. Na página do manual:

    Some options require rsync to know the full file list, so  these
    options  disable the incremental recursion mode.  These include:
    --delete-before,   --delete-after,    --prune-empty-dirs,    and
    --delay-updates.

Além disso, novamente, ambos os lados devem estar executando o rsync 3 para que a recursão incremental seja suportada.

    
por 01.07.2011 / 17:10
0

Você pode usar o LVM e tirar instantâneos do volume, depois rsync o instantâneo como backup.

Como alternativa, você pode combinar isso com a outra resposta e usar dump no volume da captura instantânea para evitar a necessidade de colocar o volume original off-line.

    
por 28.06.2011 / 16:29