解决文件系统已满的情况
这篇文章主要是为了处理操作系统文件系统(例如 root、var 和 usr),但它也可以用来解决其他文件系统的故障。
有很多方法可以找到填充文件系统的内容,有时这可能是一个困难的过程。
一个问题是文件系统可能被一个或者几个非常大的文件(通常很容易找到)或者数千个较小的文件(很难找到并查明原因)填满。
首先,我们需要弄清楚哪些文件正在填满文件系统。
列出文件系统中文件大小的一种非常有用的方法是使用 du 命令。
以下示例从根文件系统上的最大到最小列出文件:
$ du -akd / | sort -nr
其中:
-d 防止 du 跨越分区边界。
-a 告诉 du 报告文件大小(没有这个选项 du 只报告每个目录中使用的空间量。
-k 告诉 du 以千字节而不是 512 字节块报告。
在 Solaris 9 或者更高版本上,如果我们更喜欢人类可读的输出,请将 k 替换为 h,即根据报告的数字以千字节、兆字节或者千兆字节为单位的输出。
-nr 此排序选项将文件按相反的数字顺序排列。
当然,这可以用于 root 以外的文件系统,只需在“du”命令中将/替换为所需的路径即可。
命令“du -skd”总结了用于文件系统的千字节数。
如果这与 df -k 命令报告的不同。
首先要看的标准文件系统是:
/tmp
如果 /tmp 已满或者包含大文件,则重新启动将清除此目录。
如我们在 df 命令的输出中所见,默认的 Solaris 安装共享 /tmp 和 swap 的磁盘空间。
/dev
尝试使用不正确的设备名称写入设备时,大文件可能会出现在此处。
例如 /dev/rmt/o(字母“o”)而不是 /dev/rmt/0(磁带驱动器的数字“零”。
如果机器没有连接磁带驱动器并且有人使用像 tar 或者 ufsdump 这样的磁带命令。
这只会在 /dev/rmt/ 中创建一个大文件。
所以一定要检查 /dev 目录中的实际链接,而不是文件。
/
寻找核心文件。
检查 /.wastebasket 和 /lost+found 目录是否有大文件。
检查 root 中的 .CPR 文件,这是由电源暂停/恢复软件放在那里的。
/var
第三方软件包有时会在 /var/sadm/pkg 目录中留下 tar 文件。
如果 /var 已满(并且是一个单独的文件系统)或者 /var 目录是我们确定占用根目录中大部分空间的目录,请检查以下内容。
清除(但不删除;文件应该被截断为零长度)以下文件可能会为我们获得一些空间。
这里要小心,因为你会丢失各种日志信息。
例如,utmp[x] 和 wtmp[x] 文件包含用户访问和记帐信息:
/var/cron/log /var/spool/lp/logs /var/adm/utmp /var/adm/utmpx /var/adm/wtmp /var/adm/wtmpx /var/log/syslog* /var/adm/messages.*
要将文件归零,请使用以下命令。
# cat /dev/null > filename
注意:对于 Solaris 9 或者更高版本,请参阅 logadm 以获取管理日志文件的有用工具。
检查 /var/saf 检查 _log 以及 tcp 和 zsmon 目录。
将有 _log 文件,我们可以使用“cat /dev/null > filename”将它们清零。
如果系统被用作打印机主机,请检查 /var/lp/logs 中的文件,如果它们已被打印或者因系统崩溃或者打印机问题而遗留下来,则可以将其删除。
检查 /var/preserve 。
检查 /var/spool/* 目录。
“lp”或者“mqueue”等子目录用于假脱机。
检查 /var/crash 是否有任何系统内核。
还要检查 /var/tmp 中不需要的文件。
/var/tmp 不会在重新启动时清除。
关于 /var/sadm 目录的注意事项。
该目录包含包和补丁信息,一般不应触及。
也可能是 inode 用完了,并且消息文件系统已满。
# /usr/bin/df -F ufs -o i [directory | special]
文件系统变满的原因有多种。
需要考虑的一件重要事情是在安装期间如何设置文件系统。
需要注意每个文件系统使用了多少空间并提前考虑。
通过前瞻性思维,文件系统不太可能变满,但不会阻止文件系统变满。
这篇文章将展示文件系统可能变满的最常见原因以及如何处理它们。
当文件系统已满时,可能会看到以下错误:
在系统控制台上:
vmunix : file system full WARNING: file system full NOTICE: alloc: file system full no space left on device
在 /var/adm/messages 中:
WARNING: /: filesystem full