本文对鸟哥的Linu私房菜(基础学习篇-第四版)7.1.27.1.3小节进行了归纳,其中包含了笔者自己的一些理解。如若有误,还望指正。

文件系统特性

  1. 为什么要格式化?

对于一个新买的磁盘,插在主板上,计算机并不能直接使用。还需要对这个磁盘进行分区,格式化操作,之后操作系统才能使用该磁盘。

为什么要进行格式化?

这是因为每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需要的数据,因此就需要将分区进行格式化,以成为操作系统能够利用的文件系统格式。

  1. 文件系统与硬盘分区

过去,一个分区只能被格式化为一个文件系统,所以称一个文件系统就是一个硬盘分区,这没有太大的问题。但是,新技术产生,比如LVM、软件磁盘阵列(software raid)等,这些技术可以将一个分区格式化为多个文件系统(如LVM),或者将多个分区合成一个文件系统(LVM,RAID)。我们不再说针对硬盘分区进行格式化了。

我们可以称呼一个可被挂载的数据为一个文件系统而不是一个分区。

  1. 文件系统的运行

文件系统如何运行与操作系统的文件有关。在Linux操作系统下,文件除了具有实际的内容外,还具有很多属性,比如权限,归属,状态等(这里的权限指文件的访问操作权限,归属指文件所属用户,所属组等)。

文件系统通常会将内容和属性(包括权限)分开存放在不同区块。

内容(实际数据):存放到数据区块
属性(包括权限):存放到inode

为了更好的理解,我们先对一些重要的概念进行简略解释:

文件系统是在建立在磁盘上面的,我们在描述相关概念时,可以从磁盘的角度去理解。

  • 区块(block): 一个或几个扇区组成的数据存储空间。我们的数据是存储在磁盘上的,具体地说是存储在磁盘上的扇区上的。所谓扇区就是磁盘的最小存储单位。扇区有不同的规格,主要是512B4K两种规格。区块有1K.2K.4K三种主要规格。当我的区块规格设置为4K,扇区规格为512B时,8个扇区就构成了一个区块。为了便于后面相关概念的理解,我们可以将区块理解为磁盘上能够存储一定大小数据的空间。

    当我们的对文件系统进行格式化时,操作系统会将整个文件系统对应的磁盘分区按照指定大小划分为一个一个的区块(这里是说一个磁盘分区格式化为一个文件系统的情况),并且为每个区块都进行一个编号。

    这里需要注意区分一下区块数据区块

  • 数据区块(data block):用来存储文件实际内容的区块。数据区块也是区块,只是专注于存储文件实际数据。当文件较大时,一个区块存不下,就要用到多个区块。

  • inode:记录文件属性。一个文件占用一个inode,同时记录此文件的数据所在区块号码。一个文件的inode实际上是对该文件信息的抽象命名,一个文件的inode也是存储在某个区块中的。inode也有规格,一般为128B,256B。如果我的inode设置为128B,那么磁盘上对应的某个128B大小的空间就用来存储该inode对应文件的属性信息。

  • 超级区块:记录此文件系统的整体信息。超级区块也是区块,只不过该区块专注于记录文件系统的整体信息。这些信息包括:inode与数据区块的总量、使用量、剩余量,以及文件系统的格式与相关信息等。比如你去百度上搜索某某大学,进入其官网,可以看到该大学的简介,这里的简介相当于"超级区块"。

Linux的ext2文件系统

当我们对文件系统进行格式化时,操作系统会将对应磁盘的部分划分为一个一个的区块。然后会规划哪些区块存储inode,哪些区块存储文件实际数据(即哪些区块充当数据区块),同时还有一些区块被用来存储其他信息。

文件系统一开始就将inode数据区块规划好了,除非重新格式化(或者使用resize命令),否则不能修改inode数据区块的大小与数量。

为了便于管理,操作系统不会将整个文件系统的inode存放在一起,也不会将所有文件实际数据存放在一起,而是分为多个区块群组,每个区块群组有自己独立的inode,数据区块,超级区块等。

具体如下:

上图为ext2格式化后的结构图。

在整体规划中,文件系统最前面有一个启动扇区(boot sector),这个启动扇区可以安装启动引导程序。这里不做介绍。

从上图可以看出:每个区块群组有六个部分

  • Super Block(超级区块):存储整个文件系统的相关信息,没有超级区块,就没有这个文件系统。注意不是每个区块群组都有超级区块。后面我们会使用命令进行验证。

*Filesystem Description(文件系统描述说明):主要记录某一类区块的起始与终止编号。比如30000~350000是我的数据区块,这段区块用来存放文件实际数据,那么这个起始编号与终止编号会被Filesystem Description记录。同样会以这样的方式去记录(超级区块块位图inode位图inode table)。

  • 区块对照表(块位图):用来记录哪些区块被使用,哪些区块未被使用。

  • inode对照表(inode位图):记录哪些inode已被使用,哪些未被使用。

  • inode表(inode table):记录inode的实际内容,比如文件的属性,文件实际数据放置在那几个区块。inode记录的数据至少有下面这些:

    • 权限
    • 归属
    • 大小
    • 状态(时间戳):ctime,atime,mtime
    • 文件特性标识(flag)。如SetUID
    • 文件实际内容的指向。也就是实际内容存储在哪些区块的编号。
  • 数据区块(data block):用来存放文件数据的区块。ext2文件系统中所支持的区块大小为1K,2k,4k。区块大小的差异会影响到文件系统所能支持的最大磁盘容量与最大单一文件容量,这个以后再讲。


ext2文件系统有一些限制:

  1. 原则上,区块大小与数量格式化完后就不能再修改。
  2. 每个区块只能放一个文件的数据,即不能将两个不同文件的数据放在同一个区块。
  3. 承上,文件大于区块大小时会占用多个区块,文件小于区块大小会独占整个区块(因为不能有其他文件的数据,此时会造成磁盘空间的浪费)。

Linux文件系统---ext2相关推荐

  1. Linux文件系统及磁盘分区与格式化(二次排版)

    Linux 的文件系统 磁盘物理组成                磁盘的组成与分区:  由图中可以看到磁盘中存储数据的部件为圆形的盘片(磁盘主要记录数据的部分). 盘片的结构      而磁盘的物理 ...

  2. linux 如何格式化ext2,Linux的Ext2文件系统(InodeBlock)详解

    前述:Linux系统管理员很重要的任务之一就是管理好自己的磁盘文件系统,每个分区不可太大也不可以太小,太大会导致磁盘容量的浪费,太小会导致产生的文件无法存储的问题.在Linux里面文件是由两部分数据组 ...

  3. 浅谈Linux标准的文件系统(Ext2/Ext3/Ext4)

    Ext 全称Linux extended file system, extfs,即Linux扩展文件系统,Ext2就代表第二代文件扩展系统,Ext3/Ext4以此类推,它们都是Ext2的升级版,只不过 ...

  4. Ext2, Ext3和Ext4是什么以及如何创建和转换Linux文件系统

    按照这里的指导,任何人能够转换它们的文件系统,但因为以下任务需要高级的管理规范,在做这之前,确保你必须做了重要的备份.如果遇到任何错误,至少你能够用备份数据恢复. 在计算机中,文件系统是命名并且逻辑放 ...

  5. linux文件系统什么格式转换,什么是Ext2,Ext3和Ext4以及如何创建和转换Linux文件系统...

    我用我的Fedora旧系统进行测试,我从ext2转换为ext3,EXT2 到ext4和ext3到ext4文件系统成功. 按照本指南任何人都可以巧妙地转换自己的文件系统,但我仍然想提醒你将在此之前,因为 ...

  6. linux系统常见文件系统ext2、ext3、ext4的区别-小白笔记

    ext2.ext3.ext4文件系统 ext2,即第二代扩展文件系统,英文是second extended filesystem,是linux系统内核所用的文件系统,用以代替ext,于1993年1月加 ...

  7. Linux 文件系统剖析

    Linux 文件系统剖析 按照分层结构讨论 Linux 文件系统 M. Tim Jones, 顾问工程师, Emulex Corp. 简介: 在文件系统方面,Linux® 可以算得上操作系统中的 &q ...

  8. linux文件系统dentry_NFS 文件系统源代码剖析

    NFS 文件系统概述 NFS(Network File System,网络文件系统)是一种基于网络的文件系统.它可以将远端服务器文件系统的目录挂载到本地文件系统的目录上,允许用户或者应用程序像访问本地 ...

  9. 文件系统:Linux文件系统剖析

    查看原文:http://www.ibm.com/developerworks/cn/linux/l-linux-filesystem/ 在文件系统方面,Linux® 可以算得上操作系统中的 " ...

最新文章

  1. 快速 开发平台 架构_快速介绍清洁架构
  2. 使用MyBatis简化枚举类值的存储和读取
  3. Spring MVC生成PDF文件代码示例
  4. numpy读取csv_Numpy——IO操作与数据处理
  5. Qt中修改应用程序和标题栏的图标
  6. jar文件导出和导入
  7. 80行Python实现-HOG梯度特征提取
  8. cs1.6国内正版服务器,2021最新CS1.6 HLDS 8684 纯净比赛服务端(Win版)
  9. 规范JavaScript注释
  10. linux搭建windows无盘系统,Ubuntu系统搭建drbl无盘服务端环境
  11. 数据存储过程之MySQL与ORACLE数据库的差别
  12. crtlc不能复制文件_win10系统按ctrl+c快捷键无法复制文件的操作方法
  13. js jquery 3D模型展示
  14. 读datasheet遇到的名词,Assert,De-assert,component
  15. 甲乙分别自A,B两地同时相向步行,2小时后中途相遇,甲乙步行速度都提高了1千米/时,当甲到达B地后立刻按原路向A地返行,当乙到达A地后也立刻按原路向B地返行,甲乙两人在第一次相遇后3小时36分
  16. 其它品牌手机可以刷鸿蒙,定了,鸿蒙系统4月起开始搭载智能手机,其它品牌手机能支持吗?...
  17. 苹果ios微信浏览器视频自动播放
  18. Android HashTable
  19. IT人士必去的10个网站 .
  20. se r rsefersa

热门文章

  1. artifactIdspring-boot-starter-jdbc/artifactId
  2. 错误: 未能完成程序集的安装(hr = 0x8007000b)。探测终止。
  3. XOR-gun (位运算,思维,区间暴力)
  4. 把PPT图表做漂亮点吧!
  5. 练手小项目(5)安全卫士_程序锁
  6. mac使用pptp的正确方式
  7. 二手车市场价格预测----项目第一天
  8. 如何制作苹果的推送证书
  9. node解码视频流,调用海康视频摄像头
  10. 刷新物化视图很慢_快速刷新物化视图