linux磁盘分区知识

摘抄自鸟哥的linux私房菜基础学习篇第三版

磁盘分区

学习的重点是为了要安装Linux,那Linux系统是安装在计算机组件的那个部分呢?就是磁盘啦!所以我们当然要来认识一下磁盘先。 我们知道一块磁盘是可以被分割成多个分区(partition),以旧有的Windows观点来看,你可能会有一块磁盘并且将他分割成为C:, D:, E:盘对吧!那个C, D, E就是分区(partition)啰。但是Linux的设备都是以文件的型态存在,那分区的文件名又是什么?如何进行磁盘分区,磁盘分区有哪些限制?是我们文章所要探讨的内容。

磁盘连接的方式与设备文件名的关系

个人计算机常见的磁盘接口有两种, 分别是IDE与SATA接口,目前(2009)的主流已经是SATA接口了,但是老一点的主机其实大部分还是使用IDE接口。 我们称呼可连接到IDE接口的装置为IDE装置,不管是磁盘还是光盘设备。 以IDE接口来说,由于一个 IDE扁平电缆可以连接两个IDE装置,又通常主机都会提供两个IDE接口,因此最多可以接到四个IDE装置。 也就是说,如果你已经有一个光盘设备了,那么最多就只能再接三块IDE接口的磁盘啰。这两个IDE接口通常被称为IDE1(primary)及IDE2(secondary), 而每条扁平电缆上面的IDE装置可以被区分为Master(主设备)与Slave(从设备)。这四个IDE装置的文件名为:

IDE\Jumper

 Master

 Slave

 

 IDE1(Primary)

 /dev/hda

 /dev/hdb

 

 IDE2(Secondary)

 /dev/hdc

 /dev/hdd

 

例题: 假设你的主机仅有一块IDE接口的磁盘,而这一块磁盘接在IDE2的Master上面,请问他在Linux操作系统里面的装置文件名为何?

答: 比较上表的装置文件名对照,IDE2的Master的设备文件名为/dev/hdc

再以SATA接口来说,由于SATA/USB/SCSI等磁盘接口都是使用SCSI模块来驱动癿, 因此这些接口的磁盘装置文件名都是/dev/sd[a-p]的格式。 但是与IDE接口不同的是,SATA/USB接口的磁盘根本就没有一定的顺序,那如何决定他的设备文件名呢? 这个时候就得要根据Linux核心侦测到磁盘的顺序了!这里以底下的例子来让你了解。

例题:

如果你癿PC上面有两个SATA磁盘以及一个USB磁盘,而主板上面有六个SATA的插槽。这两个SATA磁盘分别安插在主板上的SATA1, SATA5插槽上, 请问这三个磁盘在Linux中的装置文件名为何?

答: 由于是使用侦测到的顺序来决定装置文件名,并非与实际插槽代号有关,因此装置的文件名如下:

1. SATA1插槽上的设备名:/dev/sda

2. SATA5插槽上的设备名:/dev/sdb

3. USB磁盘(开机完成后才被系统识别):/dev/sdc

通过上面的介绍后,你应该知道了在Linux系统下的各种不同接口的磁盘的设备文件名了。 OK!好像没问题了!才不是呢~问题很大呦! 因为如果你的磁盘被分割成两个分区,那么每个分区的装置文件名又是什么?在了解这个问题之前,我们先来复习一下磁盘的组成,因为现今磁盘的分区与它的物理组成很有关系。

磁盘的组成复习

磁盘的组成主要由盘片、机械手臂、磁头与主轴马达所组成, 而数据的写入其实是在盘片上面。盘片上面又可细分出扇区(Sector)与磁柱(Cylinder)两种单位, 其中扇区每个为512bytes那么大。假设磁盘只有一个盘片,那么盘片如图所示:


那么是否每个扇区都一样重要呢?其实整块磁盘第一个扇区特别的重要,因为他记录了整块磁盘的重要信息!磁盘的第一个扇区主要记录了两个重要的信息,分别是:

主引导分区(Master Boot Record, MBR):可以安装引导加载程序的地方,有446bytes。

分区表(partitiontable):记录整块硬盘分区的状态,有64 bytes

MBR是很重要的,因为当系统在开机的时候会主动去读取这个区块的内容,这样系统才会知道你的程序放在哪里且该如何进行开机。如果你要安装多重引导的系统,MBR这个区块的管理就非常非常的重要了! ^_^那么分区表又是啥?

其实你刚刚拿到整块硬盘就像一根原木,你必须要在这根原木上面切割出你想要的区段, 这个区段才能够再制作成为你想要的家具!如果没有进行切割,那么原木就不能被有效的使用。同样的道理,你必须要针对的硬盘进行分割,这样硬盘才可以被你使用!

 

磁盘分区表(partitiontable)

但是硬盘总不能真的拿锯子来切切割割吧?那硬盘还真的是会坏掉去!那怎么办?在前一小节的图示中,我们有看到『开始与结束柱面』吧?那是文件系统的最小单位,也就是分割分区最小单位啦!没有错, 我们就是利用参考对照磁柱号码的方式来处理啦! 在分区表所在的64 bytes容量中,总共分为四组记录区,每组记录区记录了该区段的启始与结束的磁柱号码。 若将硬盘以长条形来看,然后将磁柱以柱形图来看,那举那64 bytes的记录区段有点像底下的图示:


假设上面的硬盘装置文件名为/dev/hda时,那么这四个分区在Linux系统中的设备文件名如下所示, 重点在于在每个设备名后面会再接一个数字,这个数字与该分区所在的位置有关喔!

P1:/dev/hda1

P2:/dev/hda2

P3:/dev/hda3

P4:/dev/hda4

上图中我们假设硬盘只有400个磁柱,共分割成为四个分区,第四个分区所在为第301到400号磁柱的范围。 当你的操作系统为Windows时,那么第一到第四个分区的代号应该就是C, D, E, F。当你有资料要写入F分区时, 你的数据会被写入这块磁盘的301~400号磁柱之间的意思。

由于分区表就只有64 bytes而已,最多叧能容纳四组分割的记录,这四个分区的记录被称为主要(Primary)或扩展(Extended)分区。根据上面的图示与说明,我们可以得到几个重点信息:

其实所谓的『分区』叧是针对那个64 bytes的分区表进行设定而已!

硬盘默任的分区表仅能写入四组分区信息

这四组分区信息我们称为主要(Primary)或扩展(Extended)分区

分区的最小单位为磁柱(cylinder)

当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据的处理

咦!你会不会突然想到,为啥要分割啊?基本上你可以这样思考分割的角度:

1. 数据的安全性:因为每个分区数据是分开的!所以,当你需要将某个分区的数据重整时,例如你要将计算机中Windows的C盘重新安装一次系统时, 可以将其他重要数据移动到其他分区,例如将邮件、桌面数据移动到D盘去,那么C么重装系统不会影响到D盘! 所以善用分区表,可以让你的数据更安全。

2. 系统的性能考虑:由于分区表将数据集中在某个柱面的区段,例如上图当中第一个分区位于柱面号码1~100号,如此一来当有数据要读取自该分区时,磁盘只会搜寻前面1~100的柱面范围,由于数据集中了,将有助于数据读取的速度与性能!所以说,分区是很重要的!

既然分区表只有记录四组数据的空间,那么是否代表我一块硬盘最多叧能分割出四个分区?当然不是啦!有经验的朋友都知道,你可以将一块硬盘分割成十个以上的分区的!那又是如何达到的呢?在Windows/Linux系统中, 我们是透过刚刚谈到癿扩展分割(Extended)的方式处理的啦!扩展分割的想法是: 既然第一个分区所在的分区表叧能记录四笔数据, 那我可否利用额外的分区来记录更多的分区信息?实际上如图所示:


在上图当中,我们知道硬盘的四个分区记录仅使用到两个,P1为主分区,而P2则为扩展分割。请注意,扩展分区的目的是使用额外的分区来记录分区信息,扩展分区本身并不能被拿来格式化。然后我们可以透过扩展分区所指向的那个区块继续作分区的记录。

 如上图右下方那个区块有继续分出五个分区, 这五个由扩展分区继续切出来的分区,就被称为逻辑分区 (logical partition)。 同时注意一下,由于逻辑分区是由扩展分割继续分区出来的,所以他可以使用的柱面范围就是扩展分割所设定的范围喔!也就是图中的101~400啦! 同样的,上述的分区在Linux系统中的装置文件名分别如下:

P1:/dev/hda1

P2:/dev/hda2

L1:/dev/hda5

L2:/dev/hda6

L3:/dev/hda7

L4:/dev/hda8

L5:/dev/hda9

仔细看看,怎么设备文件名没有/dev/hda3和/dev/hda4呢?因为前面四个号码都是保留给Primary或Extended用的嘛! 所以逻辑分区的设备名称号码就由5号开始了!这是个很重要的特性,不能忘记喔!

关于主分区,扩展分区,逻辑分区的特性我们做个简单的定义:

主分区或者扩展分区最多可以有四个(硬盘的限制)

扩展分区最多只能有一个(操作系统的限制)

逻辑分区是由扩展分区持续切割出来的分区

能够被格式化作为数据访问的分区为主分区和逻辑分区。扩展分区无法格式化

逻辑分区的数量依操作系统而不同,在Linux系统中,IDE硬盘最多有59个逻辑分区(5号到63号), SATA硬盘则有11个逻辑分区 (5号到15号)。

事实上,分区是个很麻烦的东西,因为他是以柱面为单位的『连续』磁盘空间, 且扩展分区又是个类似独立的磁盘空间,所以在分区的时候得要特别注意。我们举下面的例子来解释一下好了:

例题: 在Windows操作系统当中,如果你想要将D与E盘整合成为一个新的分区,而如果有两种分区的情况如下图所示, 图中的特殊颜色区块为D与E盘的示意,请问这两种方式是否均可将D与E盘整合成为一个新的分区?


答:上图可以整合:因为上图的D与E属于扩展分区内的逻辑分区,因此只要将两个分区删除,然后再重新建立一个新的分区, 就能够在不影响其他分区情况下,将两个分区容量整合成为一个。

下图不可整合:因为D与E分属于主分区和逻辑分区,两者不能够整合在一起。除非将扩展分区破坏掉后再重新分区。 但如此一来会影响到所有的逻辑分区,要注意的是:如果扩展分区被破坏,所有逻辑分区将会被删除。因为逻辑分区的信息都记录在扩展分区里面嘛!

由于第一个扇区所记录的分区表与MBR是这么重要,几乎只要读取硬盘都会由这个扇先读起。因此,如果整块硬盘的第一个扇区(就是MBR与partition table所在扇区)物理坏掉了,那这个硬盘大概就没有用了!因为系统如果找不到分区表,怎么知道如何读取柱面区间呢?您说是吧!底下还有一些例题您可以思考看看:

例题: 如果我想将一块大硬盘『暂时』分割成为四个partitions,同时还有其他的剩余容量可以让我在未来的时候进行规划, 我能不能分区四个Primary?若不行,那么你建议该如何分区?

 答: 由于Primary+Extended最多只能有四个,其中Extended最多只能有一个,这个例题想要分割出四个分区还要预留剩余容量, 因此P+P+P+P的分区方式是不适合的。因为如果使用到四个P,则即使硬盘还有剩余容量, 因为无法再继续分区,所以剩余容量就被浪费掉了。

假设你想要将所有的四条记录都花光,那举P+P+P+E是比较适合的。所以可以用

的四个partitions有3个主分区及一个逻辑分区, 剩余的容量在扩展分区中。

如果你要分区超过4个以上时,一定要有Extended分区,而且必须将所有剩下的空间都分配给Extended, 然后再以logical的分割来规划Extended的空间。 另外,考虑到磁盘的连续性,一般建议将Extended的柱面号码分配在最后面的柱面内。

例题: 我能不能仅分割出一个Primary与一个Extended即可?

 答: 当然可以,这也是早期Windows操作系统惯用的手法!此外,逻辑分区的号码在IDE可达63号,SATA则可达15号, 因此仅一个主分区和扩展分区即可。因为扩展分区可继续被分区为逻辑分区。

例题: 假如我的PC有两块SATA硬盘,我想在第二块硬盘分割出6个可用的分区 (可以被格式化用来访问数据), 那每个分区在Linux系统下的设备文件名为何?且分区类型各为何?至少写出两种不同的分区方式。

答: 由于P(primary)+E(extended)最多只能有四个,其中E最多只能有一个。现在题目要求6个可用的分区,因此不可能分出四个P。 底下我们假设两种环境,一种是将前四号全部用完,一种是仅花费一个P及一个E的情况:

 P+P+P+E的环境:


分区示意图 实际可用的是/dev/sdb1,/dev/sdb2, /dev/sdb3, /dev/sdb5, /dev/sdb6, /dev/sdb7这六个,至于/dev/sdb4这个扩展分区本身仅是提供来给逻辑分区创建使用。

P+E的环境:


注意到了吗?因为1~4号是保留给主分区或者扩展分区,因此第一个逻辑分区一定是由5号开始的!再次强调啊! 所以/dev/sdb3, /dev/sdb4就会被保留下来没有用到了!


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值