我新安装了 CentOS 7,主分区为 400GB,格式化为 XFS。目前使用量不到 1 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
即使以 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
答案1
根据您发布的内容,XFS 中只有少数几个地方可能导致此问题。以下是两个:
- 配额。这些并不容易意外打开,但如果没有其他结果,这是另一个值得检查的区域。寻找
uquota
挂载选项。如果您仍然有怀疑,noquota
因为选项会告诉一切停止引用。 - 安装选项。您应该
inode64
在挂载选项中设置,这是挂载标志,用于告诉内核使用 64 位 inode 分配。如果您没有它,内核ENOSPC
在尝试创建新文件和目录时可能会抛出(空间不足)。您的分区不够大,无法解决这个问题,但目前我们没有容易检查的东西。
除了 XFS 之外,还有一件事需要检查。
- 打开文件句柄 Ulimit这可能是 rsync 遇到的问题。如果是内存问题,您会看到不同的错误。