ext2、ext3、ext4格式的文件存取及具有日志功能的文件系统简介
一、在Linux系统中,新建一个文件或目录的操作过程是这样的:
⑴首先判断需要新增文件或目录的用户是否对这个文件或目录是否具有读(W)与执行(X)的权限,如有才可以新增;
⑵根据i节点对照表,查找没有使用的i节点号码,并将新文件的权限与属性写入到i节点中;
⑶根据区块(block)对照表查找没有使用的区块号码,并将实际的数据写到区块中,然后更新i节点的区块指向数据(更新指针指向的区块号码数据);
⑷最后更新刚刚写入的i节点与区块数据,同步更新i节点对照表与区块对照表,并更新超级区块的内容。
以上则为Linux系统创建一个新文件的过程。通常情况下,我们将i节点对照表与数据区块称为数据存放区域,而超级区块、区块对照表与i节点对照表等区段称为元数据(metadata),这是因为这些数据是经常变化的,每次新增、删除、编辑时都会可能影响到这三个总分的数据。
数据的存放区块与记录数据存放位置的数据在某些情况下有可能会出现不一致(Inconsistent)的情况,例如,在使用计算机过程中,突然断电产生的后果等,如何解决这个问题?在ext2文件系统中,就会通过超级区块当中记录的有效位(如是否有挂载)与文件系统状态(如正确卸载与否)等状态来判断是否强制进行数据一致性检查,如果需要强制性检查则运行e2fsck程序来进行检查。但是这样有一个很致命的后果就是,现在一般的磁盘容量都会非常大,检查起来需要的时间非常漫长!
这也是ext2文件系统不足的地方,因此,在此基础上人们对文件系统进行了改进,在ext2文件系统的基础上加入日志的功能,产生了带有日志功能的文件系统。
二、日志式文件系统(Journaling filesystem)
带有日志功能的文件系统是这样工作的,也就是在这些文件系统当中,划出一个区域,该区域专门用来记录写入或修改文件时的步骤,具体过程是这样的:
⑴首先在日志记录区块记录某个文件需要准备写入的信息;
⑵开始写入文件的权限与数据;开始更新元数据(记录数据的数据)的数据;
⑶当完成数据与元数据的更新后,在日志记录区块当中完成该文件的记录。
采用日志功能以后,当文件系统发生不一致性问题时,只要去检查日志记录的区块,就可以知道是哪一个文件发生了问题,只要针对这个问题做一致性检查即可,而不必对整个文件系统进行检查,这样可以起到快速修复文件系统的目的,这也是日志的最基础功能。
ext3、ext4都是带有日志功能的文件,而ext2没有这个功能,但是ext3、ext4是ext2升级版本。
| 留言与评论(共有 0 条评论) |