Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1352958
  • 博文数量: 245
  • 博客积分: 10021
  • 博客等级: 上将
  • 技术积分: 3094
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-12 14:51
文章存档

2011年(2)

2009年(152)

2008年(91)

我的朋友

分类:

2009-01-13 13:11:26

档案系统的简单操作

稍微瞭解了档案系统后,再来我们得要知道如何查询整体档案系统的总容量与每个目录所占用的容量啰! 此外,前两章谈到的档案类型中尚未讲的很清楚的连结档 (Link file) 也会在这一小节当中介绍的。

磁碟与目录的容量:

现在我们知道磁碟的整体资料是在 superblock 区块中,但是每个各别档案的容量则在 inode 当中记载的。 那在文字介面底下该如何叫出这几个资料呢?底下就让我们来谈一谈这两个指令:

    * df:列出档案系统的整体磁碟使用量;
    * du:评估档案系统的磁碟使用量(常用在推估目录所占容量)


    * df

[root@www ~]# df [-ahikHTm] [目录或档名]
选项与参数:
-a  :列出所有的档案系统,包括系统特有的 /proc 等档案系统;
-k  :以 KBytes 的容量显示各档案系统;
-m  :以 MBytes 的容量显示各档案系统;
-h  :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H  :以 M=1000K 取代 M=1024K 的进位方式;
-T  :连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
-i  :不用硬碟容量,而以 inode 的数量来显示

范例一:将系统内所有的 filesystem 列出来!
[root@www ~]# df
Filesystem      1K-blocks      Used Available Use% Mounted on
/dev/hdc2         9920624   3823112   5585444  41% /
/dev/hdc3         4956316    141376   4559108   4% /home
/dev/hdc1          101086     11126     84741  12% /boot
tmpfs              371332         0    371332   0% /dev/shm
# 在 Linux 底下如果 df 没有加任何选项,那么预设会将系统内所有的
# (不含特殊记忆体内的档案系统与 swap) 都以 1 Kbytes 的容量来列出来!
# 至于那个 /dev/shm 是与记忆体有关的挂载,先不要理他!

范例二:将容量结果以易读的容量格式显示出来
[root@www ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hdc2             9.5G  3.7G  5.4G  41% /
/dev/hdc3             4.8G  139M  4.4G   4% /home
/dev/hdc1              99M   11M   83M  12% /boot
tmpfs                 363M     0  363M   0% /dev/shm
# 不同于范例一,这里会以 G/M 等容量格式显示出来,比较容易看啦!

范例三:将系统内的所有特殊档案格式及名称都列出来
[root@www ~]# df -aT
Filesystem    Type 1K-blocks    Used Available Use% Mounted on
/dev/hdc2     ext3   9920624 3823112   5585444  41% /
proc          proc         0       0         0   -  /proc
sysfs        sysfs         0       0         0   -  /sys
devpts      devpts         0       0         0   -  /dev/pts
/dev/hdc3     ext3   4956316  141376   4559108   4% /home
/dev/hdc1     ext3    101086   11126     84741  12% /boot
tmpfs        tmpfs    371332       0    371332   0% /dev/shm
none   binfmt_misc         0       0         0   -  /proc/sys/fs/binfmt_misc
sunrpc  rpc_pipefs         0       0         0   -  /var/lib/nfs/rpc_pipefs
# 系统里面其实还有很多特殊的档案系统存在的。那些比较特殊的档案系统几乎
# 都是在记忆体当中,例如 /proc 这个挂载点。因此,这些特殊的档案系统
# 都不会占据硬碟空间喔! ^_^

范例四:将 /etc 底下的可用的磁碟容量以易读的容量格式显示
[root@www ~]# df -h /etc
Filesystem            Size  Used Avail Use% Mounted on
/dev/hdc2             9.5G  3.7G  5.4G  41% /
# 这个范例比较有趣一点啦,在 df 后面加上目录或者是档案时, df
# 会自动的分析该目录或档案所在的 partition ,并将该 partition 的容量显示出来,
# 所以,您就可以知道某个目录底下还有多少容量可以使用了! ^_^

范例五:将目前各个 partition 当中可用的 inode 数量列出
[root@www ~]# df -ih
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/hdc2               2.5M    147K    2.3M    6% /
/dev/hdc3               1.3M      46    1.3M    1% /home
/dev/hdc1                26K      34     26K    1% /boot
tmpfs                    91K       1     91K    1% /dev/shm
# 这个范例则主要列出可用的 inode 剩余量与总容量。分析一下与范例一的关系,
# 你可以清楚的发现到,通常 inode 的数量剩余都比 block 还要多呢

先来说明一下范例一所输出的结果讯息为:

    * Filesystem:代表该档案系统是在哪个 partition ,所以列出装置名称;
    * 1k-blocks:说明底下的数字单位是 1KB 呦!可利用 -h 或 -m 来改变容量;
    * Used:顾名思义,就是使用掉的硬碟空间啦!
    * Available:也就是剩下的磁碟空间大小;
    * Use%:就是磁碟的使用率啦!如果使用率高达 90% 以上时, 最好需要注意一下了,免得容量不足造成系统问题喔!(例如最容易被灌爆的 /var/spool/mail 这个放置邮件的磁碟)
    * Mounted on:就是磁碟挂载的目录所在啦!(挂载点啦!)

由于 df 主要读取的资料几乎都是针对一整个档案系统,因此读取的范围主要是在 Superblock 内的资讯, 所以这个指令显示结果的速度非常的快速!在显示的结果中你需要特别留意的是那个根目录的剩余容量! 因为我们所有的资料都是由根目录衍生出来的,因此当根目录的剩余容量剩下 0 时,那你的 Linux 可能就问题很大了。
Tips:
说个陈年老笑话!鸟哥还在念书时,别的研究室有个管理 Sun 工作站的研究生发现, 他的硬碟明明还有好几 GB ,但是就是没有办法将光碟内几 MB 的资料 copy 进去, 他就去跟老板讲说机器坏了!嘿!明明才来维护过几天而已为何会坏了! 结果他老板就将维护商叫来骂了 2 小时左右吧!

后来,维护商发现原来硬碟的‘总空间’还有很多, 只是某个分割槽填满了,偏偏该研究生就是要将资料 copy 去那个分割槽!呵呵! 后来那个研究生就被命令‘再也不许碰 Sun 主机’了~~    

另外需要注意的是,如果使用 -a 这个参数时,系统会出现 /proc 这个挂载点,但是里面的东西都是 0 ,不要紧张! /proc 的东西都是 Linux 系统所需要载入的系统资料,而且是挂载在‘记忆体当中’的, 所以当然没有占任何的硬碟空间啰!

至于那个 /dev/shm/ 目录,其实是利用记忆体虚拟出来的磁碟空间! 由于是透过记忆体模拟出来的磁碟,因此你在这个目录底下建立任何资料档案时,存取速度是非常快速的!(在记忆体内工作) 不过,也由于他是记忆体模拟出来的,因此这个档案系统的大小在每部主机上都不一样,而且建立的东西在下次开机时就消失了! 因为是在记忆体中嘛!

    * du

[root@www ~]# du [-ahskm] 档案或目录名称
选项与参数:
-a  :列出所有的档案与目录容量,因为预设仅统计目录底下的档案量而已。
-h  :以人们较易读的容量格式 (G/M) 显示;
-s  :列出总量而已,而不列出每个各别的目录占用容量;
-k  :以 KBytes 列出容量显示;
-m  :以 MBytes 列出容量显示;

范例一:列出目前目录下的所有档案容量
[root@www ~]# du
8       ./test4     <==每个目录都会列出来
8       ./test2
....中间省略....
12      ./.gconfd   <==包括隐藏档的目录
220     .           <==这个目录(.)所占用的总量
# 直接输入 du 没有加任何选项时,则 du 会分析‘目前所在目录’
# 的档案与目录所占用的硬碟空间。但是,实际显示时,仅会显示目录容量(不含档案),
# 因此 . 目录有很多档案没有被列出来,所以全部的目录相加不会等于 . 的容量喔!
# 此外,输出的数值资料为 1K 大小的容量单位。

范例二:同范例一,但是将档案的容量也列出来
[root@www ~]# du -a
12      ./install.log.syslog   <==有档案的列表了
8       ./.bash_logout
8       ./test4
8       ./test2
....中间省略....
12      ./.gconfd
220     .

范例三:检查根目录底下每个目录所占用的容量
[root@www ~]# du -sm /*
7       /bin
6       /boot
.....中间省略....
0       /proc
.....中间省略....
1       /tmp
3859    /usr     <==系统初期最大就是他了啦!
77      /var
# 这是个很常被使用的功能~利用万用字元 * 来代表每个目录,
# 如果想要检查某个目录下,那个次目录占用最大的容量,可以用这个方法找出来
# 值得注意的是,如果刚刚安装好 Linux 时,那么整个系统容量最大的应该是 /usr
# 而 /proc 虽然有列出容量,但是那个容量是在记忆体中,不占硬碟空间。

与 df 不一样的是,du 这个指令其实会直接到档案系统内去搜寻所有的档案资料, 所以上述第三个范例指令的运作会执行一小段时间!此外,在预设的情况下,容量的输出是以 KB 来设计的, 如果你想要知道目录占了多少 MB ,那么就使用 -m 这个参数即可啰!而, 如果你只想要知道该目录占了多少容量的话,使用 -s 就可以啦!

阅读(1273) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~