1、硬盘分区,前面提到过,硬盘的主分区加扩展分区最多有4个,扩展分区又可以分出逻辑分区。
扇区是最小的物理存储单位,每个扇区为512bytes,扇区组成的园就是柱面,柱面是分区的最小单位。
第一个扇区(及0磁道0扇区)里存储了两个重要的信息
主引导分区(MBR):可以安装引导加载程序的地方,有446bytes。
分区表:记录整块硬盘分区的情况,有64bytes.
接口的命名:
/dev/sd[a-p][1-15]:SCSI, SATA, USB, Flash等接口
/dev/hd[a-d][1-63]:IDE接口的磁盘文件名
2、磁盘分区完成后进行格式化,成为操作系统能够使用的文件系统格式。
3、那文件系统的格式是怎样的呢??
(1)一个文件系统三个重要的组成部分
super
block:记录此文件系统的整体信息,包括iNode、block的总量,使用量,剩余量,以及文件系统的格式及相关信息。
iNode:一个文件占用一个iNode,记录了文件数据存放在哪些block中,以及文件的属性。
block:记录文件的内容。
注意:每个block只能存放一个文件的数据,如果一个文件放不满一个block,那该block剩余的空间就不能用了。所以block的大小设置就非常重要了,要根据文件系统的具体作用做出规划。
一个磁盘格式化完成后,iNode数量(也就是可以创建的文件数量)和每个block的大小就定了,不能再修改,除非重新格式化。
4、ext2
文件系统创建一个目录时,ext2会分配一个iNode号和至少一个block给该目录。创建一个文件时,ext2会分配一个iNode号和相对于该文件大小的block数量给该文件。
用户创建一个文件或目录时,系统会做些什么事呢??
首先,判断该用户对与添加文件或目录的目录是否具有w和x权限,有才能添加;
其次,根据iNode
bitmap找到没有使用的iNode号,将新文件或目录权限、属性写入;
再而,根据block
bitmap找到没有使用的block写入具体数据,并更新对应的iNode
最后,将刚才的iNode和block数据同步到iNode bitmap和block bitmap中,并更新super
block。
5、如果在上述过程中,发生意外情况,如断电等,那实际的iNode和block信息与记录的就不相符了,怎样解决呢?相应的日志文件系统就出现了。日志文件记录写入或修改文件的步骤,这样出现意外后就很容易找到哪里出现了问题,就能比较方便地更改。
6、由于磁盘写入速度比较慢,未来解决效率问题,出现了异步处理:简单说就是一个缓存机制,修改文件数据后,不是马上写入到磁盘中,而是缓存到内存中,此时的数据成为Dirty数据,写入磁盘后称为clean数据。可以使用sync手动强迫写入磁盘。
7、挂载点:挂载点一定是目录,文件系统必须要挂载到目录树的某个目录下才能使用。
一个iNode只对应一个文件,可以通过看文件的iNode号来查看不同文件名的文件是否是同一个文件。ls
-i就能将文件的iNode号显示出来。
8、linux VFS:虚拟文件系统。
整个linux都是通过一个叫做VFS(虚拟文件系统)的内核功能去读取文件系统的。