Linux磁盘概念

个人计算机常见的磁盘接口有两种, 分别是IDE不SATA接口,目前(2009)的主流已经是SATA接口了。

以IDE接口来说,由于一个IDE扁平电缆可以连接两个IDE装置,又通常主机都会提供两个IDE接口,因此最多可以接到四个IDE装置。 也就是说,如果你已经有一个光盘设备了,那么最多就只能再接三颗IDE接口的磁盘啰。 这两个IDE接口通常被称为IDE1(primary)及IDE2(secondary), 而每条扁平电缆上面癿IDE装置可以被区分为Master不Slave。这四个IDE装置癿文件名为:

以下的名称以及顺序都是固定的

IDE\Jumper Master Slave
IED1(primary) /dev/hda /dev/hdb
IED2(Secondary) /dev/hdc /dev/hdd

再以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

磁盘

一颗磁盘的数据主要存在其盘面上,磁盘面由磁柱构成,磁柱又可以分为很多的扇区。一颗磁盘最重要的扇区就是第一个扇区,这里记录着正科磁盘最重要的信息,主要有两个重要的信息:

  1. 主要启动记录区MBR(Master Boot Record):可以安装开机管理程序的地方,有466 Bytes
  2. 分割表(partition table): 记录整颗磁盘分割信息,有64bytes

由于分割表只有64bytes,所以只能存储四笔的分割信息,也就是说,磁盘的主要分割区只有四个。如果想要分割跟多的区的话,就只能通过extend延伸分割的方式来处理了。延伸分割的目的是使用额外的扇区来记录分割信息,延伸分割本身并不能被拿来格式化。 然后我们可以透过延伸分割所指向的那个区块继续作分割的记录。如下图所示:

上述的分割槽在Linux系统中的装置文件名分别如下:

  1. P1:/dev/hda1
  2. P2:/dev/hda2
  3. L1:/dev/hda5
  4. L2:/dev/hda6
  5. L3:/dev/hda7
  6. L4:/dev/hda8
  7. L5:/dev/hda9

要注意的是:如果延伸分割被破坏,所有逻辑分割将会被删除。因为逻辑分割的信息都记录在延伸分割里面。

磁盘需要分割的原因主要有两个:

  1. 数据的安全性:由于各个分割区之间是互相独立的,一个区数据坏了并不影响其他数据区的数据
  2. 系统性能的考虑:由于数据只能存在一个分割区上,因此当需要读取数据的时候,磁头只会搜索该区所在的磁柱的范围,是的磁臂的摆动幅度不会太大,从而加快了数据的读取。

开机流程与主要启动记录区(MBR)

计算机主板上面有两个东西,一个是CMOS,主要记录各项硬件参数且嵌入到主板上面的存储器,另外一个就是BIOS,写入到主板上面的一个韧体(也就是一个软件程序)。开机时,计算机会先运行BIOS,该程序会根据用户的设定来取得能够开机的硬盘,并且读取该硬盘的第一个扇区中的MBR区域,该位置存放的是最基本的开机管理程序(boot loader),此时BIOS运行结束,记下来就是开机管理程序的事情了。

开机管理程序的任务就是加载核心档案,由于开机管理程序是操作系统在安装的时候所提供的,所以他可以识别硬盘内的文件系统格式,从而加载核心档案,然后接下来就是核心档案的工作了,开机管理程序到此结束。接下来就是操作系统的任务了!

简答来说,这个开机的流程为:

  1. BIOS:开机主动执行的韧体,会识别可一个可开机的装置;
  2. MBR:第一个可开机装置的第一个扇区内的主要启动记录区,含有开机管理程序
  3. 开机管理程序(boot loader):一支可读取核心档案来执行的软件程序
  4. 核心档案:开始操作系统的功能。

至于多重引导开机的情况,可以参考下图:

在上图中我们可以发现,MBR的开机管理程序提供两个选单,选单一(M1)可以直接加载Windows癿核心档案来开机;选单事(M2)则是将开机管理工作交给第二个分割槽的启动扇区(boot sector)。当使用者在开机的时候选择选单二时,那么整个开机管理工作就会交给第二分割槽的开机管理程序了。当第二个开机管理程序启动后,该开机管理程序内(上图中)仅有一个开机选单,因此就能够使用Linu的核心档案来开机啰。 这就是多重引导的工作情况啦!我们将上图作个总结:

  1. 每个分割槽都拥有自己的启动扇区(boot sector)
  2. 图中的系统槽为第一及第二分割槽,
  3. 实际可开机的核心档案是放置到各分割槽内的!
  4. loader只会识识自己的系统槽内的可开机核心档案,以及其他loader而已;
  5. loader可直接指向或者是间接将管理权转交给另一个管理程序。