硬盘与存储设备
硬盘的物理组成
硬盘由盘片,机械手臂,磁头与主轴马达组成。实际数据是卸载具有磁性物质的盘片上,而读写主要是通过在机械手臂上的读取磁头来完成。实际运行时,主轴马达让盘片转动,然后机械手臂可伸展让读取头在盘片上面进行读写操作。
盘片上的数据
整个盘片上好像有多个同心圆绘制出的饼图,而由圆心以放射状的方式分割出的磁盘的最小存储单位,那就是扇区(sector),在物理组成方面,每个扇区大小为512B,这个值是不会变的。而山区组成的一个圆就成为磁道(track)。如果有多个盘片,那么在所有盘片上相同的刺刀可以组成一个柱面(cylinder),柱面也是我们分割硬盘时的最小单位。
传输接口
IDE接口 ---对应linux中的文件名:/dev/hd[a-d]
SATA接口,SCSI接口--对应linux中的文件名:/dev/sd[a-d]
磁盘的第一个扇区
整块磁盘的第一个扇区特别重要,因为它记录整块磁盘的重要信息。磁盘的第一个扇区主要记录了两个重要信息:
- 主引导分区(master boot record, MBR):可以安装引导加载程序的地方,有446B
- 分区表(partition table):记录整块硬盘分区的状态,有64B。
分区表
如何分区
柱面是文件系统的最小单位,也是分区的最小单位。通过参考柱面号码的方式来分区。在分区表所在的64B容量中,总共分为4组记录区,每组记录区记录了该区段的起始与结束的柱面号码。
笔者的硬盘设备文件名为/dev/sda(SATA硬盘对应的标示),那么这四个分区的文件名如下所示:
- p1:/dev/sda
- p2:/dev/sda1
- p3:/dev/sda2
- p4:/dev/sda3
上图中,我们假设硬盘只有400个柱面,共分为四个分区,第四个分区为301-400号柱面的范围。
由于分区表只有64B,最多容纳4个分区,这四个分区被称为主(primary)分区或扩展(extended)分区。
关于分区,有以下几点知识:
- 其实所谓的分区,只是针对那64B的分区表进行设置而已
- 硬盘默认的分区表仅能写入四组分区信息
- 这四组分区信息我们称为主分区或扩展分区
- 分区的最小单位为柱面
- 当系统要写入磁盘时,一定要参考磁盘分区表,才能针对某个分区进行数据处理
为什么分区?
- 数据的安全性
因为每个分区的数据是分开的。所以当你需要某个分区的数据重整时,不会影响到其他分区的数据。(装系统只会影响C盘,其他盘不受影响) - 系统的性能考虑
由于分区将数据集中在某个柱面的区段,因此当需要读写分区(p1)时,磁盘只会搜寻(1-100)柱面范围,这样有助于提高性能。
扩展分区
既然第一个扇区所在分区表只能记录四条数据,那自然也利用额外的扇区来记录更多的分区信息。于是扩展分区能切分成更多分区,即为逻辑分区。(logical partition)
- 主分区与扩展分区最多可以有四个
- 扩展分区最多只能有一个
- 逻辑分区是由扩展分区持续切割出来的分区
- 能够被格式化后作为数据访问的分区为主分区与逻辑分区,扩展分区无法格式化。
开机流程与主引导分区
CMOS是记录各项硬件参数且嵌入在主板上的存储器。BIOS则是一个写入到主板上的一个软件程序。
开机流程:
- BIOS:开机主动执行的第一个程序,会读如CMOS的内容,认识到第一个可开机的设备。
- MBR:第一个可开机的设备的第一个扇区内的主引导分区快,内包含引导加载程序。
- 引导加载程序(Boot loader):一个可读取内核文件来执行的软件
- 内核文件:开始操作系统的功能;
boot loader的主要任务
- 提供菜单:用户可以选择不同的开机选项,这也是多重引导的重要功能(双系统的实现原理)
- 载入内核文件:直接指向可开启的程序区段开启操纵系统
- 转交其他loader:将引导加载程序转交给其他loader负责
linux目录树结构与文件系统
- 目录树结构
整个linux系统最重要的在于目录树结构,即以根目录为主,向下呈现分支状的目录结构的一种文件结构。其中,最重要的是根目录 / 。 - 文件系统与目录树的关系(挂载)
挂载:就是利用一个目录当作进入点,将磁盘分区的数据放置在该目录下。其中进入点,即为挂载点;进入某一个目录,即是读取某一个分区的意思。
the end