意外的空间消耗

我有个问题。 我一直用完磁盘空间。 我不知道哪些文件占用了所有的空间。 似乎有一堆小文件,所以用du命令很难find。 每当我find一些摆脱获得一些自由空间(邮件,日志,旧档案和rpms)的东西,一段时间后磁盘又满了。 系统分区(/)空间被盗。 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。

这是我的标准“find吃东西的空间”政权:

  1. du -hx --max-depth=1 / – 看看有什么吃的空间。 检查最大的子目录(比如du -hx --max-depth=1 /var ),直到find一些空间猪。 日志(在/var/log )是常见的罪魁祸首(你应该使用logrotate来处理),就像yum喜欢保留的cruft(重新打包的RPM)一样。 如果你能识别出任何屡犯者,那么可以设法使你正在做的任何维护工作自动化,以便重复清理。
  2. lsof -n |grep deleted – 查找已被删除的大文件。 确定哪个进程将它们打开,并且杀死它或者告诉它回收它的句柄(如果它们是日志文件, kill -HUP <pid>通常会这样做)如果可以的话。
  3. 我的第三行攻击是调整分区大小或者将新的分区分配给不同的坐骑,尽pipe在你的情况下,因为你没有使用LVM,这很棘手。 考虑进行维护将/dev/sdb1转换为VG并从那里分配。
  4. 升级。 磁盘空间非常便宜,如果你花一个小时的时间来查找造成空间消耗的原因,你只需“花费”购买新硬盘所需的时间,所以购买新的驱动器,而不是花太多的时间来search问题。

除了womble的答案 – 如果你发现你得到了很多大的日志文件,可以考虑使用logrotate (在大多数发行版中默认安装)来保持它们的大小。 如果有一个占用大部分空间的特殊日志,则还应该检查它是否存在重复错误,并确保生成日志的服务没有设置得过于冗长。

如果尚未将/ var挂载点移动到另一个分区。 文件系统/ var存在以防止根FS被填满。

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

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

 sudo du --all --one-file-system / | xdu -n 

例如:unmount / home,在那里写入10GB的文件,再次mount / home。 该空间将被消耗,并且df显示任何内容:挂载点隐藏该文件夹内的文件。

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