Resultados muito diferentes do df após alguns segundos

2

Quando o backup move os arquivos de um servidor para o outro, os resultados do df mudam a cada poucos segundos de uma maneira impossível. O host de origem está executando o rsync. No host de destino, estou executando o seguinte comando a cada poucos segundos:

  echo 'date' 'df|grep md0'

Os resultados estão abaixo:

Sat Jun 29 23:57:12 CEST 2013 /dev/md0 4326425568 579316100  3527339636 15% /MD0
Sat Jun 29 23:57:14 CEST 2013 /dev/md0 4326425568 852513700  3254142036 21% /MD0
Sat Jun 29 23:57:15 CEST 2013 /dev/md0 4326425568 969970340  3136685396 24% /MD0
Sat Jun 29 23:57:17 CEST 2013 /dev/md0 4326425568 1255222180 2851433556 31% /MD0
Sat Jun 29 23:57:20 CEST 2013 /dev/md0 4326425568 1276006720 2830649016 32% /MD0
Sat Jun 29 23:57:24 CEST 2013 /dev/md0 4326425568 1355440016 2751215720 34% /MD0
Sat Jun 29 23:57:26 CEST 2013 /dev/md0 4326425568 1425090960 2681564776 35% /MD0
Sat Jun 29 23:57:27 CEST 2013 /dev/md0 4326425568 1474601872 2632053864 36% /MD0
Sat Jun 29 23:57:28 CEST 2013 /dev/md0 4326425568 1493627384 2613028352 37% /MD0
Sat Jun 29 23:57:32 CEST 2013 /dev/md0 4326425568 615934400  3490721336 15% /MD0
Sat Jun 29 23:57:33 CEST 2013 /dev/md0 4326425568 636071360  3470584376 16% /MD0

Como você pode ver, começo do uso de 15% e depois de 15 segundos estou em 37% (não preciso mencionar que o backup não pode copiar essa quantidade enorme de dados em tão pouco tempo). Após ~ 20 segundos, o ciclo fecha. Eu sou novamente aproximadamente o mesmo uso que anteriormente. O valor é razoável, ca. 35 Mb foram copiados.

Alguém pode me explicar o que está acontecendo? O df faz apenas uma estimativa de uso em vez do valor usado?

    
por tatus2 30.06.2013 / 00:08

1 resposta

3

Porque rsync copia para arquivos temporários e substitui o arquivo antigo. Além disso, o rsync só transfere os diffs, não o arquivo inteiro.

Portanto, se você tiver um arquivo 20G do qual 10M foi alterado, o rsync primeiro duplicará o arquivo 20G no sistema de destino em um diretório temporário, em seguida, transferirá o diff de 10M e aplicará à cópia. Finalmente, ele substitui o arquivo antigo pelo novo.

Isso evita a corrupção do arquivo no caso de uma transferência parcial falhar.

Para evitar a criação de arquivos temporários e a atualização de arquivos, use o sinalizador --inplace .

    
por 30.06.2013 / 10:57

Tags