rsync(和scp)失败,XFS设备上没有剩余空间

我有一个全新安装的CentOS 7,主要分区为400GB格式的XFS。 目前使用的GB不足一个。 我试图rsync 65GB的文件,复制开始14GB和26GB之间的失败。 (我已经尝试过多次了。)

我有足够的空间:

# 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 

我有很多的inode:

 # 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 

我不知道还有什么要检查,或者为什么一直没有通过。 上面引用的部分来自副本之前。 拷贝之后,inode在47K。

预先感谢您提供的任何帮助。

编辑:使用CentOS 7,而不是CentOS 6.7。 另外,内核版本:

 # uname -r 3.10.0-123.8.1.el7.x86_64 

编辑2:

以下是另一次尝试(22GB / 65GB失败之前完成)的结果:

 # 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 

即使作为根,我无法创build任何新的文件或目录。

编辑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作为一个选项会告诉一切停止quotaing。
  • 安装选项 。 你的mount选项中应该有inode64 ,这是mount-flag来告诉内核使用64位的inode分配。 如果你没有它,当尝试创build新的文件和目录时,内核可能会抛出ENOSPC (空间不足)。 你的分区不够大,因为这是一件事情,但在这一点上,我们没有简单的事情来检查。

在XFS之外还有一件事要检查。

  • 打开File-Handle Ulimit可能是rsync正在运行的内容。 如果是内存,你会看到一个不同的错误。