![[ 永远的UNIX::UNIX技术资料的宝库 ]](/images/title.gif)
|
| 首页 > 系统管理 > HP-UX > 正文 |
 |
| HP-UX10.XX 磁盘空间的管理 |
| 本文出自: http://www.hp.com.cn (2001-05-29 13:04:00) |
+---------------------------------------------------+ | 10.X 文件系统已满的信息 | +---------------------------------------------------+
filesystem is full filesystem is full filesystem is full filesystem is full ...
喔!似乎只有两种类型的HP-UX 系统管理员:
看到了这个信息的管理员,
和
将要看到这个信息的管理员!
解决方法
这个信息的影响主要取决于什么文件系统报告了这个可怕的错误,根文件系统(/)的效果最糟糕。当根充满后,一切都开始出现故障;进程被终止,或者核心转储;依赖于根目录中文件的程序开始出现问题;清单在不断加长。
要做的第一件事是体面地关闭系统,除非您知道问题所在。文件系统在不发出警告的情况下充满有几个原因,而其它的原因则需要费些气力才能确定。
系统故障 -------------
突然出现在/var文件系统的一个最大的文件可以在目录/var/adm/crash中找到,这可以通过编辑/etc/rc.config.d/savecore 文件,将SAVECORE_DIR= 修改为除/var/adm/crash (缺省)以外的目录来实现。要检查的另外一个设置是SAVECORE=,它将确定您是否要保存转储,1为保存,0为不保存。如果禁止保存崩溃转储,那么您就进入了好坏参半的境地:
好消息是故障不会突然以16至256 megs(或更多)数据的核心转储充满您的文件系统,坏消息是没有这个文件,很少有机会确定能够确定系统故障的原因。
/var/adm/crash 是不是故障核心转储的唯一地点?不是,就象上面所说,该目录在系统启动文件/etc/rc.config.d/savecore中指定,您可以改为具有比/var/adm/crash更大的空间的文件系统。如果修改了目录,那么您将需要与主内存一样多的空间来保存全部的崩溃转储。
savecore 运行时,根据所使用的10.x的修订版本,您将得到两个文件或一个子目录和相关的文件,将创建文件vmcore.# 和vmunix.#,以及一个小文件bounds。# 符号是一个数字,它从0开始,每出现一个故障增加一次,bounds文件记录要使用的下一个数字。
如果是在10.10或更高版本的系统上,您会得到一个目录/var/adm/crash/core.#,同样,#是每次崩溃转储都要增加的数字。在core.#目录中将包含一系列的压缩文件,这些压缩文件组成了崩溃转储。例如: /var/adm/crash/core.0/core.0.1.gz、 /var/adm/crash/core.0/core.0.2.gz 等等.... 此外还会有一个vmunix.gz 文件。对于10.10 及以上版本,还将有一个INDEX 文件。核心文件可以分成多个部分,INDEX 文件包含有关核心文件块尺寸的信息。
出现故障系统重新启动后,/sbin/init.d/savecore文件检查savecore 是否存在,指定的目录是否存在...如果都存在,则savecore检查转存区(通常是主交换区域)是否有有效的HP-UX 内存转储。找到适当存储的内存转储后,savecore 程序显示故障发生的日期/时间,并创建文件core.0 (如果这是该目录中的第一个核心转储)。这个过程一直持续到所有的物理内存(RAM)都已写入磁盘上。如果没有足够的文件系统保存全部的转储,savecore将不保存。如果主交换区域中没有适当写入的转储,savecore 不进行任何操作,也不显示任何内容。
然后,savecore 写入当前的 /stand/vmunix 文件的一个副本,名字为vmunix.0 或 vmunix.gz,与转储文件相匹配。如果文件系统已满,则创建的这个文件长度为零。为了能够使用,核心转储还必须在转储时拥有/stand/vmunix(内核文件)的副本。
那么避免/var 文件系统由于系统故障而充满的最好方法是什么呢?只需选择另外一个文件系统来存储转储,这个文件系统一般来说有很大的空间,或者是始终有至少RAM尺寸加上大约10-20 megs (对于 vmunix.#)空间的文件系统。如何知道RAM 的尺寸? 您可以键入命令: dmesg,看一下可用的实内存数量。
如果在故障之后需要回收空间,只需将核心转储目录的内容存储到磁带上...使用的最简单的命令时:
cd /my_core_dump_directory tar cvf /dev/my_favorite_tape_devicefile *
然后您可以从核心转储目录中删除所有的文件,此时您可以与惠普联系,以便对核心转储进行分析,确定故障的可能原因。
/stand ------
10.x 的HP-UX内核比9.x要大得多,因此/stand 和 /stand/build可以迅速装满。在/stand目录中应当有/stand/vmunix、/stand/vmunix.prev、/stand/system和/stand/system.prev,如果还有其它的内核或系统文件,您应当查看一下,以确定是否应当将其删除。在/stand/build 中可能有其它的内核,查找名字叫/stand/build/vmunix_test 的一个文件,vmunix_test是之前创建、但从来没有到位的内核。
文件系统 minfree ------------------
在安装了某个品牌的新磁盘之后,每个管理员可能都要看一下bdf命令,并且发出疑问:那部分空的内存空间哪里去了?答案是大约6% 至 8% 的磁盘空间被i结点表和超级块所占用,其中包含指向磁盘上各个文件块的指针。此外,缺省的newfs 命令将在文件保存到磁盘上之前,保留10% minfree 或 10%的剩余空间,以增强文件系统的性能。
这个缓冲区使系统管理员可以解决特定磁盘上的空间问题(文件系统被标记为已满之后),并仍然有部分空间(10% minfree 区域)进行空间。尽管 minfree区域可以减少为零,但对于根磁盘不建议这样做,因为文件系统已满的信息甚至可能不允许系统管理员登录到故障系统上。
其它磁盘可能允许使用 0% minfree,只要这个空间得到监视,或者空间的使用基本上是固定的。还要注意的是,HP-UX 下磁盘空间的HFS 方法很大程度上依赖于10% minfree保持在高级别上分配和释放文件空间的性能。
另外一个文件系统调整功能是在用newfs初始化文件系统时,增加每结点的字节值。通过修改i结点所管理了的磁盘空间字节数,可以减少50%的开销,代价就是减少可以用较少的i结点存储的文件总数。这个参数很有技巧性,因为它可以阻止数据与不能处理各种每个i结点字节值的其它Unix 系统的随意互换。
一般来说,将这个参数从2048 字节改为64K字节将只返回大约3%左右的磁盘空间,相应地减少了可以存储的文件总数,但对于大文件较少的情况,这种做法可能比较理想。一定要选择一个能够与您的操作系统版本兼容的值,i 结点尺寸很大通常无法移植到其它系统或者其它版本上。
不在 /dev中的文件 -------------------------------
另外一个很常见的问题是在进行备份之后出现文件系统已满的信息,怎么会这样呢?HP-UX非常友好,它允许有拼写错误,但经常会做一些不是完全预期之内的事情。例如,如果用户将磁带机的名称:
tar cvf /dev/rmt/om /
错拼为
tar cvf /dev/rmt/0m /
那么不是显示一个错误信息,例如:
tape not found
或者
devicefile does not exist,
tar将创建一个普通的 文件,使用tar 命令中给出的名称(或者 cpio 或 fbackup等),要备份的所有数据开始填充/dev/rmt/om 文件,直到整个系统都备份到根磁盘上。最终这个过程失败,出现文件系统已满的信息。
使用下面的命令可以找到/dev 中因疏忽而出现的拼写错误:
find /dev -type f
这个列表中将包含永远都不应当出现在/dev中的文件,也就是普通文件。有时候可能在/dev目录中也会发现一个核心文件或者意料之外的文件。
管理 /tmp 和 /var/tmp -----------------------------------------
/tmp是那些每个用户都可以访问、但很少有人认真对待的目录中的一个。/tmp 定义为一个临时的存储区域,不被认为是永久性区域,电子邮件或vi 编辑器等进程使用/tmp 目录存储文件,但之后正常的操作将清除这个目录,不会将文件留在/tmp 目录中。部分惠普程序将把日志文件放到 /tmp中,但被认为是适当的做法,因为日志文件应当用于检查错误,然后即被删除或存档。
有一个警告运行Omniback 的用户应当警惕,Omniback要求/tmp目录中有一个名称为CRS.pid的文件,否则Omniback 将不工作。
强制清除 /tmp 目录的一个方法就是使用命令,例如:
find /tmp -type f -atime +14 -exec rm {} \;
这个命令将删除/tmp 中14天以上未被访问的所有文件(或/tmp下一级目录中的文件)另外一个临时存储区域/var/tmp被用户滥用的情况少一些,因为他们没有注意到它的存在。同样,部分进程将在/var/tmp 中创建临时文件,并且应当(如果这些进程正常结束)删除它们的文件,vi 等编辑器使用/var/preserve。下面这个命令将清除/var/tmp 中7天以上未被访问的文件:
find /var/tmp -atime +7 -exec rm {} \;
系统管理员需要确定/tmp是否应当允许定期访问的文件保留在/tmp中。用户对文件使用touch命令可以回避上面的测试,在这种情况下,将-atime选项改为-mtime,它表示文件必须被修改。
有时候,您可能需要检查未被扇面的命令删除的旧目录,其中的内容将被删除,但过了一会儿之后,/tmp 可能又会被一些空目录弄得一团糟。
这是目录中文件的一种可能性。下面的组合删除7天以上的文件,然后删除7天没有更新的目录。但使用了一个简单rmdir命令,所以如果目录为空,该命令将会失败。因此,在所有文件均被删除之前,目录仍将保留。
find /tmp -type f -atime +7 -print -exec rm -f {} \; find /tmp -type d -atime +7 -print -exec rmdir {} \; find /var/tmp -type f -atime +7 -print -exec rm -f {} \; find /var/tmp -type d -atime +7 -print -exec rmdir {} \;
另外一个常见的做法是在每一次完全备份之后清除/var/tmp。
检查 /home/ftp ----------------
尽管 /home那些可能突然增大的目录之一(由于各个用户创建了大量的文件),但仍然可能有一个ftp 目录,也称为匿名ftp,这个目录允许用户从网络上发送/接收文件,不必具体登录到系统上,这样可能导致大文件突然出现。为检查这种情况,可使用:
du -k /home/ftp
大编号(10000 以上)可能意味着网络上的某个用户正在存储大文件...将/usr/share/lib/pub 目录上的许可从777改为755即可避免这种情况,其余的(标准) ftp目录已经被设为755。匿名ftp 可以用SAM 进行设置,尽管找到这个选项有点技巧性...对于 8.0x 系统:
选择:
Networks/Communications -> LAN Hardware and Software (Cards and Services) -> ARPA Services Configuration -> Create Public Account for File Transfers ...
对于 9.0x 系统:
选择:
Networking/Communications-> Services: Enable/Disable Anonymous FTP Disabled Public account file transfer capability
对于 10.x 系统:
选择:
Networking/Communications-> Network Services Anonymous FTP Disabled Public account file transfer capability
按下回车后,匿名FTP将被突出显示,然后您就可以用下面的方法选择Action菜单:
按下 f2 (label=Alt),然后按字母a
或者
按下 f4 (label=Menubar),用箭头键将菜单移到右侧,根据情况选择Enable 或 Disable。
从哪里删除文件集 ------------------------
从 HP-UX 8.0 及更高版本开始,删除不需要的文件集或应用程序的功能即已通过程序rmfn提供。在10.x下,该实用程序称为freedisk(1M),详细信息参见手册页。您可以进入Routine Tasks 部分,从SAM 运行此实用程序。在Routine Tasks 部分您可以找到其它有用的文件系统实用程序。另外一个工具就是cleanup命令,由较早的10.xx 系统补丁程序提供。
为什么不能删除程序?在过去的计算机中,一个简单的程序只是一项,或者至多是一个目录,因此很容易删除,但这是那时的情况,现在则大为不同;今天程序存储在整个文件系统的各个部分中。诸如rc 文件本地配置,应用程序缺省文件中的X/Window 资源,文档的手册页,只有管理员需要的命令,以及通用的其它命令,所有这些都是一个应用程序的组成部分。
为了跟踪所有这些内容,swinstall 和 swremove程序利用了保存在/var/adm/sw 目录中的索引。此外还对不同文件集中的文件之间的从属性进行跟踪,这样可以避免错误加载部分文件组,造成整体上不能实现全部的功能。尽管很多第三方软件提供商使用swinstall程序,但也有很多供应商不使用,因此您必须参考您的提供商的空间管理文档。
可以被删除的文件集? ===============================
手册页 ---------
文档页(手册页)可占用6到20 MB的空间。删除手册页之后, man命令将不再能够找到任何联机的帮助文件,但这样可以节省大量的磁盘空间,尤其是对于很少或者没有程序开发的系统。
另外一个替代的选择是只删除/usr/share/man目录中以字母'cat'开头的目录,这些目录存在时,为格式化的帮助页提供一个位置,当执行man 程序时,您可能会看到下面的信息:
formatting...please wait
这个信息是在man程序将帮助页面转换为可读格式时显示的。
如果/usr/share/man/cat* 目录存在,已完成的页面即被保存,从而避免将来请求同一个页面时出现延迟。一套完全格式化的手册页可能比未格式化的页面大20 MB,如果用户对这种延迟不是很在乎,删除/usr/share/man/cat* 目录平均可以节省10 MB的空间。
这里提供一个技巧: 大部分用户的日常操作只需要第1部分或1m 命令部分。作为系统管理员,您可能会发现这个空间(大约3-4 megs)很值得节省时间,只要它不再增大。有一个命令catman,它可以格式化完整的章节(1 和 1m 是分别对应于所有用户和系统管理员的HP-UX 命令),删除触除下面以外的所有cat* 目录:
/usr/share/man/cat1 /usr/share/man/cat1m
那么使用命令: catman 11m,一次就只有这些命令的页面能够被格式化(我建议前一天晚上执行这个命令)。现在,对第1和1m部分的所有手册页请求马上就会弹出,但磁盘空间不会由于对手册页其它章节的引用而增大(每次出现时仍将被格式化)。
另外一个方法是删除最近n天内未被访问的页面,其中n可以是15或30,只要适合您的情况。可以每周启动一次cron作业,搜索/usr/share/man/cat*目录中的格式化页面,找出超过指定时间的文件。检查find 命令的time stamp 选项,使用-exec 选项执行文件rm。
还有一个方法就是使手册页成为另外一个系统上的远程 (NFS) 目录。使/usr/man 驻留在一个系统上之后,就可以消除数十兆字节的重复页面。
NLS 文件 ---------
本地语言支持是另外一个区域,可以从不需要除英语之外的语言支持的系统上进行调整。对于远东语言,可能有些文件非常大,因为它们可能需要复杂的字符集(例如假名或朝鲜语)。
惠普诊断程序 --------------
这里有些技巧。删除它们可以节省大量空间,尤其是在700 和 800系统上。另一方面,它们为服务人员提供有关系统上可能发生的问题的详细信息,以及有关具体错误的详细日志文件,您可能希望与本地支持人员讨论删除诊断程序的优缺点。
与所有的惠普文件集一样,只需运行swinstall程序,选择需要的文件集,即可重新安装。请参考Support Plus CDROM文档(位于CDROM上),DIAGNOSTICS 目录及文档的 .pdf文件。
lost+found 目录 --------------------
在异常电源故障或系统故障时,文件系统不会干净地关闭,可能需要用文件系统整个程序fsck手动干预。如果fsck不能修理文件或目录,fsck不会删除,而是将询问您是否希望修理问题,如果回答 yes,那么可能就将i 结点 (指向文件或目录的指针)移到lost+found 目录中,并起一个名字,这个名字实际上就是i 结点号。
lost+found 中的这些登录项所代表空间可能是已删除的临时文件,但它们的自由空间没有记录到文件系统上,或者只是丢失了名称或与其余目录联系的普通文件和/或目录。在这种情况下,系统管理员必须查看每个文件或目录的内容,以确定保存的是什么数据(如果有),否则这些文件将占用空间,但却没有任何用途,并可能导致文件系统的不断增大。
卸载磁盘 ---------------
HP-UX 通过让目录完成双倍的任务,将独立的磁盘连接成一个文件系统,称为根(root)(以/符号表示)。使用mount命令,一个目录可以变成一个安装点(与其它磁盘文件系统的逻辑连接),文件/etc/fstab 还可以间接地完成这个任务,因为mount 命令读取检查清单,以便指导将磁盘安装到什么地方。
比较古怪的是卸载磁盘将安装点目录返回本地状态,存储在该目录中的文件也将返回。在mount 命令将该目录的使用改为一个安装点之后,这些文件即处于不活动状态;也就是说,根磁盘上的文件仍存在,但由于已安装的磁盘“覆盖”了安装点目录,因此看不到。
如果已安装的磁盘被卸载,则根目录中的文件将重新可见,这将导致一个常见的错误:
1. 有的用户注意到文件不见了,然后开始从磁带装载这些文件。
2. 文件被重新装载(或者装载了一部分文件),有的用户注意到根文件系统已满,或接近于装满。
3. 有的用户键入 bdf命令,发现第二个磁盘未安装...然后安装。现在文件又恢复了原先的状态,但根文件系统仍几乎装满。
其间所发声的变化是该目录没有作为一个安装点在使用,但没有红色的标志显示这种情况,这就是bdf 命令如此重要的原因: 已安装的文件系统显示在列表的右侧。
这里有一个技巧: 键入shutdown 0,使系统进入单用户模式,显示shell 提示符之后(您不必登录),检查/etc/fstab文件,找到您的安装点,第二个参数是安装点目录。
现在检查每个目录,看一看是否为空,如果不空,您需要根据情况清除目录,因为除了根文件系统,没有任何其它磁盘在单用户模式下安装。现在对每一个安装点执行下面的命令:
touch /mount_point/IamNOTmounted
这个命令将在安装点目录中创建一个零长度的文件,以提醒这是一个安装点,不是通用的目录。磁盘安装完成后,这个文件即从视图中小时;当磁盘卸载时,文件重新恢复,提醒不要用于备份磁带。
其它大文件的位置 ============================
不要查找大文件作为清除磁盘空间的方法,这一点很重要。这里有两个理由:
-- 通常大文件、尤其是HP-UX 目录中的大文件可能很重要,它的用途对于新的系统管理员可能并不显而易见。
-- 大文件可能不是问题,一个失控的脚本或程序可能会意外创建成千上万的小文件。
所以要查找大不木,使用du 命令可以很容易地找到大目录,下面是在/ 中快速找到最大目录的方法:
du -kx / | sort -rn > /var/tmp/du.list
注意-k 选项在10.x 中没有文档记录(但可以工作),它将提供以1K、而不是块(512字节)为单位的清单,下面是示例:
40396 / 15249 /etc 14474 /sbin 10494 /root 8666 /etc/lp 8557 /etc/lp/interface 6458 /etc/lp/interface/model.orig 3823 /root/tmp 3228 /sbin/fs 1682 /etc/lvmconf ...
对于10.20系统,这是一个相当典型的情况。注意/etc是最大的目录,然后是/sbin。但是,如果在根文件系统中有非HP-UX的目录,必须将其撇开,因为它们不属于这个统计(非常重要的文件系统,应当将它们移到另外一个逻辑卷中,如有必要,可以使用一个符号保持 /filesystem_name 就位。
例如:
140630 / 100234 /cadcam 15249 /etc 14474 /sbin 10494 /root 8666 /etc/lp 8557 /etc/lp/interface 6458 /etc/lp/interface/model.orig 3823 /root/tmp 3228 /sbin/fs 1682 /etc/lvmconf ...
在上面的情况下,目录/cadcam 非常大,当然不属于 /目录。有一个外加的磁盘,上面有不同的目录,所以为cadcam创建一个新目录,将目录和文件移到新磁盘上,删除旧的目录和文件,然后创建一个符号链接:
mkdir /extra/cadcam cd /cadcam find . | cpio -pdlmv /extra/cadcam cd $HOME rm -rf /cadcam ln -s /extra/cadcam /cadcam
一个替代方法是只在新磁盘上创建一个全新的cadcam 卷,将其安装到一个临时的安装点下,然后复制文件。确认复制完成后(ls -R 计算文件和目录),删除旧文件,在/cadcam 目录中安装新卷:
mount /dev/<new_volume> /mnt cd /cadcam find . | cpio -pdlmv /extra/cadcam cd $HOME rm -rf /cadcam/* umount /mnt mount /dev/<new_volume> /cadcam
文件返回原处。如果跳过rm -rf 步骤,那么旧的磁盘空间将不被恢复,只要/cadcam作为安装点使用,它就不可见。正常情况下,在一个目录作为安装点使用时,文件和目录不可见。但甚至在安装时,原磁盘上安装点以下的文件都可以用一个ncheck命令看到。下面是一个示例:
# mkdir /xyz # touch /xyz/testfile # mount /dev/dsk/cdrom /xyz # ls /xyz ABC.TXT;1 DEFGHI;1 ....
# bdf / Filesystem kbytes used avail %used Mounted on /dev/vg00/lvol3 99669 43283 46419 48% /
# ncheck /dev/vg00/lvol3 | grep /xyz /xyz/testfile
所以即使在/xyz安装点上面安装了CDROM,在安装点下面也有一个不可见的文件(/xyz/testfile)。ncheck *需要* 设备文件而不是安装点,它将列出该卷上的每一个文件。
因此,如果已经将部分文件复制到了新卷上,则安装新卷,并注意复制文件没有造成磁盘使用减少,ncheck将显示文件仍在已安装的卷下面。当旧文件被删除后,磁盘空间将被收回。对各个安装点运行一次ncheck 测试,看一看隐藏文件是否仍躲在某个安装点下面,这是个不错的主意。
数据收集文件 ---------------------
惠普的 PerfView Analyzer 收集有关系统性能和任务的信息,这些文件可以在/var/opt/perf/datafiles 中找到,共有5个文件,全都以log开头。日志文件的增长受/var/opt/perf/parm中值的限制,通常除进程之外为10 meg,设置为20 meg。状态文件在/var/opt/perf中。使用du命令可以快速检查这些目录的大小,如果没有设置收集限制,数据收集文件的尺寸可以迅速增长。
核心文件: -----------
让我们从似乎处处可见的文件开始: core、a.out 和*.o 文件。核心文件是在一个程序异常终止后,在当前的工作目录下产生的,一般是通过部分非由程序所预期的错误条件,或者更小程度上通过接收某些信号。
尽管这些核心文件对一个正在设计或支持特定程序的程序员来说可能很有用,但通常这些文件要浪费空间,可以删除。核心文件可以是几千字节,也可以是很多兆字节大。下面这个命令可以加到cron 登录项中,以定期删除核心文件:
find / -name "core" -exec rm {} \;
是否有一种方法可以避免核心文件的产生?实现这个目标有两种方法。核心文件的创建过程是内核的一部分,它只是吸收程序内存中的所有内容,将这些内容作为一个'core'文件写入当前目录中。为了避免这种情况的出现,请执行下面的步骤:
cd <to_someplace_where_core_files_shouldn't_be> touch core chmod 0 core chown root core
现在核心文件不能创建,因为任何用户都没有文件许可(除超级用户之外),并且由于文件为根所有,因此用户不能修改。它是一个零长度的文件,因此不占用空间。为避免出现有关不能删除core 目录的cron 信息,请将上面的find 命令改为:
find / -name "core" -type f -exec rm {} \;
但比较简单的方法是使用POSIX shell 内建的ulimit。正常情况下,ulimit是一个编程接口(手册页的第2部分),但对于ksh 和 sh-posix,可以非常方便地在命令行上修改。ksh 没有全部的选项(它只支持可以创建的最大文件尺寸),而POSIX shell则有很多选项。如果要将核心文件限制为零,则使用:
ulimit -c 0
>从现在开始,从这个shell提示符下启动的任何进程产生的核心文件长度都将是零。尝试用下面的步骤(使用POSIX shell)进行验证:
ulimit -c 0 sleep 500 & ps <find the PID> kill -3 <PID_for_sleep>
这个步骤将产生一个零长度的核心文件。
a.out 和 *.o 文件 -------------------
通常编程之后遗留的其它文件是a.out 和以*.o 结尾的文件(编译但未链接的文件),这些文件经常被繁忙的程序员遗失在各个不同的地方。一个比较礼貌的通知用户有关这些文件问题的方式就是向每一个用户发送一个电子邮件信息,其中包含这些文件的清单:
find /home -name "a.out" -print > aout.list
find /home -name "*.o" -print > o.list
然后将这些清单发送给不那么有条理的程序员,以清洁他们的磁盘空间。如果这种努力不成功,可以对前面的核心删除命令进行修改,将名称从"core"改为"a.out",尽管您可能希望增加一个按期分类选项,以查找只删除30天以上文件的命令。注意不应当删除应用程序(例如Oracle)或HP-UX目录(例如langtools)中的任何*.o文件。
HP-UX 假脱机打印程序 -------------
要检查的目录是: /var/spool/lp/request。每一台打印机都将有一个目录,如果这些目录中的大文件几分钟之前创建的,则可能表明假脱机程序有问题。
打印机可能被禁用,导致请求目录被填满。此外,管理员可能修改并忘记删除实际上并不存在的测试打印机。确认lpstat -v 的报告和/var/spool/lp/request 中的目录是相同的, lpstat -v 清单显示的是假脱机程序已知的打印机,因此如果是/var/spool/lp/request 中的其它目录(或文件),那么它们就不应当在这里。
同样要检查/var/adm/lp/log中的日志文件...它们是可选的,但是启动之后,它们的增大将没有限制,这些文件是log、oldlog 和lpd.log。lpsched -v 用于启动lp记录,尽管惠普的JetDirect软件总是利用接口脚本记录信息。
UUCP ----
要检查的另外一个区域是 uucp的目录。与lp 假脱机程序一样,这个目录可以非常动态,保存其它结点的流量,或者只是使用uucp 发送或接收的各种文件的仓库,这个目录是:
/var/uucp
要查看的位置是: Admin.,一般来说audit文件的增大取决于流量;Log.,其中保存了所有的日志文件,以远程机器的名字命名的目录允许访问这台计算机。
邮件 ----
最后,/var/mail是一个可以意外地突发性增大的地方,非常大的文件可以轻松地(实在是太轻松了)地通过电子邮件发送给系统上的用户,这个目录可以非常快地膨胀。向分发清单中的每个用户发送一个大文件将导致同一个文件的多个备份保存到每个用户的邮件文件中,从而使/var/mail 迅速增大。注意/var/mail 上的限额工作不是很正常,因为传送代理程序将把限额问题作为软错误处理,这可能会导致电子邮件的传送要重试16到32次,如果邮件相当大,它所产生的网络流量就会非常大。可使用nagware (自动电子邮件信息)提示用户电子邮件文件过大。
其它有趣的文件 -----------------------
有一个很有趣的目录叫/usr/newconfig,它包含一些很有用的文件,也就是说未被编辑的(已知可以工作)自定义文件,例如gettydefs、inittab、passwd 等等。如果/etc目录中的这些关键文件中有一个损坏(例如inittab),就可以从/usr/newconfig中复制已知可以工作的版本,这样系统就可以重新联机。
/users 或 /home 目录 -------------------------
那么那些以测试文件或其它不必要的数据滥用他们的文件空间的用户怎么样呢? 首先,这些文件在什么地方?最简单的回答就是检查/home 目录,一个很好的方法是使用du命令,下面是一个示例:
du /home 12 /home/rst 480 /home/wpw 2 /home/jes 3308 /home/djs/nova-files 10442 /home/djs 2 /home/mda 6 /home/jws 2 /home/gfm 2 /home/gedu 12 /home/jam 12 /home/blh 11016 /home
左边的数字是度量的块或512字节数,这些值没有KB或MB更有意义,因此您可以使用-k (没有文档记录,但可以在10.x 下工作)选项。du 命令显示目录中的磁盘使用情况,而不是各个文件的使用情况,这是跟踪磁盘空间问题的第一步。
现在,您会注意到有些文件不是非常有趣,例如/home/mda (2 个块或1 KB),那么我们如何将清单限制为比较有意义的数字,例如大于5 MB的目录?
好了,du命令使用左对齐的数字,因此标准的排序命令不会产生需要的结果。首先使用du 和sort -r -n 组合命令列出最大的目录。在这种情况下grep 更有用,下面是一个示例:
du -kx /home | sort -nr | grep ^....[0-9]
sort 命令指出: 以逆序排序,数字为左对齐;grep 模式说明: 从第1栏开始(^),跳过4栏(点是无关位置),然后在第5栏包含数字字符([0-9])时才匹配,因此应用于上例中的上述命令产生如下的结果:
du /home | sort -r -n | grep ^....[0-9] 6345 /home 5221 /home/djs
这通常更易于阅读。现在很明显/home/djs 是/home 中最大的目录(5,221 KB或大约5 MB)。另外一个选项是创建一些简单的脚本以megs 为单位显示目录:
#!/usr/bin/sh # Usage: # dus <starting-directory> # # Show usage in directories measured in megabytes (less than 1024 bytes # are not shown) # # Measurement is displayed in megabytes (1024*1024). # The Kbyte from du -k value is divided by 1024. # du -kx $1 | awk '{printf "%10.1f %s\n", $1/1024, $2}'
(-k 在10.20下没有文档记录 - 它以KB为单位报告尺寸)
发现了出乎意料的大目录之后,您可以用下面的命令,以大小的顺序列出文件:
ll | sort -nrk 5 | more
这个命令显示以字节数排序的文件,最大的文件排在最前面。下面是脚本lls (排序的长列表),它按照大小对文件进行排序:
#!/usr/bin/sh # # Usage: lls [optional directory or file spec] # # Long listing sorted /usr/bin/ll -aHF $@ | sort -nr -k 5 | more
作为一个示例:
lls /tmp -rw-r--r-- 1 root other 2109440 May 17 15:46 blh.tar -rw-r--r-- 1 root other 316916 Jun 2 00:36 foo2 -rw-rw-rw- 1 root other 260619 Mar 9 05:03 catalog.hp -rw-r--r-- 1 root other 242044 Sep 24 1994 shoe1.tif -rw-r--r-- 1 root other 190009 Jan 21 1995 cop_man.ps -rw-r--r-- 1 root sys 124891 Jan 29 1994 update.log2 -rw-r--r-- 1 root sys 79228 Jan 29 1994 update.log1 -rw-r--r-- 1 root other 48998 May 24 18:11 newsrc.orig2. -rw-r--r-- 1 root other 48998 May 23 23:33 newsrc.orig. -rw-r--r-- 1 root other 46514 Aug 28 16:51 oldnewsrc. -rw-r--r-- 1 root other 46514 Aug 21 15:10 newsrc. -rw-r--r-- 1 root other 39525 Jan 21 1995 cop-user.sam -rw-r--r-- 1 root other 22088 Sep 11 1994 tif. -rwxr-xr-x 1 root other 20480 Nov 22 1994 set_disp* -rw-r----- 1 root other 20131 Mar 19 13:49 gtest -rw------- 1 root other 17246 Aug 21 17:08 gpm. -rw-rw-rw- 1 root other 15185 Jul 24 12:02 stm.log -rw------- 1 root other 12949 Aug 23 15:39 netscape-history.
如何查找大文件而不是大目录?find 命令有一个选项,它可以块或字符数为单位搜索文件的大小。例如,下面的命令可以查找所有大于1 MB的文件:
find / -size +2000 | pg
find / -size +1000000c | pg
其中第一种形式指定2000 个块 (2000 x 512 字节 = 大约1 MB),第二种形式将查找大于1,000,000 字节的文件。在find 的手册页的开始部分中介绍,使用+号表示大于或等于。您可能希望将输出从通过管道导向pg (或者more命令)改为重定向到文件中,例如:
find / -size +2000 > /tmp/bigfiles
有些文件需要保留,例如/stand/vmunix 和/stand/vmunix.prev 通常大于1 MB,但是不要删除它们!删除这些文件后,系统重新启动将非常困难(部分新的系统管理员或者有心的用户可能已经发现了这一点),这些都是系统启动时需要的最重要的文件。
日志文件 - 信息与大量空间! -----------------------------------------
很多日志保存在 HP-UX系统中,大部分的日志膨胀没有限制,它可能会产生恶名卓著的"file system full(文件系统已满)" 信息。到目前为止,根文件系统最为关键,因为很多HP-UX 进程依赖于拥有部分可用空间,包括日志文件的空间,其中的许多日志文件是可选的,不在缺省系统中创建,但确实存在几个日志文件,应当对它们进行监视。
部分非常常见、能够快速膨胀的日志文件包括:
/var/adm/syslog/syslog.log (网络和系统日志) /var/adm/syslog/mail.log (电子邮件日志) /var/adm/diag/LOG* (诊断日志) /var/adm/wtmp (登录/注销等) /var/adm/btmp (失败的登录尝试) /var/adm/syslog/mail.log (邮件日志) /var/adm/lp/log (lp 日志)
一般来说,大部分的系统日志保存在/var 中,而其中的大部分保存在/var/adm中,但与所有的HP-UX 一样,有一些例外的情况,比如/etc/rc.log和 /etc/shutdownlog。
大日志文件制造者之一是可选的系统监视程序Perfview Analyzer,它使用Measureware 记录计算机的活动。根据用于量化“有趣”进程的设置,日志可能膨胀得非常之快。状态文件可以不受限制地增大。/var/opt/perf/parm 文件设置数据文件的尺寸限制:
size global = 10.0, application = 10.0, process = 20.0, device=10.0
上述设置的尺寸单位是兆字节(MB)。
在下表中有一个与HPUX 有关的日志文件清单,可能还有其它的日志文件,但大部分都应当在/var 中。SAM有一个很棒的日志文件整理实用程序,如果/var 已满,SAM日志文件整理就可能不工作,因此您需要手动浏览下面的清单,调整部分文件。
/var/adm/sw/swcopy.log /var/adm/sw/swagentd.log /var/adm/sw/swagent.log /var/adm/sw/swinstall.log /var/adm/sw/patch/PATCH.log /var/adm/sw/swmodify.log /var/adm/sw/swremove.log /var/adm/sw/swpackage.log /var/adm/sw/swconfig.log /var/adm/sw/swverify.log /var/adm/sw/swreg.log /var/adm/cron/log /var/adm/cron/OLDlog /var/adm/syslog /var/adm/syslog/mail.log /var/adm/syslog/syslog.log /var/adm/syslog/OLDsyslog.log /var/adm/syslog/mail.logSAMTRM /var/adm/lp/log /var/adm/lp/oldlog /var/adm/ptydaemonlog /var/adm/OLDsulog /var/adm/rpc.statd.log /var/adm/rpc.lockd.log /var/adm/automount.log /var/adm/vtdaemonlog /var/adm/shutdownlog /var/adm/rc.log /var/adm/sulog /var/tmp/swagent.log /var/tmp/gatherftp.log /var/tmp/sam_remove.log /var/spool/lp/lpd.log /var/spool/lp/lpana.log /var/spool/lp/log /var/spool/sw/swagent.log /var/ppl/log /var/opt/sharedprint/errorlog.test /var/opt/dce/config/dce_config.log /var/opt/dce/rpc/rpcd.log /var/opt/dde/dde_error_log /var/opt/hppak/hppak_error_log /var/opt/perf/datafiles/logindx /var/opt/perf/datafiles/logglob /var/opt/perf/datafiles/logappl /var/opt/perf/datafiles/logproc /var/opt/perf/datafiles/logdev /var/sam/log/samlog /var/sam/log/samlog.old /var/sam/log/br_log /var/adm/wtmp /var/adm/btmp
wtmp 需要用下面的命令置零:
cat /dev/null > /var/adm/wtmp
或者
> /var/adm/wtmp
cat /dev/null方法不使用命令rm、touch、chmod、chown、chgrp创建空文件,而是保留旧文件的所有特性。注意在正在运行的系统上对/var/adm/wtmp 调零可能导致使用who 命令时报告错误,这些错误是由于who 没有找到当前登录的用户引起的。整理/var/adm/wtmp 的最好方法是在单用户模式下进行。不要对/etc/utmp调零...这项工作是在启动时自动完成的。如果对/etc/utmp 文件调零,就会出现错误信息,您必须通过最低层shell 登录,唯一的补救方法 (因为 utmp 已不在)就是重新启动。
而且,SAM 已经得到增强,可以执行很多的大文件搜索功能,并在HP-UX 9.0及以上版本中提供了其它的磁盘空间管理工具。
------------------------------ 惠普响应中心,亚特兰大
(http://www.fanqiang.com)
进入【UNIX论坛】
|
|
| 相关文章 |
|
|
|
|
 |
★ 樊强制作 欢迎分享 ★ |