磁盘是Linux系统中非常重要的资源,如何对其进行有效的管理直接影响到整个系统的性能问题。下面我就来介绍下磁盘管理的三大命令:df、du和fdisk。
一、df
df命令可以获取硬盘被占用了多少空间,目前还剩下多少空间等信息,它也可以显示所有文件系统对i节点和磁盘块的使用情况。
df使用的参数:
- -a :列出所有的档案系统,包括系统持有的/proc等档案系统;
- -k :以KBytes的容量显示各档案系统;
- -m :以MBytes的容量显示各档案系统;
- -h :以人们交易读的GBytes、MBytes、KBytes等格式自行显示。
- -H :以 M = 1000K取代 M = 1024K的进位方式;
- -T :显示文件系统类型;
- -i :不用硬盘容量,而以inode的数量来显示;
# df [-akmhHTi] [目录或文件名]
范例:
1、列出各文件系统的字盘空间使用情况
# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda1 5952252 3012332 2632680 54% / /dev/shm 192836 0 192836 0% /dev/shm /dev/hda5 9492644 221604 8781060 3% /home # 特别注意,在 Linux (FC4) 底下,如果 df 没有加任何参数, # 那么预设会将系统内所有的 (不含特殊内存内的档案系统与 swap) 都以 Kbytes # 的容量来列出来!至于那个 /dev/shm 是与内存有关的挂载,先不要理他!
我来解释下上面数据的各个意思:
- Filesystem :代表该档案系统是在哪个partition,列出其名称;
- 1K-blocks :该分区所包含的数据块,默认代为是字节。
- Used :所使用的硬盘空间;
- Available :所剩余的硬盘空间;
- Use% :磁盘的使用率,如果使用率高达90%以上,最好需要注意下了,免得容量不足造成系统问题;
- Mounted on :磁盘挂载的目录所在地,也就是挂载点;
在这里需要注意下,Used列和Available列之和并不等于1K-blocks,这是因为默认的每个分区都留了少量空间供系统管理员使用的缘故。即使遇到普通用户空间已满的情况,管理员仍能登录和留有解决问题所需的工作空间。清单中Use%列表示普通用户空间使用的百分比,若这一数字达到100%,分区仍然留有系统管理员使用的空间。
2、将容量结果以易读的容量格式显示出来
# df -h Filesystem Size Used Avail Use% Mounted on /dev/hda1 5.7G 2.9G 2.6G 54% / /dev/shm 189M 0 189M 0% /dev/shm /dev/hda5 9.1G 217M 8.4G 3% /home # 不同于范例一,这里会以 G/M 等容量格式显示出来,比较容易看啦!
3、将系统内所有的特殊档案格式及名称都罗列出来
# df -aT Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/hda1 ext3 5952252 3012332 2632680 54% / /dev/proc proc 0 0 0 - /proc /dev/sys sysfs 0 0 0 - /sys /dev/devpts devpts 0 0 0 - /dev/pts /dev/shm tmpfs 192836 0 192836 0% /dev/shm /dev/hda5 ext3 9492644 221604 8781060 3% /home none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc # 看到了吧!系统里面其实还有很多的特殊档案系统在跑得! # 不过,那些比较特殊的档案系统几乎都是在内存当中,例如 /proc 这个挂载点。 # 因此,这些特殊的档案系统都不会占据硬盘空间。
4、将/etc下可用的磁盘容量以易读的容量格式显示
# df -h /etc Filesystem Size Used Avail Use% Mounted on /dev/hda1 5.7G 2.9G 2.6G 54% / # 这个范例比较有趣一点啦,在 df 后面加上目录或者是档案时, df # 会自动的分析该目录或档案所在的 partition ,并将该 partition 的容量显示出来, # 所以,您就可以知道某个目录底下还有多少容量可以使用了。
5、将目前各个partition当中可用的inode数量列出
# df -ih Filesystem Inodes IUsed IFree IUse% Mounted on /dev/hda1 1.5M 141K 1.4M 10% / /dev/shm 48K 1 48K 1% /dev/shm /dev/hda5 2.4M 67 2.4M 1% /home
二、du
du的英文原义为“disk usage”,含义为显示磁盘空间的使用情况,统计目录(或文件)所占磁盘空间的大小。该命令的功能是逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024字节)的情况。若没有给出指定目录,则对当前目录进行统计。
du使用的参数:
- -s :不显示各个目录明细,只显示当前查询目录容量总数;
- -a :列出所有的档案与目录容量;
- -h :以人们较易读的容量格式显示;
- -k :以KBytes列出容量显示;
- -m :以MBytes列出容量显示;
- -b :以字节为单位列出磁盘空间使用情况(系统默认以k字节为单位);
# du [-ashkmb] [档案或目录名称]
范例:
1、列出当前目录下的档案容量
# du 16 ./.gnome2 16 ./.ssh .......中间省略........ 292 . # 直接输入 du 没有加任何参数时,则 du 会分析『目前所在目录』 # 的档案与目录所占用的硬盘空间。但是,实际显示时,仅会显示目录容量,
2、列出当前目录下所有档案容量,并以人容易阅读的方式显示容量
# du -ah 4.0K ./sh/shell1.sh 4.0K ./sh/redirect.sh 8.0K ./sh/rc.firewall.sh 52K ./sh/cn.zone.......中间省略........192K .
# -a的选项会详细到每个文件的容量
3、只显示当前目录的总容量
# du -sh 192K .4、检查根目录底下每个目录所占用的容量
# du -sm /* 7 /bin 14 /boot .......中间省略........ 385 /proc .......中间省略........ 1 /tmp 2944 /usr 79 /var # 这是个很常被使用的功能啰~利用万用字符 * 来代表每个目录, # 所以,如果想要检查某个目录下,那个次目录占用最大的容量,就可以用这个方法找出来 # 值得注意的是,如果您刚刚安装好 Linux 时,那么整个系统容量最大的应该是 /usr # 那个目录,而 /proc 虽然有列出容量,但是那个容量是在内存中,不占硬盘空间。