意外的空间消耗

意外的空间消耗

我有一个问题。我总是用完磁盘空间。我不知道到底是哪些文件占用了所有的空间。似乎有很多小文件,所以很难用命令找到。每次我找到一些东西来获得一些可用空间(邮件、日志、旧档案和 rpm),一段时间后磁盘又满了。空间是从系统分区 (/) 偷来的。命令du结果:df

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1              4061540   3848404      3492 100% /
/dev/sda3              4061572   2441348   1410576  64% /home
tmpfs                   517636         0    517636   0% /dev/shm
/dev/sdb1             10317828   1894904   7898808  20% /var/lib/mysql

在这种情况下您会建议什么?

如果您还能列举出遇到过度或意外空间消耗的情况,那就太好了。这可能有助于解决问题

操作系统:CentOS 5。

答案1

以下是我的标准“查找占用空间的内容”方案:

  1. du -hx --max-depth=1 /-- 查找占用空间的内容。检查最大的子目录(例如du -hx --max-depth=1 /var),直到找到占用空间的内容。日志(在/var/log)是常见的罪魁祸首(您应该使用 logrotate 处理),yum 喜欢保留的垃圾(重新打包的 RPM)也是如此。如果您能识别出任何重复犯错者,请想办法自动执行您正在进行的任何维护工作,以便反复清理。
  2. lsof -n |grep deleted-- 查找已删除的大文件。确定哪个进程使它们保持打开状态,并终止它或告诉它回收其句柄(如果它们是日志文件,kill -HUP <pid>通常会起到作用)如果可以的话。
  3. 我的第三条攻击路线是调整分区大小或将新分区分配给各种挂载,尽管就你的情况而言,由于你没有使用 LVM,所以这很棘手。考虑进行维护以转变/dev/sdb1为 VG 并从那里进行分配。
  4. 升级。磁盘空间非常便宜,如果你花一个小时的时间查找导致空间消耗的原因,你只是“花费”了购买新硬盘所需的时间,所以购买新硬盘比花太多时间查找问题要好。

答案2

除了womble的答案之外,如果你发现你得到了很多大的日志文件,可以考虑使用日志旋转(大多数发行版都默认安装)以减少日志大小。如果某个日志占用了大部分空间,您还应该检查它是否有重复的错误,并确保生成日志的服务未设置为过高的详细级别。

答案3

如果尚未完成,请将 /var 挂载点移至另一个分区。文件系统 /var 的存在是为了防止根文件系统被填满。

如果 /tmp 还不是单独的分区,则也是一样。

您可能有一个进程删除文件但保持文件打开。直到关闭/进程退出后,空间才会被回收。您可以使用 lsof 命令来找出哪些进程保持哪些文件打开。命令 lsof 可能不在您的标准 Centos 安装中,您可能需要添加包才能获取它。

答案4

例如:卸载 /home,在其中写入 10GB 文件,再重新挂载 /home。空间将被占用,并且df不显示任何内容:挂载点会隐藏该文件夹内的文件。

检查一下:如果曾经发生过安装错误并且有一些文件被放置在那里,就会发生这种情况。

相关内容