首页 > 其他分享 >第十一章学习心得

第十一章学习心得

时间:2022-10-02 14:55:40浏览次数:51  
标签:文件 第十一章 超级 学习心得 文件系统 编号 inode block

一、梗概

  • 多年来,Linux 一直使用EXT2(Card等 1995)作为默认文件系统。EXT3(EXT3,14)是 EXT2 的扩展。EXT3 中增加的主要内容是一个日志文件,它将文件系统的变更记录在日志中。日志可在文件系统崩溃时更快地从错误中恢复。没有错误的 EXT3 文件系统与 EXT2 文件系统相同。EXT3 的最新扩展是 EXT4(Cao 等 2007)。EXT4 的主要变化是磁盘块的分配。在 EXT4中,块编号为48位。EXT4不是分配不连续的磁盘块,而是分配连续的磁盘块区,称为区段。除了这些细微的更改之外,文件系统结构和文件操作保持不变。本书的目的是讲授文件系统的原理。主要目标并非实现大的文件存储容量,而是重点论述文件系统设计和实现的原则,强调简单性以及与 Linux 的兼容性。*

二、知识点归纳

1、超级块
如果说inode块是Unix操作系统中文件的核心,那么超级块就是文件系统的心脏。启动Unix操作系统后,发现某个文件系统无法使用,很有 可能就是超级块出现了问题。为什么这个超级块有这么大的作用呢?主要是因为在超级块中保存了全局文件信息,如硬盘已用空间、数据块可用空间、inode结 点信息等等。做一个形象的比喻,这个超级块就好像是企业的资产负债表,一个文件系统中有哪些资源都记录在这个表中。
2、块组描述符
块组描述符表的起始地址位于超级块所在块的下一个块,在整个文件系统中有很多块 组描述符表的备份,备份的方式具体分为两种:
(1) 文件系统不具备稀疏超级块特性。
如果文件系统不具备稀疏超级块特性,那么在每个块组中都会有一个超级块的备份, 同时也有块组描述符表的备份。
(2) 文件系统具备稀疏超级块特性。
如果文件系统具备稀疏超级块特性,那么只在块组号是3、5、7的幂的块组(如1、3、 5、7、9、25、49等)内才对超级块和块组描述符表做备份,其他块组内则没有备份。

3、索引节点
理解inode,要从文件储存说起。
文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。

操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个”块”(block)。这种由多个扇区组成的”块”,是文件存取的最小单位。”块”的大小,最常见的是4KB,即连续八个 sector组成一个 block。
文件数据都储存在”块”中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为”索引节点”。
每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。

inode包含文件的元信息,具体来说有以下内容:
1)文件的字节数
2)文件拥有者的User ID
3)文件的Group ID
4)文件的读、写、执行权限
5)文件的时间戳,共有三个:
ctime指inode上一次变动的时间
mtime指文件内容上一次变动的时间
atime指文件上一次打开的时间。
6)链接数,即有多少文件名指向这个inode
7)文件数据block的位置*

可以用stat命令,查看某个文件的inode信息: 
  stat example.txt
i_block[15]数组包含的磁盘块指针:

4、文件系统结构
EXT2文件系统的主要组成结构有:inode table(inode表格)、data block(信息区块)、superblock(超级区块)、filesystem description(文件系统描述说明)、inode bitmap(inode对照表)、block bitmap(区块对照表)等。
  在EXT2文件系统中,文件的权限、属性与文件的内容是分开存储的,文件的权限和属性都存储在inode中,而文件内容则存储在block中。inode和block的大小和数量都是在格式化(即文件系统创建)的时候就已经固定了的。每个inode的大小均为128bytes(ext4与xfs可以设置256bytes),每个文件仅占用一个inode,所以文件系统中能够建立的文件数量与inode的数量有关。block有1k,2k和4k三种大小,所以当文件内容的大小超出block的大小时就需要多个block来存储了。
每个inode和block都是有编号的。inode中不仅存储了文件的权限和属性,也存储了文件内容存放的所有block的编号,这样只要找到文件的inode就能根据inode中记录的block的编号一次性把所有存放该文件内容的block的数据全部读取出来了。如图:

问题来了,记录一个block编号需要4bytes的空间,如果一个文件比较大的话,需要的block的数量是比较多的,但是inode只有128bytes啊,怎么记录得了那么多的block编号呢?其实并不是所有的block编号都直接记录在inode中的,当文件占用的block数量比较多的时候,系统会拿出一些block专门来记录文件内容block的编号,然后inode只要记录这些block的编号就可以读取到文件内容block的编号了。EXT2把inode中记录blok编号的区域定义为12个直接,一个间接,一个双间接,和一个三间接记录区。*
三、实践内容

通过mkfs创建虚拟磁盘

Linux下的命令:
mke2fs [-b blksize -N ninodes] device nblocks

在设备上创建一个带有nblocks个块(每个块大小为blksize字节)和ninodes个索引节点的EXT2文件系统。
例:

标签:文件,第十一章,超级,学习心得,文件系统,编号,inode,block
From: https://www.cnblogs.com/1482156703optimus/p/16748765.html

相关文章

  • 20201311陈子昂第十一章学习笔记
    第十一章学习笔记EXT2文件系统EXT2第二代扩展文件系统secondextendedfilesystem,缩写为ext2,是LINUX内核所用的文件系统。它开始由RémyCard设计,用以代替ext,于1993年1月......
  • MapXtreme 2005 学习心得 了解新建MapXtreme项目结构(二)
    一:新建示例 首先,打开VS2005,新建网站,选择MapXtreme 6.7.1 Web Application 救命网站目录关键结构如下:1:App_Code文件夹有一个自定义的AppStateManager.cs类,继承自State......
  • chap1-2的学习心得
    在这一两周的学习过程中,我认为我们已经渐渐地开始习惯于C语言的学习,并在这其中找到了自己的学习方法,明白了自己应该如何去学习C语言。在这颇为艰难的过程中,我们不仅遭遇了......
  • 第十一章读书笔记
    第十一章读书笔记11.1EXT2文件系统EXT2:Linux一直在用的默认文件系统EXT3:在EXT2之上拓展了任务日志功能EXT4:EXT4不再分配不连续的磁盘块,而是分配连续的磁盘块,称为区段......
  • 20201220蔡笃俊《信息安全系统设计与实现》第十一章学习笔记
    ext2文件系统一、任务内容自学教材第11章,提交学习笔记(10分)知识点归纳以及自己最有收获的内容(3分)问题与解决思路(2分)实践内容与截图,代码链接(3分)...(知识的结构化,知识......
  • 计算机学习心得
    先看个小故事。有一天我问我媳妇:你觉得操作系统复杂么?我媳妇想都没想就来了一句:复杂!我又问:为什么觉得操作系统复杂?或者操作系统复杂在哪里?我媳妇眼睛转了两圈之后说:不......
  • Spring MVC框架:第十一章:Ajax
    AjaxAjax程序和服务器数据传输在进行Ajax操作时,SpringMVC会需要将JSON数据和Java实体类进行相互转换,为了实现这个效果需要额外加入jackson-all-1.9.11.jar1.从浏览器发......
  • 第十一章学习笔记
    第十一章本章描述了EXT2文件系统在Linux中的历史地位以及EXT3/EXT4文件系统的当前状况;用编程示例展示了各种EXT2数据结构以及如何遍历EXT2文件系统树;介绍了如何实现支持Li......
  • 12第十一章:Docker微服务实战
    一、创建微服务模块1、建Module通过IDEA新建一个普通微服务模块,docker_boot2、改POM<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apa......
  • 20221401获奖感言和学习心得
    20221401获奖感言和学习心得一,获奖感言首先我非常荣幸获得了娄老师发出的第一份课程大奖,这无疑是对我这段时间学习成果的肯定与鼓励,我也会继续认真学习,不会因为这次获奖......