评论

收藏

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

服务系统 服务系统 发布于:2021-09-22 15:25 | 阅读数:346 | 评论:0

通常,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%  /devfdesc          2     2     0   100%  /dev<volfs>       1024    1024     0   100%  /.vol清单 2. 使用带 -k 选项的 df 命令
                                                                                             
$ df -kFilesystem  1K-blocks    Used   Avail Capacity  Mounted on/dev/disk0s2  134217728  59870704  74091024  45%  /devfs        97    97     0   100%  /devfdesc         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 -gFilesystem  1G-blocks Used Avail Capacity  Mounted on/dev/disk0s2    128   57  70  45%  /devfs         0  0   0   100%  /devfdesc         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 -kFilesystem      kbytes  used   avail capacity  Mounted on/dev/dsk/c0t0d0s0  7644629  206026 7362157   3%  //devices           0     0     0   0%  /devicesctfs             0     0     0   0%  /system/contractproc             0     0     0   0%  /procmnttab           0     0     0   0%  /etc/mnttabswap         2868600  1016 2867584   1%  /etc/svc/volatileobjfs            0     0     0   0%  /system/object/dev/dsk/c0t0d0s3  8261237 3723232 4455393  46%  /usrfd             0     0     0   0%  /dev/fd/dev/dsk/c0t0d0s4  4130238   74849 4014087   2%  /varswap         2867584     0 2867584   0%  /tmpswap         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 ~mcFilesystem       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 的潜在空间。通常好的做法是至少保留百分之一的空间,以便在完全用尽存储空间之前,提供最低限度的缓冲区空间。在深入研究这个问题之前,特别是如果已经使用了大量的磁盘空间,您需要确定到底是谁使用了所有的这些空间。

关注下面的标签,发现更多相似文章