Linux文件系统学习
-
磁盘的物理层面的认识
磁盘的组成就像是一个烤串,由多个 磁片组成,每一个磁片上有若干圆形的叫磁柱cylinder(或者是叫磁道track),没一个磁柱又由 若干的扇区sector组成。 -
磁盘需要进行分区。分区是文件系统的单位。也就是说一个分区一个文件系统,不同的分区文件系统可以不同。在分区的整体规则方面,也就是分区怎么分,分为MBR和GPT分区。
- MBR分区:典型特征是
<1> 磁盘的第一个sector最重要。里面存有系统启动信息MBR(448B),和分区表(64B)。
<2> 第一个sector很重要,几乎每次读取系统硬盘就是先读这里的。系统读取磁盘信息,首先需要读取分区信息。
<3> 分区表由于比较小,只能有四个partion。每一个partion存储起始的结束的单位,也就是范围。这四个partion可以是primary partion 或者是 extended partion(除了规定范围,还表示第二级分区信息在另外一个扇区)。extented parion指向的扇区里面存储有logical partion的分区信息。extented partion本身不算是一个有意义的分区,其是为了引出logical partion
<4> extended partion 最多一个。
<5> 如果使用extended partion,但是在extended partion后面还有primary partion没有使用。那么linux在扫描的时候,会将extended parition和后面的primary partion的命名序号跳过去。
总结:MBR随着存储和系统越来越复杂,其缺点很明显- 将重要信息MBR和分区表集中于第一个sector,造成第一个分区一旦坏了,就报废
- 将重要信息MBR和分区表集中于第一个sector,造成MBR只有448个字节,不够多
- 将重要信息MBR和分区表集中于第一个sector,造成没一个partion只有16B,表示的范围有限,因此,不可以用于2.2T以上的磁盘。
- GPT分区
<1> 将整个磁盘视为一个一个的 逻辑区块地址 LBA.这是为了有的将sector设置为512B,有的是4K。
<2> LBA0 里面存储的是MBR相容模块,也就是类似MBR的地一个sector,分为MBR和分区表
<3> LBA1 里面存储表头记录,主要是记录分区表本身的位置和大小。以及GPT备份的位置(一般在磁盘后33个LBA)
<4> LBA2-33 实际分区信息存储处。其中,每个LBA可以有4个partion。这就空间比较充裕了。没一个partion有128B。其中,分区起始和结束位置各自可以有8B(单位为LBA)。总共可以有120个partion。这些partion都是一样的。可以认为都是主分区。
<5> fdisk 不认识GPT分区。gdisk和parted命令认识GPT分区。
- MBR分区:典型特征是
-
BIOS开机流程:
- BIOS阶段 :运行主板上的BIOS程序,主要是进行硬件的检查。最后按照设定去指定的设备来加载MBR里面的boot loader,来开始下一阶段的工作。MBR可以是MBR分区模式的MBR,也可以是GPT分区模式的MBR。两种都可以,要求是boot loader可以识别相应的分区模式,可以完成加载程序的任务即可。
- boot loader阶段。boot loader是具体的操作系统提供的一段程序。用于将该系统的核心文件加载进内存。bootloader是和操作系统息息相关的。为了支持多重引导,也就是装双系统:boot loader可以放在MBR里面,也可以放在某一个分区的boot sector里面。同时,boot loader一般可以指向其他的boot loader。这样在开机的时候,如果有指向的话,需要用户自己进行选择。因此boot loader可能会发生一个控制权的转换,转到其他的一个boot loader
linux的一个性质就是在安装的时候,可以自己确定boot loader的安装位置,是MBR还是某一个分区的boot sector。同时boot loader指向什么其他的boot loader也是可以进行选择的。
但是windows在安装的时候,其boot loader只可以安装在MBR。如果MBR有内容的话,会覆盖掉。其boot loader的指向也是不可以被控制的。
-
UEFI开机流程
说明: UEFI是一种BIOS的继任者。功能更加强大。也是可以认识GPT和MBR分区模式。主流是配合GPT分区格式进行使用。
其功能更加强大,是因为其需要一个专门的分区来存储其程序,叫EFI系统分区或者叫ESP分区(efi system partition)。里面有一个完整的文件系统,有目录结构。有很多引导文件(.efi文件)。包括boot loader的引导文件。微软的boot loader一般放在EFI/Microsoft/ 下面。而linux的boot loader典型的叫做grub,放在EFI/boot/。
EFI分区可以再划分一个分区进行,也可以不划分,不划分的话,其/boot/efi 会将之前的EFI分区挂载上去。划分的话,会将新建的EFI分区挂载到/boot/efi里面。双系统的话,不建议重新建立一个EFI分区,而是和之前共用一个EFI分区即可。将boot loader安装再之前的EFI分区即可。
注意: 一般的boot loader可以引导多个系统,而grub是一款linux常用的boot loader。
步骤: 基本步骤是先进行硬件的一些动作,然后识别硬盘,去找boot loader。这个识别和BIOS的 只是单纯去找MBR来加载boot loader 不一样。这个识别是可以认识到是MBR分区还是GPT分区,然后根据分区表去加载EFI分区。然后从EFI分区里面加载boot loader。多个系统的boot loader都在这个EFI分区里面。同时这个分区里面还有其他的程序资源,占用空间可达到0.5G到1G之间。
UEFI设置界面里面可以进行设置UEFI的启动行为。比如可以设置,系统自动加载哪一个系统的boot loader。不同系统的boot loader设置完之后,系统重新启动。 -
分区怎么进行格式化,在格式化之后,是怎么样的。