熟悉硬盘:
让我们再来复习一下 硬盘 里面有什么东西值得我们来讨论的!
·物理组成:
就物理组成来说,硬盘是由多个硬盘盘所组成的,而每一个硬盘盘上面都有个磁头( 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 系统不正常关机,或者是突发性的跳电时,总是会造成系统在磁盘检验上面大花时间的原因了!
oSuperblock:当我们在进行磁盘分割( partition )时,每个磁盘分割槽( partition )就是一个档案系统( filesystem ),而每个档案系统开始的位置的那个 block 就称为 superblock ,superblock的作用是储存像是档案系统的大小、空的和填满的区块,以及他各自的总数和其它诸如此类的信息等等,这也就是说,当您要使用这一个磁盘分割槽( 或者说是档案系统 )来进行资料存取的时候,第一个要经过的就是 superblock 这个区块了,所以啰, superblock 坏了,您的这个磁盘槽大概也就回天乏术了!
oInode: 在 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
说明:
这是用来显示目前磁盘空间的指令!需要注重的是,由于我们的档案或者是外挂的磁盘都是加在『 / 』底下,所以当根目录没有空间的时后,嘿嘿!你的 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 :全部的档案与目录都列出来!默认值是指列出目录的值! -b :列出的值以 bytes 输出 -c :最后加总 total ! -k :列出的值以 KB 输出 -m:列出的值以 MB 输出 -s :只列出最后加总的值! 范例: [root