LINUX学习之二磁盘篇

时间:2021-12-06 14:14:36

1、Linux系统中,每个设备都被当成一个文件来对待。文件系统的最小单位是区块(Block)

设备 设备在Linux中的文件名
IDE硬盘 /dev/hd[a-d]
SCSI/SATA/USB硬盘 /dev/sd[a-p]
U盘 /dev/sd[a-p](与SATA相同)
软驱  
打印机  
鼠标  
当前CD ROM/DVD ROM  
当前鼠标  
磁带机  

2、磁盘分区

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

  个人计算机常见的磁盘接口有两种:IDE接口和SATA接口,目前主流是SATA接口。

  以IDE接口来说,一个IDE扁平电缆可以连接两个IDE设备(Master主设备和Slave从设备),主机通常提供两个IDE接口(称为IDE1(Primary),IDE2(Secondary)),因此最多可以接到4个IDE设备。(如果已经有一个光盘设备了,那么最多还能再接3块IDE接口磁盘)。

  四个设备的文件名如下表:

IDE\Jumper Master Slave
IDE1(Primary) /dev/hda /dev/hdb
IDE2(Slave) /dev/hdc /dev/hdd

  SATA/USB接口的磁盘没有固定顺序,只能根据Linux内核检测到磁盘的顺序。

  问题:如果磁盘被分区,那么每个分区的设备文件名又是什么呢?先复习下面知识再来解答!

2.2磁盘的组成

  磁盘主要由盘片、机械手臂、磁头、主轴马达组成。数据的写入是在盘面上,盘面分扇区(Sector 存储的最小单位)与柱面(Cylinder 分区的最小单位)两种单位,其中每个扇区512bytes。

  整块磁盘的第一个扇区特别重要,因为它记录了整块磁盘的重要信息,分别是:

  (1)主引导分区(Master Boot Record,MBR):可以按照引导加载程序的地方,446bytes。MBR很重要,因为当系统在开机的时候会主动去读取这个区块的内容,这样系统才知道你的程序放在哪里且该如何进行开机。如果你要安装多重引导的系统,MBR的管理就非常重要了!如果MBR物理坏了,硬盘也就无用了。

  (2)分区表(Partition Table):记录整块硬盘的分区状况,64bytes。

2.3磁盘分区表

  分区的好处:数据的安全性和系统的性能

  分区表的64bytes容量中,分为四组记录区,每组记录区记录了该区段的起始与结束柱面的号码。假设上面的硬盘设备文件名为/dev/hda,那么这四个分区的文件名依次是:  

  P1:/dev/hda1

  P2:/dev/hda2

  P3:/dev/hda3

  P4:/dev/hda4

  第一扇区的64bytes分区表只能记录四条数据,所以最多只有四个主分区与扩展分区(磁盘的限制),扩展分区最多只有一个(操作系统的限制)。 

  扩展分区的目的是使用额外的扇区来记录分区信息,由扩展分区继续切出来的分区称为逻辑分区(逻辑分区设备名称号码由5开始,前四个号码保留给Primary主分区和Extended扩展分区),扩展分区本身并不能被拿来格式化。能够被格式化后作为数据访问的只有主分区和逻辑分区。

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

例题:分区的整合?扩展分区的两个逻辑分区整合为一个,需要将两个分区删除,再重新创建一个新分区(不影响其他分区)。

   一个主分区和一个逻辑分区不能整合。除非将扩展分区破坏后再重新分区(会导致所有逻辑分区被删除)。

2.4开机流程与主引导分区(MBR)

  CMOS是记录各项硬件参数且嵌入在主板上的存储器,BIOS则是一个写入到主板上的韧体(韧体,即写入到硬件上的软件程序)。BIOS就是开机时计算机系统会主动执行的第一个程序。BIOS会依据用户的设置去取得能够开机的硬盘,并且到该硬盘里面去读取第一个扇区的MBR位置。MBR里会放置最基本的引导加载程序(Boot loader),接下来就是MBR内的引导加载程序工作了。引导加载程序的目的是加载(load)内核文件。接下来就是内核文件工作了。之后就是大家所知道的操作系统的任务啦!

  简单说来,整个开机流程到操作系统之前的动作是这样的:

  (1)BIOS:开机主动执行,认识第一个可开机的设备;

  (2)MBR:第一个可开机设备的第一扇区的MBR,内包含引导加载程序;

  (3)引导加载程序(Boot loader):一支可读取内核文件来执行的软件

  (4)内核文件:开始操作系统的功能。

  BIOS和MBR都是硬件本身会支持的功能,Boot loader则是操作系统安装在MBR上的一套软件。Boot loader的主要任务:

  (1)提供菜单:用户可选择不同的开机选项,是多重引导的重要功能;

  (2)载入内核文件:直接指向可开机的程序区段来开始操作系统;(实际的可开机内核文件是放置到各个分区内的)

  (3)转交其他loader:将引导加载功能转交个其他loader负责。(每个loader只认识自己的系统分区内的可开机内核文件以及其他loader)

  硬盘只有一个MBR,但是引导加载程序除了可以安装在MBR之外,还可以安装在每个分区的引导扇区(boot sector),每个分区都有自己的启动扇区这个特色造就“多重引导”的功能。

  总结:每个分区有一个启动扇区(boot sector),每个启动扇区有一个引导加载程序(boot loader),每个引导加载程序可以载入本区的内核文件启动操作系统或者将控制转交给其他引导加载程序。