rsync (e scp) falhando sem espaço deixado no dispositivo XFS

4

Eu tenho uma nova instalação do CentOS 7 com uma partição primária de 400GB formatada para o XFS. Menos de um GB está atualmente em uso. Estou tentando rsync 65GB de arquivos e a cópia começa a falhar entre 14GB e 26GB. (Eu tentei várias vezes.)

Eu tenho muito espaço:

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      400G  919M  400G   1% /
devtmpfs        7.3G     0  7.3G   0% /dev
tmpfs           7.2G     0  7.2G   0% /dev/shm
tmpfs           7.2G   41M  7.2G   1% /run
tmpfs           7.2G     0  7.2G   0% /sys/fs/cgroup
/dev/xvdb        37G   49M   35G   1% /mnt

Eu tenho muitos inodes:

# df -ih
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/xvda1       400M   24K  400M    1% /
devtmpfs         1.9M   289  1.9M    1% /dev
tmpfs            1.8M     1  1.8M    1% /dev/shm
tmpfs            1.8M   280  1.8M    1% /run
tmpfs            1.8M    13  1.8M    1% /sys/fs/cgroup
/dev/xvdb        2.4M    11  2.4M    1% /mnt

Eu não sei o que isso significa, mas eu vi isso referenciado em outros lugares, então eu pensei que seria útil para diagnosticar:

# xfs_db -r "-c freesp -s" /dev/xvda1
   from      to extents  blocks    pct
      1       1      82      82   0.00
      2       3      14      30   0.00
      4       7      12      63   0.00
      8      15      13     131   0.00
     16      31      17     369   0.00
     32      63       9     408   0.00
     64     127       8     774   0.00
    128     255       9    1702   0.00
    256     511       4    1605   0.00
    512    1023       6    4267   0.00
   1024    2047       1    1664   0.00
   2048    4095       2    7446   0.01
   8192   16383       2   24221   0.02
  32768   65535       1   33389   0.03
 131072  262143       1  205592   0.20
 262144  524224     200 104345607  99.73
total free extents 381
total free blocks 104627350
average free extent size 274612

Não tenho ideia do que resta para verificar ou porque continua a falhar. As seções citadas acima são de antes da cópia. Após a cópia, os inodes estão em 47K.

Agradeço antecipadamente por qualquer ajuda que você possa fornecer.

Editar: Usando o CentOS 7, não o CentOS 6.7. Além disso, a versão do kernel:

# uname -r
3.10.0-123.8.1.el7.x86_64

Editar 2:

Aqui estão os resultados após outra tentativa (22GB / 65GB concluída antes da falha):

# touch test
touch: cannot touch ‘test’: No space left on device
# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      400G   22G  379G   6% /
devtmpfs        7.3G     0  7.3G   0% /dev
tmpfs           7.2G     0  7.2G   0% /dev/shm
tmpfs           7.2G   41M  7.2G   1% /run
tmpfs           7.2G     0  7.2G   0% /sys/fs/cgroup
/dev/xvdb        37G   49M   35G   1% /mnt
# df -ih
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/xvda1       400M   47K  400M    1% /
devtmpfs         1.9M   289  1.9M    1% /dev
tmpfs            1.8M     1  1.8M    1% /dev/shm
tmpfs            1.8M   280  1.8M    1% /run
tmpfs            1.8M    13  1.8M    1% /sys/fs/cgroup
/dev/xvdb        2.4M    11  2.4M    1% /mnt
# xfs_db -r "-c freesp -s" /dev/xvda1
   from      to extents  blocks    pct
      1       1      60      60   0.00
     64     127       1      81   0.00
    128     255       1     186   0.00
    512    1023       3    2317   0.00
   1024    2047       2    2538   0.00
   2048    4095       1    2310   0.00
   4096    8191       1    8001   0.01
   8192   16383       2   25782   0.03
 262144  524224     189 99059740  99.96
total free extents 260
total free blocks 99101015
average free extent size 381158

Mesmo como root, não consigo criar novos arquivos ou diretórios.

Editar 3: Informações solicitadas adicionais:

# xfs_info /dev/xvda1
meta-data=/dev/xvda1             isize=256    agcount=201, agsize=524224 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=104855999, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
    
por BamaPookie 30.12.2015 / 20:24

1 resposta

3

Dado o que você postou, há apenas mais alguns lugares no XFS que podem causar esse problema. Aqui estão dois:

  • Cotas . Não são exatamente fáceis de ligar acidentalmente, mas é outra área que vale a pena verificar se nada mais produzir resultados. Procure uma uquota mount-option. Se você ainda tiver suspeitas, noquota como opção informará tudo para parar a cota.
  • Montar opções . Você deve ter inode64 em suas opções de montagem, que é o sinalizador de montagem para dizer ao kernel para usar a alocação de inode de 64 bits. Se você não tiver, o kernel pode lançar ENOSPC (falta de espaço) ao tentar criar novos arquivos e diretórios. Sua partição não é grande o suficiente para que isso seja uma coisa, mas estamos fora das coisas fáceis de verificar neste momento.

Existe outra coisa a verificar, fora do XFS.

  • Open File-Handle Ulimit Isso pode ser o que o rsync está executando. Se fosse memória, você estaria vendo um erro diferente.
por 30.12.2015 / 23:12