(七)文件系统--基础篇(1)

1,前言

有关文件系统的学习记录,若有不当之处,请您指出,您的指点是我的荣幸。
参考自–鸟哥的Linux私房菜

2,Ext2文件系统

2.1,文件系统特性

在Linux中,当我们新建一个文件的时候,文件的权限,创作者等相关属性该如何存储?文件中的数据该如何存储?
实际上,文件系统会将权限等相关属性存储到inode中,文件中的数据会存到data block块中。而inode和block的数量自然不能只有一个,实际上有很多的inode和block,还有一个数据叫super block用来记录文件系统的相关信息。
这里提一句:当磁盘分区之后,需要先进行格式化才能使用,格式化的目的对指定的硬盘分区进行初始化,建立文件分配表以便系统按指定的格式存储文件。

2.1.1,inode&block&super block

  • inode:记录文件的属性,一个文件占用一个inode(无论这个文件多大或者多小),同时记录此文件的数据所在的block号码
  • block:实际记录文件的内容,若是文件太大的时候,会占用多个block
  • super block:记录此文件系统的整体信息,包括inode/block的总量,使用量,剩余量以及文件系统的格式与相关属性

对于一个文件来说,它的权限等属性存储在inode,一个文件占用一个inode,而inode也会记载存储文件数据的block编号,以便需要访问文件的时候,系统知道去哪个block读取数据,提高了访问效率。
下面依据数据访问方式的不同,介绍两个常用的文件系统

2.1.2,索引式文件系统

例如:某一个文件的权限等属性是存在inode 4号中,inode 4号中同时记录了该文件的数据实际放置点是在2,7,13,15这几个block中,那么文件系统就会按照这样的顺序来读取文件的数据并进行组装。
在这里插入图片描述这种数据访问方式我们称之为索引式文件系统

2.1.3,FAT文件系统

U盘所采用的是FAT(File Allocation Table)文件系统,这种格式的文件系统是没有inode存在的,所以文件系统无法在一开始就将所有相关的block读取出来,每个block的号码都存在前一个block中,也就是:
在这里插入图片描述

2.2,Ext2文件系统

文件系统一开始的时候就将inode和block规划好了,除非重新格式化,否则inode和block固定就不再改变了。但如果文件系统高达数百GB的时候,那么inode和block的数量也会极多,这么多数量的inode和block如果不采取一些措施,会变得不易管理。
所以Ext2在格式化的时候是区分为多个块组(block group),每个块组都有独立的inode/block/super block系统。
在这里插入图片描述下面对block group进行介绍

2.2.1,block group

2.2.1.1,data block

data block是用来放置文件内容的地方,Ext2支持的block的大小有1KB,2KB,4KB三种。block的大小在格式化的时候就已经固定好了。由于block的大小,文件系统容量和最大单一文件容量并不相同

  • block的大小和数量在格式化完成之后便不能再改变,除非重新格式化
  • 每个block最多只能放置一个文件的数据,也就是说不能将两个文件的内容放置到一个block中。
  • 如果文件的大小大于一个block的容量时,会多占用一个block来存储数据
  • 若文件的大小小于一个block的容量时,则该block的剩余空间便不会被使用,也就会造成磁盘空间的浪费。
  • block过大或者过小都不行:block过小会消耗更多的inode,过大会浪费更多的磁盘空间
  • 所以在进行文件系统的格式化之前,需要先估计一下文件系统的使用情况。
2.2.1.2,inode table

接下来探究一下inode里面记录了什么?
inode的内容至少包括这些:

  • 文件的权限
  • 文件的所有者与组
  • 文件大小
  • 文件的创建或者修改时间
  • 最近一次读取时间
  • 最近的修改时间
  • 文件内容的真正指向
  • 定义文件特性的标志

每个inode固定大小是128bytes或者256bytes,每个文件都仅会占用一个inode,所以一个文件系统能创建多少个文件取决于inode的数量。
接下来简单探究一下inode/block和文件大小的关系:这里的inode大小以128bytes为例

一个inode除了存储文件权限等属性的区域,还有12个直接索引,一个间接索引,一个双间接索引,一个三间接索引
以1KB大小的block为例,而记录一个block号码需要4bytes
也就是说,用block来存储block号码的话,每个block能存储1KB/4B=256个

在这里插入图片描述

  • 直接(一级索引):每个直接指向一个block,这个block存储的是文件数据
  • 间接(二级索引):每个间接指向一个block(1),这个block(1)存储的是文件数据所在的block的编号
  • 双间接(三级索引):每个双间接指向一个block(1),这个block(1)指向的是256个block(2),而每个block(2)里面存储的是文件数据所在的block的编号
  • 三间接(四级索引):以此类推

所以一个inode(一个文件)可以存储的数据是:

12*1KB+256*1KB+256*256*1KB+256*256*256*1KB=16843020KB
约等于16GB
这是1KB大小的block
而2KB大小的block,单一文件大小为256GB
4KB大小的block,单一文件大小为2TB

2.2.1.3,super block

super block是记录整个文件系统相关信息的地方,没有super block就没有这个文件系统。它主要记录:

  • block与inode的数量
  • 未使用的与已经使用的inode/block数量
  • block与inode的大小
  • 文件系统的挂载时间,最后一次写入数据的时间,最后一次检验磁盘(fsck)的时间等文件系统的相关信息
  • 一个validbit数值,如果该文件系统已经被挂载,则validbit为0,否则为1

superblock是至关重要的,每个block group里面都可能含有super block,一般来说,super block都会存有备份,以便当super block损坏时得以恢复。

2.2.1.4,查看super block

可以通过df调出目前已经挂载的设备,然后使用dumpe2fs查看super block的信息

df
dumpe2fs 设备名 | more

在这里插入图片描述查看文件系统的相关信息
查询结果:上半部分是superblock的内容,下半部分是每个block group的内容。
在这里插入图片描述在这里插入图片描述

2.2.1.5,inode bitmap & block bitmap

记录哪些inode,block是已使用和未使用的。
通过这两个,系统可以很快的找到可用的空间来处置文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值