弄清楚为什么我的硬盘容量超出了配额

弄清楚为什么我的硬盘容量超出了配额

我不擅长系统管理,所以如果我犯了一些基本错误,请告诉我。

有件事让我很抓狂。在公司,我们有一个大型 NFS 服务器,为公司所有员工提供服务。每个人都有一定数量的 GB 可以写入。我经常收到“超出配额”错误,因为我运行了一些程序,这些程序会生成大量临时文件,然后删除它们,但在删除它们之前它们已经达到了配额。

在与我们的系统管理员交谈后,我了解到我的配额已经增加到远远超出了这些测试所需的范围,但似乎我在主文件夹以外的地方花费了这个配额。系统管理员向我解释说,NFS 服务器中以我的用户名为所有者的每个文件都计入我的配额。

我想得到这些文件的列表,这样我就可以删除很多我不再需要的文件。但他告诉我,唯一的方法是搜索整个公司的整个文件系统,浏览每个人的主文件夹。这是一个耗时的过程。他现在正在做这个搜索。

我觉得很奇怪的是:当 Linux 给我一个“超出配额”错误时,它似乎能够立即知道我超出了配额。这不是一个耗时的过程。那么,为什么我不能不进行长时间的搜索就获得超出配额的文件列表呢?

答案1

我能想到两件可能导致您的配额问题的事情。

首先,您应该知道,配额是通过在文件系统上创建一个小型数据库来实现的,每次创建、修改或删除文件时都会更新该数据库。(实际上有两个数据库,一个用于用户配额,一个用于组配额。)首次启用配额时,该数据库已初始化通过检查文件系统上每个文件的使用情况,并在这些文件中记录每个用户和/或每个组的结果。由于每次有活动时,文件系统驱动程序都会更新它们,因此查找用户当前的配额使用情况非常快。

存在一个问题。如果文件系统没有完全卸载,例如硬关机,配额数据库可能会损坏。发生这种情况时,管理员应该 跑步quotacheck在重新启动系统时验证并重建数据库,但这可能不会发生。或者宇宙射线或硬盘故障可能会损坏它们。

跑步quotacheck但是,需要卸载文件系统,或者至少以只读方式安装,因此在重建配额数据库时无法使用。这可能需要很长时间,因此不幸的是很少能做到。NFS 服务器管理员应安排停机时间来检查文件系统配额,并应考虑更改程序,以便quotacheck在崩溃后重新启动时始终运行该程序。

其次,根据您的描述,您可能已经达到了 inode 配额。除了限制磁盘空间量之外,配额还可以限制可以创建的文件数量。如果您创建了大量的临时文件,那么这可能是正在发生的事情。您(或 NFS 服务器管理员)还应该检查一下。运行quota -s以查看数据库认为您已使用的内容与限制相比的情况。

答案2

除了@MichaelHampton 提到的腐败可能性之外,还有以下一些基本情况:

  • 检查 /tmp 下的内容。有时某些进程很混乱,或者会被中断或终止 - 会话文件、安装程序/解压缩、打印作业等。查找锁定或隐藏的(点)文件。如果发现某些文件,不要直接删除它,而是使用时间戳来确定创建它的原因和时间。

  • 另外,ps -edalf检查您的进程列表及其所有文件参数,看看是否有任何神秘的东西在意外区域创建不需要的大文件。

  • “看来我除了主文件夹外还在其他地方花费了这个配额”那么您大概知道哪个目录占用了哪个空间吗,还是完全不知道?

  • 确定您是否有很多小文件/目录,或一些大文件,或两者兼有。尝试使用du -sh ...或进行快速估算find -size <threshold> ...,以查看是否有新文件创建,touch晚上注销时创建一个哨兵文件,然后第二天find ... -newer SENTINEL查看是否有任何文件创建。您可以将其设置为在半夜运行。

  • 我猜,如果所有其他方法都失败了(这是不可能想象的),一个完全安全的方法是让他们为你临时创建第二个主目录,然后逐渐克隆你的设置,记下你启用了哪些应用程序,然后看看什么时候会出现问题。(你知道,二分搜索分类。)

相关内容