欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

UNIX系统下监视磁盘空间和使用情况

程序员文章站 2022-03-13 14:22:23
通常,UNIX® 管理员都拥有一套常用的辅助进程管理的实用工具、技巧和系统。本文提供了各种用于简化各个过程的关键实用工具、命令行链和脚本。这些工具中的一部分来自于操作系统,... 08-09-08...

通常,unix® 管理员都拥有一套常用的辅助进程管理的实用工具、技巧和系统。本文提供了各种用于简化各个过程的关键实用工具、命令行链和脚本。这些工具中的一部分来自于操作系统,而大部分的技巧则来源于长期的经验积累和减轻系统管理员的工作压力的要求。本系列文章主要专注于最大限度地利用各种 unix 环境中可用的工具,包括简化异类环境中的管理任务的方法

入门:使用 df

监视磁盘空间是 unix 管理员的工作中很重要的一部分。本文向您介绍一些完成管理工作所需的工具,包括 df、du、find 的使用,甚至配额的使用。让我们先来看看 df 的强大功能。

对于许多管理员来说,使用 df 工具可能有点像断续的神经运动,因为它通过一个命令提供了所有文件系统中已使用的和可用的存储空间的快照视图。根据您的 unix 环境的不同,df 的缺省输出可能包含各种不同的信息。

大部分现代的 df 变种都可以显示磁盘空间、使用情况和可用性,通常还包括装入点(有时包括设备)。例如,基于 bsd 的 mac os x 显示如清单 1 所示的信息。

清单 1. mac os x 的缺省磁盘空间信息
 

filesystem    512-blocks      used     avail capacity  mounted on
/dev/disk0s2 268435456 119741344 148182112 45% /
devfs 195 195 0 100% /dev
fdesc 2 2 0 100% /dev
<volfs> 1024 1024 0 100% /.vol
清单 2. 使用带 -k 选项的 df 命令
$ df -k
filesystem 1k-blocks used avail capacity mounted on
/dev/disk0s2 134217728 59870704 74091024 45% /
devfs 97 97 0 100% /dev
fdesc 1 1 0 100% /dev
<volfs> 512 512 0 100% /.vol
/dev/disk0s3 21737260 3625724 18111536 17% /volumes/untitled

有些变种可能还支持可选的块大小,如兆字节(使用 -m)和千兆字节(使用 -g),如清单 3 所示。


清单 3. 使用带 -g 选项的 df 命令
$ df -g
filesystem 1g-blocks used avail capacity mounted on
/dev/disk0s2 128 57 70 45% /
devfs 0 0 0 100% /dev
fdesc 0 0 0 100% /dev
<volfs> 0 0 0 100% /.vol
/dev/disk0s3 20 3 17 17% /volumes/untitled

很显然,在增大显示的块大小的同时,信息中的详细级别也开始降低,但使用可选的大小是一种快速监视磁盘,特别是超大容量磁盘的很有用的方法。其他版本的 df 工具(特别是 solaris),缺省情况下将报告空块和文件可用性信息。大部分文件系统都具有能够存储文件的上限数值(该数值很大,以至于通常不会达到该上限),所以有可能整个系统填满了文件,还有可用磁盘容量但却不能再存储任何文件了。

您可以在清单 4 中看到 solaris 的缺省输出示例。


清单 4. solaris 的缺省输出
$ df
/ (/dev/dsk/c0t0d0s0 ):14877208 blocks 914042 files
/devices (/devices ): 0 blocks 0 files
/system/contract (ctfs ): 0 blocks 2147483618 files
/proc (proc ): 0 blocks 16109 files
/etc/mnttab (mnttab ): 0 blocks 0 files
/etc/svc/volatile (swap ): 5737216 blocks 147177 files
/system/object (objfs ): 0 blocks 2147483532 files
/usr (/dev/dsk/c0t0d0s3 ): 9076010 blocks 863695 files
/dev/fd (fd ): 0 blocks 0 files
/var (/dev/dsk/c0t0d0s4 ): 8110796 blocks 483714 files
/tmp (swap ): 5737216 blocks 147177 files
/var/run (swap ): 5737216 blocks 147177 files
/export/home (/dev/dsk/c0t0d0s7 ):69362510 blocks 4272812 files

使用 -k 命令行选项可以将显示内容切换为与前面的示例类似的格式,其中对数据进行了摘要处理,得到更加便于阅读的格式(请参见清单 5)。


清单 5. 使用 -k 选项
$ df -k
filesystem kbytes used avail capacity mounted on
/dev/dsk/c0t0d0s0 7644629 206026 7362157 3% /
/devices 0 0 0 0% /devices
ctfs 0 0 0 0% /system/contract
proc 0 0 0 0% /proc
mnttab 0 0 0 0% /etc/mnttab
swap 2868600 1016 2867584 1% /etc/svc/volatile
objfs 0 0 0 0% /system/object
/dev/dsk/c0t0d0s3 8261237 3723232 4455393 46% /usr
fd 0 0 0 0% /dev/fd
/dev/dsk/c0t0d0s4 4130238 74849 4014087 2% /var
swap 2867584 0 2867584 0% /tmp
swap 2867624 40 2867584 1% /var/run
/dev/dsk/c0t0d0s7 35611388 930133 34325142 3% /export/home

所有的 df 变种都接受一个目录或路径,然后显示包含该路径的文件系统的磁盘空间信息。例如,下面显示了应该如何获得根文件系统的空间信息:

$ df -k /
filesystem kbytes used avail capacity mounted on
/dev/dsk/c0t0d0s0 7644629 206026 7362157 3% /

或者,下面使用 df 显示了一个用户的 home 目录的空间信息:

$ df -k ~mc
filesystem kbytes used avail capacity mounted on
/dev/dsk/c0t0d0s7 35611388 930133 34325142 3% /export/home

使用 df 的输出

df 工具实际上是 disk free 的缩写,并且这也正是该工具所显示的内容。如果再次查看某个示例输出,您可以从中提取一些特别重要的元素:

filesystem             kbytes    used    avail capacity  mounted on
/dev/dsk/c0t0d0s7 35611388 930133 34325142 3% /export/home


 

第一列通常具有与块大小数据相对应的标题,它显示了磁盘的总大小。used 列显示了该文件系统或设备上已使用的块数。avail 列显示了该文件系统上尚未使用的(可用的)块数。

capacity 列提供了总大小中已使用的磁盘空间所占的百分比。这个信息本身可以提供关于可用空间的直观指示。

缺省情况下,unix 所创建的文件系统中百分之九十的容量可用于存放用户数据。剩下的百分之十由系统保留,以便 root 用户执行紧急维护工作。如果用户试图添加或创建超出该限制的文件,那么将返回一个错误(超出文件系统空间)。

有了这个紧急维护空间,就可以利用它对一块已满的磁盘进行恢复。例如,作为管理员,您可以使用这个空间来创建快速备份,或对现有的数据进行压缩而无需为达到该目的使用辅助文件系统。您可以使用 tunefs 工具或在创建文件系统时,调整保留的空闲空间的大小。对于大容量磁盘来说,这是至关重要的,因为其中百分之十的缓冲区可能等于许多个 gb 的潜在空间。通常好的做法是至少保留百分之一的空间,以便在完全用尽存储空间之前,提供最低限度的缓冲区空间。在深入研究这个问题之前,特别是如果已经使用了大量的磁盘空间,您需要确定到底是谁使用了所有的这些空间。