主机规划与磁盘分区
各硬件设备在linux的文件名
linux中,每个硬件都是以文件命名的,常见的文件名
磁盘分区
我们知道一块磁盘可以被分成多个分区的,以windows的来看,即磁盘可以被分为C,D,E盘,这就是分区。
上面这个有三个盘片,扇区一般为512bytes,存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数。第一个扇区特别重要,记录了磁盘的两个重要信息,MBR和GPT。MBR引导加载程序的地方,有446字节,分区表记录整块磁盘分区的现状态,有64字节。
磁盘分区表
假设上面的硬盘设备名称为/dev/hda,那么四个分区如下所示
- P1:/dev/hda1
- P2:/dev/hda2
- P3:/dev/hda3
- P4:/dev/hda4
上面的硬盘有400个柱面,p4所在为第301到400号柱面范围。由于分区表只有64字节,最多只能容纳四个分区,这四个分区被称为主分区或扩展分区。分区的最小单位为柱面。
当系统要写入磁盘时,一定会参考磁盘分区表,才能对某个分区进行数据处理,为什么要分区?
- 数据安全性,每个分区的数据是分开的。
- 性能,指定分区时,只需读取某段柱面,提高了性能。
如何将一块磁盘分出超过四个分区?
如上所示,P1为主分区,P2为扩展分区,扩展分区的目的是使用额外的扇区来记录分区信息,扩展分区本身不能被格式化。延伸分割记录区,即由扩展分区继续切出来的分区,被称为逻辑分区。上述分区在linux中的命名。
可以看到,3,4是预留出来给扩展分区的。扩展分区最多只能有一个。能够被格式化后作为数据访问的分区为主分区与逻辑分区,扩展分区无法格式化。
开机流程与主引导分区(MBR)
CMOS是记录各项硬件参数且嵌入在主板上面的存储器,BIOS则是一个写入到主板上的一个软件程序,这个BIOS就是开机时执行的第一个软件,接下来BISO会去分析计算机里面有哪些存储设备,以硬盘为例子,BIOS会依据用户的设置去取得能够开机的硬盘,并且到该硬盘里面去读取第一个扇区的MBR位置,MBR这个仅有446bytes的硬盘容量里面会放置最基本的引导加载程序,此时BIOS完成,接下来是MBR里面的程序工作了。这个引导加载程序的目的是在加载内核文件,由于引导加载程序是操作系统是操作系统在安装的时候提供的,所以它会识别磁盘内的文件系统,因此能够读取内核文件,此时引导加载程序完成了,接下来就是内核文件开始工作,内核文件也就是操作系统的功能。
MBR上的boot loader提供以下功能:
- 提供菜单进行多重引导等功能。
- 载入内核文件,直接指向可开机的程序区段来开始操作系统
- 转交其他loader(即多重引导),加载程序除了安装在MBR之外,还可以安装在每个每个分区的引导扇区。以单个硬盘安装双系统为例子。
目录树结构
文件系统与目录树的关系
挂载就是利用一个目录为进入点,将磁盘分区的数据放置在该目录下,也就是说进入该目录就可以读取分区的意思,那个目录称为挂载点。
上面/home下面的各级目录是放在分区2,而/是放在分区1。
linux目录分类
总结
我们在安装linux的时候,会让我们配置分区,比如/,/boot,/home,/swap要分配多少,当我们对这些进行分配的时候,其实是对/dev/sdax(x代表数字)。常见的分配是/boot挂载使用/dev/sda1分区(主分区),/挂载使用的是/dev/sda2分区(主分区),/home挂载使用的是/dev/sda3分区(主分区),/swap使用的是/dev/sda5(逻辑分区)。因为/dev/sda4是扩展分区。如果扩展分区还有容量剩余,即没被逻辑分区用完,后续扩展分区可以继续划分出逻辑分区。