linux – “设备上没有剩余空间”还有其他原因吗?

我在Ubuntu服务器系统上使用Dirvish将hd备份到外部USB 3.0驱动器.直到几天前,一切正常,但现在每个备份都失败,“设备上没有剩余空间(28)”和“文件系统已满”.不幸的是,它并不那么简单:有>设备上免费500 GB.

细节:

rsync_error:

rsync: write "/mnt/backupsys/shd/gesichert1/20130223_213242/tree/<SomeFilename1>.eDJiD9": No space left on device (28)
rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Broken pipe (32)
rsync: write "/mnt/backupsys/shd/gesichert1/20130223_213242/tree/<SomeFilename2>.RHuUAJ": No space left on device (28)
rsync: write "/mnt/backupsys/shd/gesichert1/20130223_213242/tree/<SomeFilename3>.9tVK8Z": No space left on device (28)
rsync: write "/mnt/backupsys/shd/gesichert1/20130223_213242/tree/<SomeFilename4>.t3ARSV": No space left on device (28)
[... some more files ...]
rsync: connection unexpectedly closed (2712185 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]

日志看起来像往常一样直到它命中:

<SomeFilename1>
<SomeFilename2>
<SomeFilename3>
<SomeFilename4>
<PartOfAFilename>filesystem full
write error,filesystem probably full
broken pipe
RESULTS: warnings = 0,errors = 1

但是,如上所述,设备上有很多空间:

df -h
/dev/sdg1       2.7T  2.0T  623G  77% /mnt/backupsys/shd

并且还有很多inode:

df -i
/dev/sdg1      183148544 2810146 180338398    2% /mnt/backupsys/shd

该设备安装为rw:

mount
/dev/sdg1 on /mnt/backupsys/shd type ext3 (rw)

该进程以root身份运行.

我正要说我没有改变任何东西,但那不是真的:
我已经为我备份的驱动器启用了acl:

/dev/md0 on /mnt/md0 type ext4 (rw,acl)

这可能是问题吗?如果有,怎么样? root仍然可以完全访问这些文件.

编辑:

我刚检查了临时目录:

> / tmp只包含一个空的.webmin文件夹
> / var / tmp为空

这些目录所在的文件系统有足够的可用空间和inode:

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       289G   55G  220G  20% /

df -i
Filesystem        Inodes   IUsed     IFree IUse% Mounted on
/dev/sda1       19202048  167644  19034404    1% /

EDIT2:

目录非常大,但不是> 2 GB.备份失败的那个甚至不是最大的一个,它包含7530个文件.

EDIT3:

发布此问题时我不认为有关的一条信息:

在备份开始失败的前一天,我已经在备份的文件系统上激活了acls.我现在假设这触发了Dirvish(或rsync)认为所有文件都已更改,因此要复制而不是硬链接的文件列表非常大.这可能意味着某些缓冲区太小.

今天,对空磁盘的完全备份工作完美无瑕.我接下来会尝试增量备份.这将显示激活acls是否是导致问题的原因.

解决方法

我的怀疑(参见EDIT3)显然是正确的:为文件系统添加acl支持使rsync / dirvish认为所有文件都已更改.因此,它不是进行增量备份而只是创建到现有文件的硬链接,而是尝试创建完整备份,当然因为硬盘没有足够的空间而失败.

所以错误信息实际上是正确的.

再次使用空备份磁盘启动后,增量备份将像以前一样工作.

相关文章

查找全部容器的日志文件 $ sudo find /var/lib/docker/conta...
Linux日志文件中列属性的详细解析
在Linux系统中没有duf命令,如何有效地管理磁盘空间?
深入探讨EncryptPad在Linux操作系统中的功能和优势
原理和应用场景:Linux中ttyload工具的工作原理和实际用途
深度解析SELinux的三种策略类型