Назад | Перейти на главную страницу

Ошибка rsync (и scp), на устройстве XFS не осталось места

У меня свежая установка CentOS 7 с основным разделом 400 ГБ, отформатированным для XFS. В настоящее время используется менее одного ГБ. Я пытаюсь выполнить rsync 65 ГБ файлов, и копия начинает давать сбой между 14 ГБ и 26 ГБ. (Я пробовал несколько раз.)

У меня много места:

# 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

У меня много 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

Я не знаю, что это значит, но я видел ссылки на это в других местах, поэтому я подумал, что это будет полезно при диагностике:

# 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

Я понятия не имею, что еще нужно проверить, или почему он продолжает давать сбои. Приведенные выше разделы относятся к предшествующей копии. После копии индексные дескрипторы имеют размер 47 КБ.

Заранее благодарим вас за любую помощь, которую вы можете оказать.

Изменить: использование CentOS 7, а не CentOS 6.7. Также версия ядра:

# uname -r
3.10.0-123.8.1.el7.x86_64

Изменить 2:

Вот результаты после еще одной попытки (22 ГБ / 65 ГБ выполнено до сбоя):

# 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

Даже будучи пользователем root, я не могу создавать новые файлы или каталоги.

Изменить 3: Дополнительная запрошенная информация:

# 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

Учитывая то, что вы опубликовали, в XFS есть еще несколько мест, которые могут вызвать эту проблему. Вот два:

  • Квоты. Их не так просто случайно включить, но это еще одна область, которую стоит проверить, не дает ли ничего больше результатов. Ищите uquota опция крепления. Если подозрения остались, noquota как вариант все расскажу по квотированию прекратить.
  • Варианты крепления. У вас должно быть inode64 в ваших параметрах монтирования, который является флагом монтирования, указывающим ядру использовать 64-битное выделение inode. Если его нет, ядро ​​может выбросить ENOSPC (недостаточно места) при попытке создать новые файлы и каталоги. Ваш раздел недостаточно велик для того, чтобы это могло быть, но сейчас у нас нет простых вещей, которые можно проверить.

Есть еще одна вещь, которую нужно проверить, помимо XFS.

  • Открытый указатель на файл Ulimit это мощь быть тем, с чем сталкивается rsync. Если бы это была память, вы бы увидели другую ошибку.