最近升级日期:2009/08/06
2. 磁盘分区
2.1 磁碟连接的方式与装置档名的关系 2.2 磁碟的组成复习 2.3 磁盘分区表(partition table) 2.4 启动流程与主要启动记录区(MBR) 2.5 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装置的档名为:
再以SATA介面来说,由於SATA/U盘/SCSI等磁碟介面都是使用SCSI模块来驱动的, 因此这些介面的磁碟装置档名都是/dev/sd[a-p]的格式。 但是与IDE介面不同的是,SATA/U盘介面的磁碟根本就没有一定的顺序,那如何决定他的装置档名呢? 这个时候就得要根据Linux核心侦测到磁碟的顺序了!这里以底下的例子来让你了解罗。
通过上面的介绍后,你应该知道了在Linux系统下的各种不同介面的磁碟的装置档名了。 OK!好像没问题了呦!才不是呢~问题很大呦! 因为如果你的磁碟被分割成两个分割槽,那么每个分割槽的装置档名又是什么?在了解这个问题之前,我们先来复习一下磁碟的组成, 因为现今磁碟的分割与他物理的组成很有关系! 磁碟的组成复习 我们在计算机概论谈过磁碟的组成主要有磁碟盘、机械手臂、磁碟读取头与主轴马达所组成, 而数据的写入其实是在磁碟盘上面。磁碟盘上面又可细分出磁区(Sector)与磁柱(Cylinder)两种单位, 其中磁区每个为512bytes那么大。假设磁碟只有一个磁碟盘,那么磁碟盘有点像底下这样: 图2.2.1、磁碟盘组成示意图 那么是否每个磁区都一样重要呢?其实整颗磁碟的第一个磁区特别的重要,因为他记录了整颗磁碟的重要资讯! 磁碟的第一个磁区主要记录了两个重要的资讯,分别是:
MBR是很重要的,因为当系统在启动的时候会主动去读取这个区块的内容,这样系统才会知道你的程序放在哪里且该如何进行启动。 如果你要安装多重启动的系统,MBR这个区块的管理就非常非常的重要了! ^_^ 那么分割表又是啥?其实你刚刚拿到的整颗硬盘就像一根原木,你必须要在这根原木上面切割出你想要的区段, 这个区段才能够再制作成为你想要的家具!如果没有进行切割,那么原木就不能被有效的使用。 同样的道理,你必须要针对你的硬盘进行分割,这样硬盘才可以被你使用的!
磁盘分区表(partition table) 但是硬盘总不能真的拿锯子来切切割割吧?那硬盘还真的是会坏掉去!那怎办?在前一小节的图示中, 我们有看到『开始与结束磁柱』吧?那是文件系统的最小单位,也就是分割槽的最小单位啦!没有错, 我们就是利用参考对照磁柱号码的方式来处理啦! 在分割表所在的64 bytes容量中,总共分为四组记录区,每组记录区记录了该区段的启始与结束的磁柱号码。 若将硬盘以长条形来看,然后将磁柱以直条图来看,那么那64 bytes的记录区段有点像底下的图示: 图2.3.1、磁盘分区表的作用示意图 假设上面的硬盘装置档名为/dev/hda时,那么这四个分割槽在Linux系统中的装置档名如下所示, 重点在於档名后面会再接一个数字,这个数字与该分割槽所在的位置有关喔!
上图中我们假设硬盘只有400个磁柱,共分割成为四个分割槽,第四个分割槽所在为第301到400号磁柱的范围。 当你的操作系统为Windows时,那么第一到第四个分割槽的代号应该就是C, D, E, F。当你有数据要写入F槽时, 你的数据会被写入这颗磁碟的301~400号磁柱之间的意思。 由於分割表就只有64 bytes而已,最多只能容纳四笔分割的记录, 这四个分割的记录被称为主要(Primary)或延伸(Extended)分割槽。 根据上面的图示与说明,我们可以得到几个重点资讯:
咦!你会不会突然想到,为啥要分割啊?基本上你可以这样思考分割的角度:
既然分割表只有记录四组数据的空间,那么是否代表我一颗硬盘最多只能分割出四个分割槽?当然不是啦!有经验的朋友都知道, 你可以将一颗硬盘分割成十个以上的分割槽的!那又是如何达到的呢?在Windows/Linux系统中, 我们是透过刚刚谈到的扩展分配(Extended)的方式来处理的啦!扩展分配的想法是: 既然第一个磁区所在的分割表只能记录四笔数据, 那我可否利用额外的磁区来记录更多的分割资讯?实际上图示有点像底下这样: 图2.3.2、磁盘分区表的作用示意图 在上图当中,我们知道硬盘的四个分割记录区仅使用到两个,P1为主要分割,而P2则为扩展分配。请注意, 扩展分配的目的是使用额外的磁区来记录分割资讯,扩展分配本身并不能被拿来格式化。 然后我们可以透过扩展分配所指向的那个区块继续作分割的记录。 如上图右下方那个区块有继续分割出五个分割槽, 这五个由扩展分配继续切出来的分割槽,就被称为逻辑分割槽(logical partition)。 同时注意一下,由於逻辑分割槽是由扩展分配继续分割出来的,所以他可以使用的磁柱范围就是扩展分配所配置的范围喔! 也就是图中的101~400啦! 同样的,上述的分割槽在Linux系统中的装置档名分别如下:
仔细看看,怎么装置档名没有/dev/hda3与/dev/hda4呢?因为前面四个号码都是保留给Primary或Extended用的嘛! 所以逻辑分割槽的装置名称号码就由5号开始了!这是个很重要的特性,不能忘记喔! 主要分割、扩展分配与逻辑分割的特性我们作个简单的定义罗:
事实上,分割是个很麻烦的东西,因为他是以磁柱为单位的『连续』磁碟空间, 且扩展分配又是个类似独立的磁碟空间,所以在分割的时候得要特别注意。我们举底下的例子来解释一下好了:
由於第一个磁区所记录的分割表与MBR是这么的重要,几乎只要读取硬盘都会先由这个磁区先读起。 因此,如果整颗硬盘的第一个磁区(就是MBR与partition table所在的磁区)物理实体坏掉了,那这个硬盘大概就没有用了! 因为系统如果找不到分割表,怎么知道如何读取磁柱区间呢?您说是吧!底下还有一些例题您可以思考看看:
启动流程与主要启动记录区(MBR) 我们在计算机概论里面谈到了,没有运行软件的硬件是没有用的,除了会电人之外..., 而为了计算机硬件系统的资源合理分配,因此有了操作系统这个系统软件的产生。由於操作系统会控制所有的硬件并且提供核心功能, 因此我们的计算机就能够认识硬盘内的文件系统,并且进一步的读取硬盘内的软件文件与运行该软件来达成各项软件的运行目的。 问题是,你有没有发现,既然操作系统也是软件,那么我的计算机又是如何认识这个操作系统软件并且运行他的? 明明启动时我的计算机还没有任何软件系统,那他要如何读取硬盘内的操作系统文件啊?嘿嘿!这就得要牵涉到计算机的启动程序了! 底下就让我们来谈一谈这个启动程序吧! 在计算机概论里面我们有谈到那个可爱的BIOS与CMOS两个东西, CMOS是记录各项硬件参数且嵌入在主板上面的储存器,BIOS则是一个写入到主板上的一个韧体(再次说明, 韧体就是写入到硬件上的一个软件程序)。这个BIOS就是在启动的时候,计算机系统会主动运行的第一个程序了! 接下来BIOS会去分析计算机里面有哪些储存设备,我们以硬盘为例,BIOS会依据使用者的配置去取得能够启动的硬盘, 并且到该硬盘里面去读取第一个磁区的MBR位置。 MBR这个仅有446 bytes的硬盘容量里面会放置最基本的启动管理程序, 此时BIOS就功成圆满,而接下来就是MBR内的启动管理程序的工作了。 这个启动管理程序的目的是在加载(load)核心文件, 由於启动管理程序是操作系统在安装的时候所提供的,所以他会认识硬盘内的文件系统格式,因此就能够读取核心文件, 然后接下来就是核心文件的工作,启动管理程序也功成圆满,之后就是大家所知道的操作系统的任务啦! 简单的说,整个启动流程到操作系统之前的动作应该是这样的:
由上面的说明我们会知道,BIOS与MBR都是硬件本身会支持的功能,至於Boot loader则是操作系统安装在MBR上面的一套软件了。由於MBR仅有446 bytes而已,因此这个启动管理程序是非常小而美的。 这个boot loader的主要任务有底下这些项目:
上面前两点还容易理解,但是第三点很有趣喔!那表示你的计算机系统里面可能具有两个以上的启动管理程序呢! 有可能吗?我们的硬盘不是只有一个MBR而已?是没错啦!但是启动管理程序除了可以安装在MBR之外, 还可以安装在每个分割槽的启动磁区(boot sector)喔!瞎密?分割槽还有各别的启动磁区喔? 没错啊!这个特色才能造就『多重启动』的功能啊! 我们举一个例子来说,假设你的个人计算机只有一个硬盘,里面切成四个分割槽,其中第一、二分割槽分别安装了Windows及Linux, 你要如何在启动的时候选择用Windows还是Linux启动呢?假设MBR内安装的是可同时认识Windows/Linux操作系统的启动管理程序, 那么整个流程可以图示如下: 图2.4.1、启动管理程序的工作运行示意图 在上图中我们可以发现,MBR的启动管理程序提供两个菜单,菜单一(M1)可以直接加载Windows的核心文件来启动; 菜单二(M2)则是将启动管理工作交给第二个分割槽的启动磁区(boot sector)。当使用者在启动的时候选择菜单二时, 那么整个启动管理工作就会交给第二分割槽的启动管理程序了。 当第二个启动管理程序启动后,该启动管理程序内(上图中)仅有一个启动菜单,因此就能够使用Linux的核心文件来启动罗。 这就是多重启动的工作情况啦!我们将上图作个总结:
那现在请你想一想,为什么人家常常说:『如果要安装多重启动, 最好先安装Windows再安装Linux』呢?这是因为:
因此,如果先安装Linux再安装Windows的话,那MBR的启动管理程序就只会有Windows的项目,而不会有Linux的项目 (因为原本在MBR内的Linux的启动管理程序就会被覆盖掉)。 那需要重新安装Linux一次吗?当然不需要,你只要用尽各种方法来处理MBR的内容即可。 例如利用全中文的spfdisk(http://spfdisk.sourceforge.net/)软件来安装认识Windows/Linux的管理程序, 也能够利用Linux的救援模式来挽救MBR即可。
Linux安装模式下, 磁盘分区的选择(极重要)
我们前面有谈过Linux内的所有数据都是以文件的形态来呈现的,所以罗,整个Linux系统最重要的地方就是在於目录树架构。 所谓的目录树架构(directory tree)就是以根目录为主,然后向下呈现分支状的目录结构的一种文件架构。 所以,整个目录树架构最重要的就是那个根目录(root directory),这个根目录的表示方法为一条斜线『/』, 所有的文件都与目录树有关。目录树的呈现方式如下图所示: 图2.5.1、目录树相关性示意图 如上图所示,所有的文件都是由根目录(/)衍生来的,而次目录之下还能够有其他的数据存在。上图中长方形为目录, 波浪形则为文件。那当我们想要取得mydata那个文件时,系统就得由根目录开始找,然后找到home接下来找到dmtsai, 最终的档名为:/home/dmtsai/mydata的意思。 我们现在知道整个Linux系统使用的是目录树架构,但是我们的文件数据其实是放置在磁盘分区槽当中的,
现在的问题是『如何结合目录树的架构与磁碟内的数据』呢?
这个时候就牵扯到『挂载(mount)』的问题啦!
所谓的『挂载』就是利用一个目录当成进入点,将磁盘分区槽的数据放置在该目录下; 也就是说,进入该目录就可以读取该分割槽的意思。这个动作我们称为『挂载』,那个进入点的目录我们称为『挂载点』。 由於整个Linux系统最重要的是根目录,因此根目录一定需要挂载到某个分割槽的。 至於其他的目录则可依使用者自己的需求来给予挂载到不同的分割槽。我们以下图来作为一个说明: 图2.5.2、目录树与分割槽之间的相关性 上图中假设我的硬盘分为两槽,partition 1是挂载到根目录,至於partition 2则是挂载到/home这个目录。 这也就是说,当我的数据放置在/home内的各次目录时,数据是放置到partition 2的,如果不是放在/home底下的目录, 那么数据就会被放置到partition 1了! 其实判断某个文件在那个partition底下是很简单的,透过反向追踪即可。以上图来说, 当我想要知道/home/vbird/test这个文件在那个partition时,由test --> vbird --> home --> /,看那个『进入点』先被查到那就是使用的进入点了。 所以test使用的是/home这个进入点而不是/喔!
既然我们在Linux系统下使用的是目录树系统,所以安装的时候自然就得要规划磁盘分区与目录树的挂载了。 实际上,在Linux安装的时候已经提供了相当多的默认模式让你选择分割的方式了, 不过,无论如何,分割的结果可能都不是很能符合自己主机的样子!因为毕竟每个人的『想法』都不太一样! 因此,强烈建议使用『自订安装, Custom 』这个安装模式!在某些Linux distribution中,会将这个模式写的很厉害,叫做是『Expert, 专家模式』,这个就厉害了, 请相信您自己,了解上面的说明后,就请自称为专家了吧!没有问题!
现在你知道Linux为什么不好学了吧?因为很多基础知识都得要先了解!否则连安装都不知道怎么安装~ 现在你知道Linux的可爱了吧!因为如果你学会了,嘿嘿!很多计算机系统/操作系统的概念都很清晰, 转换到不同的资讯跑道是比较容易的喔!^_^ |
||||||||||||||||||||||
本网页主要以Firefox配合解析度 1024x768 作为设计依据 鸟哥自由软件整合应用研究室