认识硬碟:
让我们再来复习一下 硬碟 里面有什么东西值得我们来讨论的!
·物理组成:
就物理组成来说,硬碟是由多个硬碟盘所组成的,而每一个硬碟盘上面都有个磁头( Head )在进行该硬碟盘上面的读写工作,而当磁头固定不动,硬碟盘转一圈所画出来的圆就是所谓的磁轨( Track ),全部硬碟盘上面同一个磁轨组成了磁柱( Cylinder ),这个磁柱也是磁碟分割( partition )时,最小的单位了!另外,由圆心向半径方向划直线,而每个 Track 上面细分成一个一个的磁区( Sector )那就是最小的磁碟储存物理量了,一个 Sector 通常为 512 Bytes 。这就是整个硬碟的构造啰,那么如果以硬碟的 filesystem 来做为检视呢?你可以简单的这样想啦,一个 Partition 当中就具有一个 filesystem ( 档案系统 ) 啰!那么一个 partition 当中能不能具有两个 filesystem 呢?理论上应该是不行的!因为每个档案系统都有其独特的支援方式,例如 Linux 的 ext3 就无法被 Windows 系统所读取!而你将一个 partition 格式化的时候,总不能格式化为 ext3 也同时格式化为 fat32 吧?!那是不可能的啊!底下来谈一谈关于档案系统的相关功能吧!
·Filesystem
在进行磁碟格式化或者是分割的时候,都会需要知道磁碟的一些基本的名词定义,主要有:
o 主要开机磁区( Master Boot Recorder, MBR ):主要开机磁区可以说是一颗硬碟里面最重要的地方了,怎么说呢?因为他记录了所有硬碟的分割资讯,以及开机的时候可以进行开机管理程式的写入等等,如果一颗硬碟的 MBR 死掉了,那么这颗硬碟几乎就可以说是寿终正寝了~那么 MBR 有什么限制呢?他最大的限制来自于他的大小不够大到储存所有的资讯,因此,他仅提供最多四个 partition 的记忆,这就是所谓的 Primary (P)与 Extended (E)磁区最多相加只能有四个的原因了。所以说,如果你预计分割超过 4 个 partition 的话,那么势必需要使用 3P + 1E ,并且将所有的剩余空间都拨给 Extended 才行( 记得呦! Extended 最多只能有一个 ),否则只要 3P + E 之后还有剩下的空间,那么那些容量将成为废物而浪费了?所以结论就是『如果您要分割硬碟时,并且已经预计规划使用掉 MBR 所提供的 4 个 partition ( 3P + E 或 4P )那么磁碟的全部容量需要使用光,否则剩下的容量也不能再被使用』。不过,如果您仅是分割出 1P + 1E 的话,那么剩下的空间就还能再分割两个 partition !
o 区块( Block ):档案在磁碟当中会被储存在一个固定的大小区块中,那就是 Block ,而 Block 的大小通常为 2 的次方,其中,由于磁碟的磁区物理量通常为 0.5K ( 512 Bytes ),所以 Block 通常规划为 0.5 K 的倍数,例如 EXT2 预设 Block 为 4K 即是一例!其中需要特别留意的地方是,一个 Block 最多仅能容纳一个档案,所以当一个档案不足 4K 时,例如大小仅为 1K ,那么剩下的 3 K 容量将会被浪费掉,这与 inode 也有一定的相关性!因此,在规划您的磁碟时,需要留意到您主机的用途来进行规划较佳!与此同时,若 Block 规划的太小,则磁碟的 Block 数目会大增,而造成 inode 在指向 block 时候的一些搜寻时间的增加,又会造成大档案读写方面的效率较差,这也与 inode 有一定程度的相关性呢!需要特别留意的是:『当系统读取了某一个档案,则该档案所在的区块资料会被载入到记忆体当中,所以该磁碟区块就会被放置在主记忆体的缓冲快取区中,若这些区块的资料被改变时,刚开始资料仅有主记忆体的区块资料会被改变,而且在缓冲区当中的区块资料会被标记为” Dirty “,这个时候磁碟实体区块尚未被修正!所以亦即表示,这些” Dirty “区块的资料必需写到磁碟当中,以维持磁碟实体区块上的资料与主记忆体中的区块资料的一致性。』这也是为什么当 Linux 系统不正常关机,或者是突发性的跳电时,总是会造成系统在磁碟检验上面大花时间的原因了!
o Superblock:当我们在进行磁碟分割( partition )时,每个磁碟分割槽( partition )就是一个档案系统( filesystem ),而每个档案系统开始的位置的那个 block 就称为 superblock ,superblock的作用是储存像是档案系统的大小、空的和填满的区块,以及他各自的总数和其他诸如此类的资讯等等,这也就是说,当您要使用这一个磁碟分割槽( 或者说是档案系统 )来进行资料存取的时候,第一个要经过的就是 superblock 这个区块了,所以啰, superblock 坏了,您的这个磁碟槽大概也就回天乏术了!
o Inode: 在
Linux 档案与目录管理 当中,我们提到了很多的 inode 概念,这里在加重补强一下说明:对于档案系统而言一个inode是在inode tables 中的一个项目。Inode包含了所有档案有关的资讯例如名称、大小、连接的数量、资料建立之日期,修改及存取的时间。它也包含了磁碟区块的档案指向(pointer)。pointer是用来记录档案被储存在何处。对于 inode 的规划方面,我们可以使用 mke2fs 来进行。
大致上硬碟就有这些东西,您还得了解每一个 filesystem 就是一个磁碟分割槽,免得到时候底下讲的东西太混乱时,造成您的困扰,那就不好意思啦!
查看硬碟或目录的容量
好了!那么在文字介面底下有什么方法可以查看目前的磁碟最大容许容量、已经使用掉的容量、目前所在目录的已使用容量?还有还有,怎么知道目前目录底下使用掉的硬碟容量呢?以及如何查询目前的 inodes 数目?呵呵!底下我们就来谈一谈主要的两个指令:
df 查看以挂载磁碟的总容量、使用容量与 inode 等等
du 查看档案使用掉的容量有多少?
· df
语法:
[root @tsai /root ]# df -[ikm] 参数说明: -i: 使用 i-nodes 显示结果 -k: 使用 KBytes 显示结果 -m: 使用 MBytes 显示结果 范例: [root @test /root ]# df -k <==以 KB 显示磁碟空间 Filesystem 1k-blocks Used Available Use% Mounted on /dev/hda1 2118832 904600 1106600 45% / /dev/hda3 497861 37525 434632 8% /disk1 none 31220 0 31220 0% /dev/shm /dev/hda5 101089 4127 91743 5% /proxy1 /dev/hda6 101089 4127 91743 5% /proxy2 /dev/hda2 1004052 38360 914688 5% /var /dev/fd0 1423 1405 19 99% /mnt/floppy
说明:
这是用来显示目前磁碟空间的指令!需要注意的是,由于我们的档案或者是外挂的磁碟都是加在『 / 』底下,所以当根目录没有空间的时后,嘿嘿!你的 Linux 系统大概就是挂了吧~(说个笑话!当初我们系上有个研究生在管理 Sun 的工作站,是别研究室的,他的硬碟明明有好几 GB ,但是就是没有办法将几 MB 的资料 copy 进去,他就去跟老板讲说机器坏了!嘿!明明才来维护过几天而已为何会坏了!结果老板将维护商叫来骂了 2 小时左右吧!后来,维护商发现原来硬碟的『总空间』还有很多,只是某个磁区填满了,偏偏该研究生就是要将资料 copy 去那个磁区!呵呵!后来那个研究生就被命令『再也不许碰 Sun 主机』了~~)当然啰!你可以将你的资料放置在加挂的硬碟中,那么如何知道目前哪一个磁碟还有多少空间呢?!
这里要请大家再复习一下,我们的硬碟磁区规划中, primary 磁区每一颗硬碟只允许 4 个,其他的就放置在 Extended 磁区中了!而,硬碟的代号与 IDE 的插槽是有关系的!如果忘记了,那就回去
安装 Linux 那一章复习一下吧!好了!假设我只有一棵硬碟,且放在 IDE 的 mater ,那么我的硬碟就是 /dev/hda 啰!而在这颗硬碟中的分割磁区就可以由 /dev/hda1 开始向上加!
OK,那么使用 df -k 之后,出现的上面的资料中,可以知道我的硬碟更分为 /dev/hda1, /dev/hda2, /dev/hda3, /dev/hda5 与 /dev/hda6 ,咦! /dev/hda4 跑去哪里了!呵呵!其实 /dev/hda4 通常就是 Extended 磁区啦!而后面的 /dev/hda5, /dev/hda6 等磁区就是由 /dev/hda4 所切出来的!所以 /dev/hda5 + /dev/hda6 = /dev/hda4 !当然,如果还有没有显示出来的,例如 Swap ,则 /dev/hda4 还有可能更大呦!
那么来解释一下上面的资料吧!
· Filesystem:说的是磁区啦!另外,如果你有加挂软碟的话,那么就会出现如上表中最后一行啰!
· 1k-blocks:说明底下的数字单位是 1KB 呦!如果你使用 df -m 则这一栏会出现 1M-blocks 啰!
· Used :顾名思义,就是使用掉的硬碟空间啦!
· Available :也就是剩下的磁碟空间大小;
· Use% :就是磁碟的使用率啦!如果使用率高达 90% 以上时,最好需要注意一下了,免得容量不足造成系统问题(例如最容易被灌爆的 /var/spool/mail 这个放置邮件的磁碟!)。
· Mounted on :就是磁碟挂载的目录所在啦!例如 /dev/hda5 是挂载在 /proxy1 底下,而 /var 是 /dev/hda2 这个磁区啰!
另外,需要注意的是,有的时后某些系统会出现 /proc 这个磁区,但是里面的东西都是 0 ,不要紧张! /proc 的东西都是 Linux 系统所需要载入的系统资料,而且是挂载在『记忆体当中』的,有点像是以前 DOS 年代的虚拟硬碟啦!所以当然没有占任何的硬碟空间啰!
· du
语法:
[root @test /root ]# du [-abckms] [目录名称] 参数说明: [目录名称] 可以省略,如果省略的话,表示要统计目前所在目录的档案容量 -a :全部的档案与目录都列出来!预设值是指列出目录的值!