说到磁盘监控,很多系统管理员第一时间想到的就是 df。这个工具就像管理员手中的瑞士军刀,简单直接却功能强大。不过,你真的了解 df 的全部潜力吗?本系列文章旨在逐一剖析这些日常管理利器,分享实战中积累的命令行技巧与脚本配合方法。唯一的目标是:让异构环境下的系统管理更加顺畅、高效。
入门:使用 df
磁盘空间监控是每位 UNIX 管理员的必修课。而 df 工具就像一张即时快照,将所有文件系统的存储状况一览无余地呈现出来。不同 UNIX 发行版的默认输出格式各异,但核心信息始终不变——磁盘总容量、已用空间、可用空间以及挂载点。例如,基于 BSD 的 Mac OS X 默认输出如下:
清单 1. Mac OS X 的缺省磁盘空间信息
Filesystem 512-blocks Used A vail Capacity Mounted on /dev/disk0s2 268435456 119741344 148182112 45% / devfs 195 195 0 100% /dev fdesc 2 2 0 100% /dev 清单 2. 使用带 -k 选项的 df 命令
|
某些版本还支持更灵活的块大小单位,例如 -m 显示兆字节、-g 显示千兆字节。清单 3 展示了千兆字节的输出效果:
清单 3. 使用带 -g 选项的 df 命令
$ df -g Filesystem 1G-blocks Used A vail Capacity Mounted on /dev/disk0s2 128 57 70 45% / devfs 0 0 0 100% /dev fdesc 0 0 0 100% /dev |
块越大,细节越粗糙,但对于快速概览超大容量磁盘来说,这种粗粒度信息反而更加实用。另一个值得关注的点:Solaris 的 df 默认会输出空闲块和文件节点数量。许多文件系统对最大文件数有硬性限制(虽然通常很难触及),但理论上存在一种情况——磁盘仍有剩余空间,文件节点却已耗尽,导致无法创建新文件。清单 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 a vail 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 a vail capacity Mounted on /dev/dsk/c0t0d0s0 7644629 206026 7362157 3% / |
或者查看某个用户的 home 目录:
$ df -k ~mc Filesystem kbytes used a vail capacity Mounted on /dev/dsk/c0t0d0s7 35611388 930133 34325142 3% /export/home |
使用 df 的输出
df 这个名称实际上是 disk free 的缩写,输出内容正是磁盘的剩余空间。将上面任意一行拆开来看,有几个关键列值得重点关注:
Filesystem kbytes used a vail capacity Mounted on /dev/dsk/c0t0d0s7 35611388 930133 34325142 3% /export/home |
第一列(通常标注了块大小单位)显示磁盘总容量;used 是已用块数;a vail 是剩余可用块数;而 capacity 则是已用空间百分比——这个百分比本身就能让你对磁盘紧张程度有一个直观的判断。
默认情况下,UNIX 文件系统会为普通用户保留 90% 的空间用于数据存放,剩下 10% 预留给 root 作为紧急维护之用。一旦普通用户的写入量超过这 90% 的限制,系统就会提示“磁盘空间不足”。这预留的 10% 是管理员最后的应急手段:可以利用这部分空间就地创建临时备份、压缩已有数据,而无需依赖其他文件系统。当然,你可以通过 tunefs 或者在创建文件系统时调整这个保留比例。对于大容量磁盘来说,10% 的预留可能意味着几个 GB 甚至几十 GB 的“闲置”空间。业界常见的做法是至少保留 1%,这样在磁盘彻底写满之前还能留有一定的缓冲余地。不过,在动手调整比例之前——尤其是当磁盘使用率已经较高的时候——你得先搞清楚,究竟是谁占用了这些空间。
上一页1 2 3 4 下一页 阅读全文
