【Linux】索引式文件系统
1.文件系统的特性
每种操作系统能够使用的文件系统并不相同。例如:
Linux上文件系统:EXT4(由最初EXT2发展而来)
U盘:FAT32
windows:NTFS
磁盘在分区完成之后,要使得操作系统能够识别文件系统,就需要进行格式化,把分区格式化成某一个操作系统能够识别的文件系统。
一般来说,一个分区中装一个文件系统,但是现在技术发展了,一个分区可以装多个文件系统,也能将多个分区合并成一个文件系统。一个文件系统可以挂载到操作系统上。
2.EXT4文件系统
在Linux系统中,文件的权限与属性放到inode中,实际数据则放置到data block区块中。另外,还有一个超级区块superblock会记录整个文件系统的整体信息,包括inode与block使用量,剩余量等。
- inode:记录一个文件的所有属性,以及这个文件所对应的block的号码(一个文件对应一个inode)
- block:存放文件的实际数据(若文件数据太大,则使用多个block存放)
- super block:记录文件系统的整体信息,包括:inode、block的数量、文件系统的使用量、剩余量等。
在Linux系统中,为每个文件分配一个称为索引节点的号码inode,可以将inode简单理解成一个指针,它永远指向本文件的具体存储位置。
系统是通过索引节点(而不是文件名)来定位每一个文件。
3.EXT4文件系统读取数据的过程
系统先格式化出inode与block的区块。如下图,要访问一个文件时,首先找到这个文件的inode,根据inode中的权限查看当前用户是否有权力读取这个文件;然后根据inode中记录的block的号码,操作系统据此排列磁盘阅读顺序,一口气将四个block内容读出。最后找到block,读出数据。这种文件系统就叫做索引式文件系统。
Linux之所以能支持多种文件系统,其实是由于Linux提供了一个虚拟文件系统VFS,VFS作为实际文件系统的上层软件,掩盖了实际文件系统底层的具体结构差异,为系统访问位于不同文件系统的文件提供了一个统一的接口。
- 有些文件系统非常大,高达数百GB,那么格式化后会有大量的inode和block,为了方便管理,文件系统对所有的inode和block进行分组,每一组叫做block group,每一组都有独立的inode/block/super block。
- data block数据块是用来存储文件实际数据的地方,只有1KB、2KB、4KB这三种。
- 所有的inode和block在格式化的时候大小和数量就固定了,而且每一个block都有固定的编号,便于inode查找。
- 文件系统支持的最大磁盘容量和单一文件容量是不一样的;
block大小 | 1KB | 2KB | 4KB |
---|---|---|---|
最大单一文件容量 | 16GB | 256GB | 2T |
一个block只能存放一个文件的数据,如果文件太大,则使用多个block存放,如果一个block放不满,则剩下的就空着。
- 每个block的大小要合理地选择, 如果太大,会造成最后一个block中会有大量剩余的空间;如果太小,那么inode中就要记录更多的block号码,每次找block要耗时,所以这样效率也不高。
- 由于每个inode在格式化的时候大小就已经固定了,并且只有128bytes,并且每个文件仅能占用一个inode,因此,文件系统能够创建的文件数与inode的数量有关。除此之外:
- 当一个文件很大时,它的block太多,每个block号码需要4byte,那么inode记录不下了怎么办?这时候将block号码存在一个block中,inode仅仅需要记录这个block的号码即可,这就是一次间接索引。Linux的ext2文件系统最多支持3级间接索引。
- super block记录了整个文件系统的相关信息,是非常重要的,如果super block死掉了,那么系统会花费大量时间去挽救他。
- 一般super block的大小为1024bytes
- 每个block group中都含有一个super block,由于一个文件系统中只能有一个super block,所以这些group中的super block都是一样的,在第一个super block挂了的时候进行挽救用的。
【Linux】索引式文件系统相关推荐
- 操作系统(12)-【Linux】索引式文件系统
一.前言 磁盘在分区完成之后,要使得操作系统能够识别文件系统,就需要进行格式化,把分区格式化成某一个操作系统能够识别的文件系统. 一般来说,一个分区中装一个文件系统,但是现在技术发展了,一个分区可以 ...
- Linux 操作系统原理 — 文件系统 — 存储布局
目录 文章目录 目录 磁盘分区 MBR 与分区表 创建 MBR 分区 创建 GPT 分区 分区的格式化 分区的特性 引导块 空闲空间块 inode 区块.data block 区块与超级块 LVM 与 ...
- linux 删除分区_详解linux系统架构--文件系统体系
概述 之前已经对Linux系统架构的内核部分单独做了深入介绍,今天就拿Linux系统架构中的文件系统做一下介绍吧~先介绍下概念: 文件系统是文件存放在磁盘等存储设备上的组织方法.Linux系统能支持多 ...
- 浅谈Linux标准的文件系统(Ext2/Ext3/Ext4)
Ext 全称Linux extended file system, extfs,即Linux扩展文件系统,Ext2就代表第二代文件扩展系统,Ext3/Ext4以此类推,它们都是Ext2的升级版,只不过 ...
- linux的常用文件系统格式
文件系统指文件存在的物理空间.在Linux系统中,每个分区都是一个文件系统,都有自己的目录层次结构.Linux的最重要特征之一就是支持多种文件系统,这样它更加灵活,并可以和许多其它种操作系统共存.Vi ...
- linux之EXT2文件系统--理解block/block group/索引结点inode/索引位图
0. 文件系统和图书馆 在linux上操作文件,和在图书馆借书是非常相似的. 硬盘上的文件系统,好比图书馆的书架:而vfs则是图书馆的管理系统. 内核的工作: 1. 维护一个文件的目录树(dentry ...
- Linux 的虚拟文件系统(强烈推荐)
1 引言 Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等.通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系 ...
- 马哥学习周总结第一周→linux简介、’文件系统及基础命令------李洋个人笔记。...
linux计算机的设备有两种 1 字符设备(顺序数据) 键盘,显示器 共同点是数据交换时是一个一个字符来进行的. 2 块设备(随机数据) 硬盘 交换数据按包为单位进行. Linux的文件:在存储空间存 ...
- Linux 知:文件系统
文章目录 1. 前言 2. 文件 2.1. 一切皆文件 2.2. 文件属性 2.3. 目录结构 2.4. 文件路径 3. 文件系统 3.1. 文件系统种类 3.2. 文件系统特性 3.2.1. 格式化 ...
最新文章
- 11月最佳机器学习开源项目Top10!
- 电芯容量在前期循环中容量增加_如何设计提高电池电芯的容量密度?
- js/jq基础(日常整理记录)-2-一个简单的js方法实现集合的非引用拷贝
- vs编译c语言文件不读取对象式宏,C代码的条编译宏windows的VS和linux下gcc编译不一样...
- 【软件工程】填空题题库
- LAMP攻略: LAMP环境搭建,Linux下Apache,MySQL,PHP安装与配置
- yii2通过url访问类中的方法_每日学点---nginx变量使用方法详解(3)
- Struts2是什么?
- hbase major_compact 文件会变小吗_图解式学习:可能是最易懂的Hbase架构原理解析(二)...
- 澜舟科技开源轻量级中文语言预训练模型——孟子模型
- 中金财富:如何获取不“平均”的收益?
- DFS和BFS算法框架
- C语言调用函数流程图怎么画,【C语言】求教这个流程图怎么画啊
- bzoj3384[Usaco2004 Nov]Apple Catching 接苹果*bzoj1750[Usaco2005 qua]Apple Catching*
- 26个字母大小写转换
- Developing DataBase Applications Using MySQL Connector/C++ 中文文本
- 基于vue-router的从后端动态加载菜单的实现
- AI美颜SDK功能算法代码解析
- 工业“元宇宙”蓄势待发,未来制造业将如何变化?
- 计算机等级考试题和答案,全国计算机等级考试试题和答案..doc
热门文章
- C语言中的字符串函数
- ASCII、ANSI、UNICODE及UTF-8编码
- gcc -o sqlite3 shell.c sqlite3.c -ldl -lpthread
- [Python] L1-012. 计算指数-PAT团体程序设计天梯赛GPLT
- PAT 1068. 万绿丛中一点红(20)-乙级
- tuxedo管理命令之tmadmin
- 部署NEP-5智能合约 (第1部分)
- Android性能优化:手把手带你全面实现内存优化
- 如何在原生微信小程序中实现数据双向绑定
- 无人机送货新方式?只为解决“最后一公里”