Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2617821
  • 博文数量: 323
  • 博客积分: 10211
  • 博客等级: 上将
  • 技术积分: 4934
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-27 14:56
文章分类

全部博文(323)

文章存档

2012年(5)

2011年(3)

2010年(6)

2009年(140)

2008年(169)

分类: 系统运维

2008-12-10 15:46:06

内容提要:
本文档将介绍在操作系统的使用过程中,管理员需要监测哪些文件从而避免过度的空间使用;以及当文件系统出现预期之外的空间消耗时,如何来查找原因。本文档适用于AIX 版本4 和5 。

根 ( / ) 文件系统满了的情况
/var 文件系统满了的情况
其它文件系统及常用检查技巧

说明 :
--------------------------------------------------------------------------------
根 (/) 文件系统满了的情况

检查文件/etc/security/failedlogin

使用下面的命令可以读出failedlogin 文件的内容:

who /etc/security/failedlogin

除了login 失败,TTY 衍生成过快也会造成‘failedlogin ’记录的产生。在查看该文件并且保存过输出结果后,就可以执行下面的命令清空该文件:

cp /dev/null /etc/security/failedlogin

检查目录/dev

如果一个设备的设备名被输错了,例如把rmt0 写成rmto ,在/dev 下将会生成一个文件rmto 。在通常情况下,访问它的命令会一直进行下去直到根文件系统被填满后才失败,因为/dev 也是根(/) 文件系统的一部分。所以要找到那些不代表真实设备的设备文件(它们没有主设备号或辅设备号),执行下列命令:

cd /dev
ls -l |pg

对于一个设备文件来说,在一般文件显示文件大小的那个区域,我们通常会看到由逗号隔开的两个数字,例如:

crw-rw-rw- 1 root system 12,0 Oct 25 10:19 rmt0

如果ls 的输出像下面这样,那么这个文件就应该被删除。

crw-rw-rw- 1 root system 9375473 Oct 25 10:19 rmto

注意 :
1. 不要删除/dev 目录下正确的设备文件,错误的设备文件有一个特点,就是它们的大小一般都大于500 字节。
2. 如果运行了审计系统,/audit 目录(默认)可能很快被充满,也要引起注意。

查找大文件

我们可以用find 命令来查找大文件。例如,要想列出根(/) 目录下所有大于1MB 的文件,可执行下面的命令:

find / -xdev -size +2048 -ls |sort -r +6

这条命令将找出所有超过1MB 的文件并按从大到小的顺序排列,最大的在最前面。

注意 :
在检查根目录时,/dev 目录下的一些设备文件(它们没有文件大小而代之以主辅设备号)将会和真实的文件混杂在一起,它们可以被忽略掉。

find 命令还有其它有用的参数,例如 -newer ,详细用法我们会在后面介绍。

注意 :
在删除文件前,使用者应该检查该文件当前是否被一些活动的用户进程所使用,命令如下:

fuser

如果一个文件在打开的的情况下被删除,那它将仅仅是在目录列表中被删除,在打开该文件的进程被杀掉前,分配给该文件的存贮块将不会被释放。

--------------------------------------------------------------------------------

/var 文件系统满了的情况

查找/var/tmp 目录,清除不再使用的临时文件。

系统使用文件/var/adm/wtmp 来记录所有的login, 远程login, 以及telnet 会话的连接情况。如果不加以监控的话,该文件就有可能持续增长,除非运行了记帐系统(system accounting) ,它会每晚清空wtmp 文件。/var/adm/wtmp 文件可以被清空,也可以被编辑以删除那些无用的历史信息。

清空/var/adm/wtmp , 可执行命令:

cp /dev/null /var/adm/wtmp

编辑wtmp 文件并删除没用的记录,先执行命令:

/usr/sbin/acct/fwtmp < /var/adm/wtmp >/tmp/out

编辑/tmp/out 文件,删除那些没用的信息,然后将修改过的信息重新导入回wtmp 文件,执行:

/usr/sbin/acct/fwtmp -ic < /tmp/out > /var/adm/wtmp

检查/var/adm/ras 目录

清除错误日志。
/var/adm/ras 目录中包含系统错误日志errlog 。该日志文件会一直存在除非手动地去清除它。不要用“cp /dev/null ”命令来把它清零,否则系统错误日志功能将会被禁用。如果errlog 文件的长度为0 ,我们必须从系统备份磁带中恢复文件来覆盖它。

详细清除步骤如下:
首先,停止错误日志守护进程:

/usr/lib/errstop

第二,删除错误日志文件/var/adm/ras/errlog ,或将其移到其它的文件系统中。

注意 :如果删除了errlog 文件,所有历史报错记录将被删除。

第三,重起错误日志守护进程:

/usr/lib/errdemon

此外,我们还可以使用系统定时执行作业(cron) 来定时清理errlog :

0 11 * * * /usr/bin/errclear -d S,O 30
0 12 * * * /usr/bin/errclear -d H 90

检查/var/adm/ras 下是否有非常大的trcfile 文件,如果有并且当前没有启用trace ,可以将其删除掉:

rm /var/adm/ras/trcfile

另外,当dump 设备被设成hd6 (系统默认是hd6 )的时候,/var/adm/ras 下常常会有系统dump 文件vmcore* 存在,如果这些文件是旧的,或者你不想再继续保留,也可以用rm 命令删掉它们。

检查/var/spool 目录

在/var/spool 目录中包含有队列子系统(queueing subsystem) 的文件,可根据情况来清除这些文件:

stopsrc -s qdaemon
rm /var/spool/lpd/qdir/*
rm /var/spool/lpd/stat/*
rm /var/spool/qdaemon/*
startsrc -s qdaemon

检查/var/adm/acct 目录

/var/adm/acct 目录中包含有记帐系统的记录,所以如果运行了记帐系统,该目录下常会存在一些大文件。如何管理这些文件可以参照系统管理手册14 章的内容。(System Management Guide, Chapter 14, SC23-2457-01)

检查/var/preserve 目录

/var/preserve 目录会包含有异常终止的vi 会话。通常来说删除它们是安全的,除非用户想要恢复这其中的某些会话。用户可以用命令 vi -r 来列出所有可恢复的会话,想恢复某一个指定会话,要用命令 vi -r

修改/var/adm/sulog 文件

sulog 文件会记录 su 命令被使用的次数以及它们是否成功。这是个文本文件,可以使用文本编辑器来查看或修改。如果删除sulog ,下次使用 su 命令的时候,系统会重新生成一个。

修改/var/tmp/snmpd.log 文件

snmpd.log 被snmpd 守护进程用作日志文件,记录相关事件。如果把它删除掉,snmpd 守护进程将会重新生成它。

注意:
我们可以限定snmpd.log 的大小以避免它不断地增长。编辑文件/etc/snmpd.conf ,在文件大小的设定段中填入想要的数值(单位是字节)即可。

注意:
我们同样可以用 fin d 命令来查找/var 目录下的大文件:

find /var -xdev -size +2048 -ls| sort -r +6

注意:
AIX 提供了一个系统通用清理脚本skulker ,它被放在/usr/sbin 目录下。在使用它之前,请仔细阅读该脚本的使用帮助,确定要删除哪些文件,以及在删除它们前,这些文件的保留期限。
skulker 可以被设为系统定时执行的cron 作业,只要在crontab 中加入相应的记录即可:

0 3 * * * /usr/sbin/skulker

-------------------------------------------------------------------------------

其它文件系统及常用检查技巧

我们已经知道find 命令带-size 参数可以用来查找大文件。除此之外,如果文件系统是刚刚被填满的,我们还可以用-newer 参数来查找最近更改过的文件。下面我们通过一个例子来说明-newer 的用法:

我们要查找/tmp/findnewer 下所有在3 月28 日12:00 后改动过的文件。首先生成一个基准文件,将它的时间戳设为3 月28 日12:00 。命令格式为:

touch mmddhhmm filename

在这里,时间戳从左至右依次代表:
mm 月
dd 日
hh 小时 ( 按24 小时格式)
mm 分钟

本例中,命令为 #touch 03281200 test

然后执行下面的命令来查找此后改动过的文件:

# find /tmp/findnewer -xdev -newer test -ls
2055 4 drwxr-xr-x 2 root system 512 Mar 30 11:09 /tmp/findnewer
2056 0 -rw-r--r-- 1 root system 0 Mar 29 10:30 /tmp/findnewer/123
2057 0 -rw-r--r-- 1 root system 0 Mar 30 2004 /tmp/findnewer/456
2059 0 -rw-r--r-- 1 root system 0 Mar 28 12:01 /tmp/findnewer/testa

/tmp/findnewer 中的所有文件如下:
# ls -al /tmp/findnewer
total 16
drwxr-xr-x 2 root system 512 Mar 30 11:09 .
drwxrwxrwt 8 bin bin 2048 Mar 30 11:04 ..
-rw-r--r-- 1 root system 0 Mar 29 10:30 123
-rw-r--r-- 1 root system 0 Mar 30 2004 456
-rw-r--r-- 1 root system 0 Mar 28 11:30 789
-rw-r--r-- 1 root system 0 Mar 28 12:00 test
-rw-r--r-- 1 root system 0 Mar 28 12:01 testa
-rw-r--r-- 1 root system 0 Mar 28 11:59 testb
-rw-r--r-- 1 root system 0 Mar 25 12:00 testc

find 命令另一个有用的参数是-mtime ,我们可以用它来查找过去24 小时内更改过的文件。
例如:

find / -xdev -mtime 1 -ls (aix4.3,5.1 系统)
find / -xdev -mtime 0 -ls (aix5.2 系统)
阅读(2562) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~