Linux磁盘与文件系统管理(1)
磁盘:
有机械与固态两种。
在磁盘中,扇区为最小的存储单位,每个扇区为512bytes,把扇区组成一个圆就是柱面,柱面是分区的最小单位。第一扇区最重要,里面有有硬盘的主引导记录(MBR)及分区表,其中MBR占有446bytes,分区表占64bytes。
分区:
MBR分区表:Master Boot Record,即硬盘主引导记录分区表,只支持容量在 2.1TB 以下的硬盘,超过2.1TB的硬盘只能管理2.1TB,最多只支持4个主分区或三个主分区和一个扩展分区,扩展分区下可以有多个逻辑分区。(Linux中,IDE硬盘最多有59个逻辑分区(5-63号),SATA硬盘则有11个逻辑分区(5到15号))
GPT分区表:GPT,全局唯一标识分区表(GUID Partition Table),与MBR最大4个分区表项的限制相比,GPT对分区数量没有限制,但Windows最大仅支持128个GPT分区,GPT可管理硬盘大小达到了18EB。只有基于UEFI平台的主板才支持GPT分区引导启动。
能够被格式化后作为数据访问的分区为主要分区与逻辑分区,扩展分区无法格式化。
Windows 98前的操作系统主要利用的文件系统是FAT(或FAT16),Windows 2000以后有所谓的NTFS文件系统。而Linux正规文件文件系统则为Ext2。默认情况下windows不能识别Linux的Ext2文件系统。
inode:
inode记录的文件数据:
该文件的的访问模式
该用户的所有者与组
该文件的大小
该文件创建或者状态改变的时间
最近一次的读取时间
最近修改的时间
定义文件特性的标志,如SetUID等
该文件的真正指向
系统读取文件时,先要找到inode,并要判断所记录的权限与用户是否符合,若符合才能开始实际读取block的内容。
一个inode的大小只有128bytes,而一个block最多能记录4k信息,为了存储更大的文件,inode记录block号码的区域定义为12个直接,一个间接,一个双间接,一个三间接记录区。
直接记录即是能够直接取得block号码。
间接记录就是拿一个block(a)来当做记录block(b)号码的记录区。
双间接即是拿block(b) 也来记录block(c)的号码。
a-b-c
按每个block能够记录1k数据,每个block号码会占4 bytes。
12个直接指向:12k
间接:256k
双间接:256×256k
三间接:256×256×256k
总和为:16GB
(这个方法不能用在2k及4k的block的大小计算中,因为它们会受到Ext2的限制)
date block(数据块)
是用来放置文件的地方
superblock(超级块)
记录文件系统的相关信息
block与inode的总量,使用量,剩余量
block的大小
文件系统的挂载时间,最后一次写入数据时间,最后一次检验磁盘的时间等文件系统相关信息
validbit数值:0表已挂载,1表示尚未挂载
block bitmap(块对照表)
用来记录使用与未使用block号码
inode bitmap(inode对照表)
用来记录使用与未使用的inode号码
File systems Description(文件系统描述说明)
描述每个block group的开始与结束的block的号码,以及说明每个区段分别介于哪一个block之间
inode table与data block称为数据存放区,super block、block bitmap与inode bitmap等称为metadata(中间数据)
Journaling file system(日志文件系统)
专门记录写入或者修订文件的步骤
1.预备:当系统要写入一个文件时,会先在日志记录块中记录某个文件要写入的信息。
2.实际写入:开始写入文件的权限与数据;开始更新meta data的数据。
3.结束:完成数据与meta data数据更新后,在日志记录块中完成该文件的记录。
作用:为了提升主机修复的效率,不必一点一点检测。