1 磁盘组成与分区
1.1 磁盘物理组成
(1)圆形盘片—记录数据
(2)机械手臂及磁头—读写盘片数据
(3)主轴马达—使得机械手臂成功读写数据驱动
1.2 盘片物理组成
(1)扇区—最小物理存储单位,512bytes
(2)柱面—扇区组成的圆,分区的最小单位
(3)第一扇区—最重要的扇区,包含主引导记录MBR446bytes 以及 分区表PB 64bytes
1.3 磁盘接口在Linux中文件名
(1)/dev/sd[a-p][1-15] 为 SCSI 、 SATA 、 USB 、 Flash等接口的磁盘文件名
(2)/dev/hd[a-d][a-63] 为IDE接口的磁盘文件名
2 文件系统特性
2.1 不同操作系统使用的文件系统
(1)传统Windows98及以前的操作系统主要利用的文件系统为FAT或FAT16
(2)Windows2000及以后的操作系统主要利用NTFS为其文件系统
(3)Linux操作系统的正规文件系统均为EXT2 或 EXT3 为其文件系统
2.2 文件系统的存储块
通常,文件系统一般有三个存储块:
(1)super block : 超级块,用来存储文件系统的整体信息,包括其余两块innode 及 block的总量、使用量、剩余量以及文件系统的格式和文件信息
(2)innode:主要记录文件的属性信息,一个文件会占用一个innode块,同时记录该文件实际数据所在的block的编号
(3)block:主要记录文件的实际数据,根据实际情况可能占用一个或多个block存储
2.3 不同文件系统的数据访问方式
(1)索引式文件系统
此类文件系统的innode块内存储文件实际数据所在的所有block的编号,此时,操作系统可以由此从开始就读取出文件数据所在的全部block。Linux的EXT2 、 EXT3都是这类文件系统;索引式文件系统的优点:它基本上不需要进行碎片整理,因为其文件写入的block不至于过于离散。
结构如下图:
(2)FAT文件系统
此类文件系统没有innode块的存在,因此也就不存在一开始就读取文件实际数据的所有block。这种文件系统,通常都是一个block内存储要访问的下一block的编号,该存储方式容易造成文件数据block的过于离散。所以说,FAT的文件系统需要经常进行碎片整理,来保证其性能。我们通常使用的U盘一般是采用的FAT文件系统。
结构如下图:
3 Linux的EXT2文件系统
3.1 EXT2 存储块详解
对于Linux的EXT2以及EXT3文件系统,有3个存储块,super block 、 innode以及block ,文件系统一开始就把innode和block规划好了,除非重新格式化或者利用resize2fs等命令更改,否则这两部分便不再进行改动。
(1)data block
data block是用来存储文件数据的块,EXT2文件系统中支持的block大小有1KB、2KB和4KB三种而已。
data block的大小在文件系统开始就已经初始化完毕,且不再改变。
一个block最多只能存储一个文件的数据,一个文件的数据根据实际内容量可以存储在多个block中。
对于小于block大小的文件来讲,在block中剩余的容量则不能再被其他文件占用,此时造成一定程度的磁盘空间浪费。
(2)innode block
innode主要记录文件的属性以及该文件实际数据存储在block的编号。
具体来讲,innode block中存储的内容有:
该文件的访问模式;
该文件大小;
该文件的所有者与组;
该文件创建状态改变的时间;
最近修改的时间;
定义文件特性的标志,如SetUID等;
该文件真正内容的指向;
innode block的大小也在文件系统格式化时已经确定,每个block的大小均固定为128bytes,每个文件只会占用一个innode block。
文件系统能够创建的文件数量与innode的数量有关。
系统读取文件时,先找到innode,分析权限,符合要求则读取block的内容。
innode block与文件大小密切相关,由于innode大小有限,只有128bytes的容量,记录一个block号码占用4bytes,而对于大文件则需要非常多的block来存储数据,block的数量远远超出了innode块可存储的容量。为此,文件系统采用多级存储结构,有12个直接,1个间接,一个双间接,一个三间接记录区,这样就满足了大文件的繁多block号的记录。
innode多级结构如下图:
那么,这样的存储结构可以指定多少个block呢?以较小的1KB的block来讲:
12个直接指向,12*1K=12K , 直接指向可以记录12条;
间接指向,256*1K=256K,每条block号码的记录需要4bytes,因此1K大小可以记录256条;
双间接,256*256*1K,第一层指定256个记录,每个第二层指定256条;
三间接,256*256*256*1K , 第一层指定256个记录,每个第二层指定256条,每个第三层也指定256条记录;
总量,12+256+256*256+256*256*256(K)=16GB
此时,我们可以知道,文件系统将block划分为1KB时,能够容纳的最大文件为16GB,与文件限制表结果一致。但是这个方法不适用与block大小为2KB或者4KB时,因为大于2KB的block将会受到EXT2文件系统本身的限制,计算结果与限制表产生出入。
(3)super block
此块记录整个文件系统相关信息的地方,记录信息主要有:
block与innode的总量;
未使用和已使用的innode/block的数量;
block和innode的大小;
文件系统挂载时间、最近一次写入数据的时间、最近一次检验磁盘时间等;
一个validbit数值,挂载值为0,未挂载值为1;
3.2 EXT2文件系统与目录树的关系
3.3 EXT2与EXT3文件系统访问与日志文件系统
3.4 文件系统操作及挂载点
3.5 其他Linux文件系统
以上几节内容理论性强,通读《鸟哥的Linux私房菜—基础学习篇》P204-209了解即可。