`
还可以
  • 浏览: 81371 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

linux中的ext文件系统剖析

阅读更多

关于磁盘分区的一些知识点
linux中文件系统和磁盘分区是紧密结合的,一般情况下一个磁盘分区只能被格式化为一个文件系统。但也存在技术将一个分区格式化为多个文件系统。在linux操作系统上,组成磁盘分区的最小单位为磁盘上的柱面。磁盘的分区有两部分组成:主分区和扩展分区(磁盘的分区信息存放在磁盘分区表里面,一个分区一条记录,每个分区的记录中都是记录这个分区所占用的柱面区间)。而扩展分区可以包含多个逻辑分区,主分区最多4个,逻辑分区根据不同的硬盘类型会有不同的数量限制。比如SATA磁盘可以有11个逻辑分区,而IDE硬盘逻辑分区可以有59个。无论是SATA硬盘还是IDE硬盘,其逻辑分区号码都只能从5开始,1-4的分区编号只能被主分区使用。以下分别是全为主分区的分区表与既存在主分区也存在扩展分区的情况:




关于ext文件系统的组成:
block:
磁盘分区只有被文件系统格式化之后才能被操作系统使用。被文件系统格式化后的分区的最小单位为block,在格式化分区的时候可以对block的大小进行指定,一般为1KB,2KB,4KB。
inode block:
用于存放文件和目录的权限信息,比如当前用户对当前文件是否可读、可写、可执行。每一个inode block都是编有号码的,同时每一个inode block都与一个data block相关联。
data block:
存放文件的实际数据,data block同样是有进行编号的。inode block与data block的关系如下图:

当文件数据的容量超过了一个block的大小时,会将文件的数据分别存放到多个block中。inode中会存放所有data block的索引。
inode table:
记录当前文件系统中所有的inode信息。
inodebitmap:
记录当前文件系统中未被使用的inode block块。
databitmap:
记录当前文件系统中未被使用的data block块。
superblock:
用于存放当前文件系统中inode block和data block的使用情况。


关于目录在文件系统中是如何被表示的:
文件系统中每个目录同样对应一个inode block和一个data block,inode block中记录该目录的权限,data block中记录的是当前目录下所有文件的文件名,和这些文件所对应的inode block的索引。目录与其对应的inodeblock的关系如下:



文件系统与目录树的结合
由于操作系统中只能通过目录树才能对文件进行操作,所以要将文件系统与目录树进行结合,这种结合的方式就是挂载。文件系统只能被挂载在目录下。挂载成功之后,就可以在目录下对文件进行操作了。

ext2文件系统与ext3文件系统的区别:
说道ext2与ext3文件系统的区别就不得不说这两种文件系统对写文件的区别,ext2文件系统对文件的写入是通过以下步骤进行的:
1、查看inode bitmap中未被使用的inode block,将文件的权限信息写入未被使用的inodeblock。
2、查看data bitmap中未被使用的data block,将文件数据内容写入datablock。
3、将datablock的索引写入inodeblock中。
4、修改inode bitmap和data bitmap中的信息,将被使用掉的inode block和data bitmap标记为已使用。
5、更新superblock中的信息。
从这上面的几个文件写入步骤中就可以看出这样的写入顺序是存在一定的问题的:
当发生异常情况时,比如突然断电,就可能会导致不同表中的数据不一致,这种不一致可能出现在很多方面,inode bitmap、data bitmap表中的情况可能和这两个块实际使用的情况不一致;inode bitmap、data bitmap这两张表中的内容可能和superblock中记录的数据不一致。这些不一致会使数据在异常情况后的恢复比较困难。为了解决这种数据不一致的情况,所以出现了ext3文件系统。它与ext2文件系统的区别就是多了个日志记录功能,在日志写数据之前会进行日志记录,在数据写完成之后也会进行日志记录,中间写数据的过程也是先写日志再写数据,这就使数据的恢复可以根据日志来进行,这就感觉有点像一般的关系型数据库对数据的写入方式,先写日志再写数据。


分享到:
评论

相关推荐

    个性化的E-MAIL软件 Icredimail2001b

    个性化的E-MAIL软件 Icredimail2001b 充满个性化E-MAIL软件,可以选择信纸动画和声音及签名

    《基于YOLOv8的蹦床馆识别系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    MOCD207M 产品规格书

    MOCD207M 丝印D207 SOP8 1.25V 150mA晶体管输出光耦

    2024年迎接上市公司重组并购浪潮推动出版行业企业数字化转型报告.pdf

    2024年迎接上市公司重组并购浪潮推动出版行业企业数字化转型报告

    基于Andorid的闹钟功能设计.zip

    基于Andorid的闹钟功能设计实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。

    电商_微信小程序_学习项目_电商功能演示_1742849441.zip

    电商_微信小程序_学习项目_电商功能演示_1742849441.zip

    《基于YOLOv8的网球发球分析系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    React_应用开发_github-notetaker_实战_1742847797.zip

    app开发

    《基于YOLOv8的隧道安全监测系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    5小时零基础入门小程序云开发-2.7G课程网盘链接提取码下载.txt

    本套课程带领大家零基础入门小程序云开发。摆脱后台自己实现小程序后台,学会音视频小程序的开发,学会小程序图片的上传与管理,学习人工智能识别图片,用小程序模仿微信朋友圈,实现一个云相册。

    移动开发_Android_MVC_调试工具框架BeeFram_1742846880.zip

    移动开发_Android_MVC_调试工具框架BeeFram_1742846880.zip

    vue3-element-admin基础框架带权限参考文档:https://vue3-element-admin-site.midfar.com

    vue3-element-admin基础框架带权限 参考文档:https://vue3-element-admin-site.midfar.com

    《基于YOLOv8的儿童行为监测系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    Python网页文本爬虫:基于小说网站的基础爬虫实现与解析

    内容概要:本文介绍了Python网页文本爬虫的基本概念及其应用,特别是针对小说网站的爬虫实现。文中详细讲解了爬虫的工作原理和技术要点,如urllib库的使用、字符串操作以及正则表达式的初步应用。此外,还提供了完整的爬虫代码示例,涵盖从HTML页面下载到数据提取和处理的全过程。通过对小说网站的具体案例分析,展示了如何利用Python编写简单的爬虫程序来抓取并保存所需信息。 适合人群:对Python编程有一定基础的学习者,尤其是希望了解和掌握网页爬虫技术的初学者。 使用场景及目标:适用于想要快速入门Python爬虫技术的人群,帮助他们理解爬虫的基本原理和实现方法,为后续深入学习打下坚实基础。具体应用场景包括但不限于自动化数据收集、信息检索系统构建等。 其他说明:虽然本文主要关注于基础爬虫的实现,但同时也提到了一些进阶的技术方向,如HTTP长连接和多线程的应用,供有兴趣进一步探索的读者参考。

    jiguang.zip

    jiguang.zip

    weifuchenggg_JKBD_1742849495.zip

    weifuchenggg_JKBD_1742849495.zip

    移动开发_iOS_Safari快捷方式_应用内功能演示_1742853882.zip

    app开发

    移动开发_iOS_Scriptable_TSX_自动化脚本库_1742849101.zip

    app开发

    《基于YOLOv8的赛车运动分析系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

Global site tag (gtag.js) - Google Analytics