基于centos7学习总结 -- 文件系统相关内容

个人学习总结,多有不足之处,还望大佬多多指点。

一、文件系统

1. 磁盘的组成与分区:

磁盘的组成:磁盘是由磁头、机械手臂、圆形碟片和主轴马达组成。
扇区:是最小的存储单位,依据磁盘的设计不同,目前主要有512b与4K两种格式。
柱面:将扇区组成一个圆,就是柱面。
磁盘分区主要有两种格式:一种是MBR分区表,一种是GPT分区表。
MBR分区表限制较多,MBR第一个扇区为boot sector,内存储的有主引导记录MBR和分区表,其中MBR占用446b,分区表仅占用64b。
GPT分区表有较多的分区,支持的硬盘容量可以超过2TB。

2. 文件系统

2.1linux早期的ext2文件系统:

ext2文件系统通常会将文件的权限与属性与实际存储的内容分别存储。
权限与属性存放于“inode”中,文件内的数据则存放在“数据区块”中。另外还会有超级区块(superblock)会记录整个文件系统的整体信息,包括inode和数据区块的总量、使用量和剩余量等。

每个inode和数据区块都会有编号。

  • 超级区块:记录此文件系统的整体信息,inode和数据区块的总量、使用量和剩余量,以及文件系统格式等相关信息。
  • inode:记录文件属性,一个文件占用一个inode,同时记录该文件的数据所在的数据区块号码。
  • 数据区块:真正存储文件数据的地方,如果文件较大,这回产生多个数据区块。

其中ext2 的inode 、 数据区块的大小、个数是在格式化文件系统时设置并固定写死的。如需修改则需重新格式化该文件系统。

例如:有一个文件存储的内容很多,理所应当的占用较多的磁盘容量。如果一个数据区块的大小设置为1K,文件总大小为3k,则存储该文件应需要3个大小为1k的数据区块。
在这里插入图片描述
此时文件操作系统会根据inode中数据区块地址一口气将3个block内的数据读取出来。这种存取的方法称为 索引式文件系统(indexed allocation)

常见的U盘文件系统格式一般为FAT格式。该文件系统并没有inode的存在,存储数据时,没办法一次性找出所有数据的存储地址,它会找到第一块存储地址,然后读取到末尾时才会知道第二块存储地址。

由于fat文件系统文件存储机制,只有读取到一个data black的末尾才能知道下一个数据区块的地址,如果一个文件有多个数据区块且在磁盘的储存位置较为分散时,读取文件数据就会多消耗一部分时间用于磁盘寻址,读取效率降低。
如何解决:将该文件复制出去再复制回来。
在这里插入图片描述

2.2 ext2 的 inode

上面说到ext2 的inode 、 数据区块的大小、个数是在格式化文件系统时设置并固定写死的。如需修改则需重新格式化该文件系统。
如果磁盘较大,将所有的inode和数据区块放到一个磁盘上,是非常不明智的,因为较大的磁盘容量势必会有更多的inode和数据区块,不易管理。
所以ext2文件系统在格式化的时候会分为多个区块群组(block group),每个区块群组都有独立的inode、数据区块、超级区块。就像在部队,一个营分为多个连,每个连都有自己的联络系统,但最终都要向营部汇报。
ext2就有点类似:
每个文件系统的最前端都有一个启动扇区,该扇区可以安装启动引导程序。
每个区块群组包含:超级区块、文件系统描述、inoder对照表、数据区块对照表、inoder table和datablock。
在这里插入图片描述
superblock:主要存储文件系统相关信息。
主要存储有:

  • inode与数据区块总量。
  • inode与数据区块使用、未使用量。
  • inode与数据区块的大小。(block为1K、2K、4K,inode为128、256)
  • 文件系统挂载时间、最近一次写入数据的时间、最近一次检验磁盘的时间等文件系统的相关信息。
  • 一个有效数字为,以判断该文件系统是否被挂载,0已挂载,1未挂载。
    注意:每个区块群组都可能会有一个超级区块,但仅有一个超级区块是为主要的,其余超级区块作为备份,一旦该文件系统故障后可用于恢复。

文件系统描述(filesystem description)
主要记录文件系统中区块群组的开始与结束区块,以及说明每个区段(inode、数据区块、超级区块)所在那个区块之间。

inode对照表
只是记录使用和未使用indoe号码。
数据区块对照表
与inode对照表类似,仅记录使用与未使用数据区块号码。
inode table
主要记录文件或目录的权限(own 的 rwx,group 的 rwx,other 的 rwx)、属性(mtime,ctime,atime、own、group,附属组,filesize 、文件真正内容的指向)。
记录每个inode 的大小。(固定为128b或256b)
还有一部分是存储数据区块的指向:12个直接记录区、1个间接记录区、1个双间接记录区和1个三间接记录区。
每个记录区占用4B。
间接记录区指该位置指向一个数据区块,该数据区块用于存储真正存储数据的数据区块的地址。
三间接记录区也是如此。如下图:
在这里插入图片描述

可使用dumpe2fs 文件系统名来查看具体信息。
在这里插入图片描述

2.3 与目录树的关系

上面有提到无论是文件还是目录都会占用一个inode,目录在文件系统中又如何存在的呢?
一个目录占用一个inode,其中inode中记录了目录的目录名、权限即各种属性,在inode原指向文件数据存储的数据区块,则在目录中存储的是目录下的文件或目录的inode和文件名对照表。

在读取/etc/passwd 文件时:

  1. 查找 / 的indoe,根据 / 的inode查找并验证所操作的用户是否有足够权限读取该区块的内容。
  2. 根据步骤 1 取得数据区块地址,找到 内容有 etc/ 所对应的inode
  3. 根据步骤2 取得的inode 查找并验证该用户具有r x权限。所以可取该数据区块内的文件内容。
  4. 经过步骤3取得 内容有passwd 所对应的 inode。
  5. 读取inode的权限信息࿰
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值