【正经教程】Linux基础(三):磁盘与文件系统
A.磁盘的分区
0. 第一扇区(first sector)
a) 64bytes
b)主引导分区Master Boot Record (MBR)
MBR是硬盘上的一个位置,不是程序
系统在开机时,BIOS会去读取可获得硬盘第一个扇区的MBR, MBR这个446bytes的硬盘容量里会放置最基本的引导加载程序。 BIOS与MBR都是硬件本身支持的功能。
开机的大致流程如下:BIOS → MBR →Boot loader →内核文件
(PS:Bootloader 引导加载程序,除了安装在MBR上,也可以安装在硬盘的其他分区的boot sector, 这是“多重引导”功能的基础)
c) 分区表 Partition table
分区表记录了整块磁盘分区的状况 有64bytes,只存存储4条分区记录
1.主分区(Primary Partition)
可以格式化 可以存储数据
2.逻辑分区(Logical Partition)
可以格式化 可以存储数据
Linux系统下 IDE硬盘逻辑分区59个,SATA硬盘逻辑分区11个
3.拓展分区(Extention Partition)
拓展分区用来存储逻辑分区的分区表 操作系统限制只能有一个
B.文件系统的特性
0.文件系统
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。
文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
简而言之,文件系统就是文件的管理员。
1. 格式化
每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区进行格式化,以成为操作系统能够利用的文件系统格式。(即以什么格式来格式化分区。)
Windows98 FAT FAT16
Windows2000 NTFS
Linux Ext2(Linux Second extended file system)
通常我们称呼一个可以被挂载的数据为一个文件系统而不是一个分区。
2. Linux的Ext2文件系统结构
| 块 | 存放内容 |
|---|---|
| super block | 记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量、以及文件系统的格式与相关信息 |
| inode | 记录文件的属性 一个文件占用一个inode 同时记录此文件的数据所在的block号码 |
| block | 实际记录文件的内容 过大时一个文件占用多个block |
文件系统一开始就规划好了inode和block,除非重新格式化(或者利用resize2fs等命令更改文件系统大小),否则inode与block固定后不会再有变动。

(1)启动扇区 boot sector
文件系统的最前面有一个启动扇区,这个启动扇区可以安装引导装载程序,正是因为boot sector的存在,才可以不覆盖硬盘唯一的MBR,实现多重引导环境。
(2)data block
a.用于放置文件内容,在格式化时大小固定,每个block都有自己的编号
b.Block的大小和数目在格式化后固定
c.每个Block中只能存放一个文件的数据,因此Block的大小不合适则会对硬盘容量的使用率(Block过大)和读写效率(Block过小)造成不良影响。
(3) inode table
a.数量与大小在格式化时就固定了
b.每个inode的大小均固定为128bytes
c. 每个文件都会占用一个inode (所以系统中可以有的文件数目与inode有关)
| inode table的主要记录内容 |
|---|
| 文件的访问模式 read/write/excurte |
| 文件的所有者与组 owner/group |
| 文件的大小 |
| 文件的创建或状态的改变时间 ctime |
| 最近一次的读取时间 atime |
| 最近修改的时间 mtime |
| 定义文件特性的标志 flag 如SetUID |
| 该文件真正内容的指向 pointer |
inode记录block编号的方式

因为一个inode就只有128bytes 记录一个block得花掉4bytes 所以就多点投射咯。
(4) Superblock
记录整个文件系统的相关信息。
| Superbiock的记录内容 |
|---|
| block与inode的总量 |
| 未使用与已使用的inode/block数量 |
| block与inode的大小(block为1k 2k 4k) (inode为128bytes) |
| 文件系统的挂载时间,最近一次写入数据的时间,最近一次检验磁盘(fsck)的时间等 |
| 一个validbit数值 文件系统已挂载(0) 文件系统未挂载(1) |
非常重要,搞坏了文件系统就完蛋,可以用来折腾别人
可以使用dumpe2fs来查看。
(5) File system Description (文件系统描述说明)
描述block group的开始与结束。
可以使用dumpe2fs来查看。
(6) block bitmap (块对照表)
记录block bitmap的使用情况。
(7) inode bitmap(inode 对照表)
记录inode bitmap的使用情况。
3.文件系统与目录树
a. 目录拥有自己的inode (也是特殊的文件)
b.目录的block记录目录下的文件名,这就是为什么要修改目录结构需要目录的w权限了。把目录当做特殊的文件看就好了。
c.文件当然也有自己的inode
d.目录树的读取是找到挂载点的inode,然后通过block得到文件名数据,再 一层一层的往下直到找到目标文件
文件系统最顶层的inode一般为2号。
4.Ext2/Ext3的文件访问与日志文件系统
日志文件系统(Journaling file system)
5.文件系统操作
异步处理。害你咋不去看看你操作系统的书籍呢。
就是改动先放在内存,用户可以做别的事情,系统定时把内存中的东西往硬盘上写。这样可以改善读写速度。
6.挂载点 mount point
每个文件系统都有独立的inode、block、superblock等信息,这个文件系统要能够链接到目录树才能被我们使用。将文件系统与目录树结合的操作我们成为挂载。
挂载点一定是目录,该目录为进入该文件系统的入口。

浙公网安备 33010602011771号