rdiff-backup 和磁盘空间不足。发生了一些奇怪的事情

gro*_*wse 4 server rdiff-backup nas

我有一个 rdiff-backup 设置,可以通过网络备份大型 sql 转储(1.6GB)。它备份到的服务器(Ubuntu 10.10 服务器)有一个小的本地磁盘(4GB,1GB 可用),但有一个 cifs 挂载到一个大的 nas(有足够的可用空间)。我有一个从用户帐户的主目录到 NAS 的软链接设置cifs mount,并且rdiff-backup从客户端启动的作业正在写入该目录。

最近,这项工作一直失败。日志文件说:

Sun Oct 24 21:20:14 2010 Sending back exception [Errno 28] No space left on device of type type 'exceptions.IOError'

watch df通过在服务器上运行手动运行该作业,我可以看到本地驱动器上的 1GB 可用空间逐渐减少,直到达到零。然后作业失败。需要明确的是,磁盘空间在 NAS 上不是问题。

因此,出于某种原因,rdiff-backup 使用本地磁盘上的某个位置作为临时工作目录,而不是存储备份的实际目录,正如我所期望的那样,在 NAS 设备上。但是,我找不到它正在使用哪个目录,所以我可以用它自己的空间块单独安装它。这样做du -sx/同时,作业运行显示的总文件大小/为3.0GB保持不变,即使df/是满的。

如果我列出rdiff进程打开的文件句柄,我会在 NAS 安装上得到一些套接字和一些文件。本地磁盘上没有什么明显的。

这是怎么回事?为什么df/已满,du -sx却说有1GB空闲?为什么rdiff-backup在应该使用时填满本地磁盘cifs mount?它实际上写的是什么?

Oll*_*lli 8

正如maco在评论中已经提到的那样,/tmp是问题所在。

使用 rdiff-backup,您可以使用参数配置临时目录位置

--tempdir path
          Sets  the  directory  that  rdiff-backup  uses for temporary files
          to the given path. The environment variables TMPDIR, TEMP, and TMP
          can also be used to set the temporary files directory. See the 
          documentation of the Python tempfile module for more information.
Run Code Online (Sandbox Code Playgroud)

如果您将 tempdir 设置为该 CIFS 挂载,问题应该会消失。(我们遇到了同样的问题,并且解决了它,您可能还有其他问题)