Linux 下EXT2文件系统 —— 如何将蚂蚁和大象优雅的装进冰箱里
这一阵子真是偷懒,无时无刻不和自己身体中的懒癌做斗争。最终我还是被打败了,星期天两天几乎都是荒废过去的,在空闲的时候实际上我内心也是有点焦虑的,不知道去怎么度过这时间。学习吧又不想学习,看电视娱乐吧也没有心情。在这种状态中,我度过了星期天,到了今天我才趴在窗扇看了一会linux。这一部分之前也看过,不过是走马观花式的看,并没有投入精力。今天看了下,发现其实windows的文件系统和linux还是有很多不同的。从设计的角度上,linux的文件系统似乎更加聪明,看完这部分,我也更喜欢linux了。
在看linux文件系统之前我建议我们还是了解下windows的文件系统。这样有助于我们理解linux的文件系统,也更能体会到linux文件系统领先于windows的原因。现在我们的电脑大部分都是NTFS的文件系统,这主要是解决FAT32单文件不能超过4G的弊端,当然还有其他的改进。现代一些软件特别庞大,网上下载一个LOL是6G多(已经分开为几个文件了)。所以为了适应快速发展的软件行业,现在windos系统主要是NFTS文件系统的。
我们的U盘大部分是FAT文件系统,那么FAT是如何进行文件存储的。通常情况下U盘分成很多数据块,一个数据块为为一个block。假设一个block为4k,一个文件为1M。则需要252个block来储存这个文件。那么读取的时候是如何将这256个block都读取到呢?从第一个block开始读起,每一个block最末端标注了第二个block的位置,依次类推直到读到最后一个block。假如我有一个文件有一个G,是不是要一个个的读下去等所有的块都读完了才能组成我所需要执行的文件吗?这样效率会不会很低?下面这张图描述了FAT32文件系统读取文件的过程。这个过程有点像成语中描述的顺藤摸瓜、按图索骥一样。没有图说个毛,还是画图说下。

电脑重装了win10 还没有装画图软件,所以只能献丑了,但是大致的意思已经说明清楚了。每一个文件块后面都标明了下一个文件块的位置,然后依次去寻找。
但是linux的EXT2文件系统不是这样找文件的,而是用了一种很聪明的方式。linux的文件系统有三部分构成,super block、inode,block。
super block 主要用来记录该文件系统的整体信息,相当于总管家,记录的信息包括inode block的总量,已经使用的量,剩余量,文件系统的格式等。
inode(我总是拼写成innodb)用来记录文件的属性,一个文件占用一个inode。同时记录该文件的block号码。
block 是实际上记录文件内容的容器。当文件很大的时候会使用很多block来装载。如下图显示:

上图描述的情况更加复杂。因为一个inode 固定大小为128byte。一个block的大小根据设置不同可能是1kb 2kb 或者4kb。
inode这128byte中记录了那些信息呢:
该文件的访问方式:read/write /excute
该文件的所有者所属组:owner/group
该文件的大小
该文件的三个时间:ctime atime mtime
定义该文件的标志:flag setUID。
该文件真正内容的指向:pointer
除此之外一个inode可以指定12个block的文件编号。
上面的图总结为一句话:12个直接、一个 间接、一个双间接、一个三间接记录区。
假若一个block是1kb。那么
12个直接指向:12 * 1 = 12k。
一个间接:一个block记录256条记录。256 * 1k = 256kb
双间接: 一个block存储存储256个block的位置。这256个block全都是存指向block数据的。
数据量为:256 * 256 * 1k
三间接: 256 * 256 * 256 * 1kb。
总额: 12k + 256kb + 256 * 256+ 256 * 256 * 256 = 16GB.
关于这个文件系统。大家了解到这个基本知识就行了,知道他是怎么运作的,了解设计的精妙。
这是个如何将蚂蚁和大象优雅装进冰箱里的方法,真是十分精妙。
Linux 下EXT2文件系统 —— 如何将蚂蚁和大象优雅的装进冰箱里的更多相关文章
- 文件系统的特性,linux的EXT2文件系统【转】
本文转载自:https://blog.csdn.net/tongyijia/article/details/52809281 先来提出三个概念: - superblock - inode - bloc ...
- 全面了解Linux下Proc文件系统
全面了解Linux下Proc文件系统 Proc是一个虚拟文件系统,在Linux系统中它被挂载于/proc目录之上.Proc有多个功能 ,这其中包括用户可以通过它访问内核信息或用于排错,这其中一个非 ...
- linux下的文件系统
转http://www.cnblogs.com/yyyyy5101/articles/1901842.html 谈谈个人对于文件系统的认识,其实这也体现了计算机操作系统的抽象:你不用管计算机中的文件如 ...
- Linux中ext2文件系统的结构
1.ext2产生的历史 最早的Linux内核是从MINIX系统过渡发展而来的.Linux最早的文件系统就是MINIX文件系统.MINIX文件系统几乎到处都是bug,采用的是16bit偏移量,最大容量为 ...
- Linux下删除文件系统空间不释放的问题
删除了Linux下的一个文件,但是系统空间并没有被释放. 如下:/home/hadmin/data/hadoop 使用了1.3T的空间,但是实际只使用了600多G 原因是我删除了一个600多G的文件, ...
- <解说linux下proc文件系统>
proc文件系统的作用是访问系统内核信息 proc不是一个真实的文件系统,它不占系统的外存空间,只是以文件的形式为用户访问linux内核数据提供接口,因为系统内核总是动态的变化,所以我们所捕捉到的也只 ...
- Linux下的文件系统2
2017-03-13 上文针对VFS的基本信息做了介绍,并简单介绍了VFS涉及的几个数据机构,本节结合LInux源码,对各个结构之间的关系进行分析. 一.总体架构图 总体架构图如上图所示,结合进程访问 ...
- linux下查看文件系统类型
1. df -hT命令 -h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G) -T, --pr ...
- Linux下查看文件系统磁盘使用
[root@localhost ~]# df -h 可以查看所有文件系统的磁盘使用情况 du --max-depth=1 -h 可以查看当前目录下各子目录的磁盘使用情况 参考:http://www.2 ...
随机推荐
- Linux下解压超过4G的zip文件
从Windows平台通过FTP上传一个大小约为6G的zip文件到Linux系统(Oracle Linux Server release 5.7)上,解压过程中出现如下错误: 1: [root@gsp ...
- mysql权限与安全
一.MySQL权限系统通过两个阶段进行认证: (A) 对用户进行身份认证,IP地址和用户名联合, (B) 对合法用户赋予相应权限,权限表在数据库启动的时候载入内存中. 二.在权限的存取过程中,会用到& ...
- redis 集群配置实战
文章转载自:http://hot66hot.iteye.com/blog/2050676 最近研究Redis-cluster,正好搭建了一个环境,遇到了很多坑,系统的总结下,等到redis3 rele ...
- iOS AppIcon尺寸和上传ITunes构建版本尺寸
避免忘记. 记录一下 App Icon: 29X2940X4058X5876X7687X8780X80120X120152X152167X167180X180 ITunes构建版本: 1242 x 2 ...
- Android 中shape的使用(圆角矩形)
一.在res/drawable文件夹下创建一个名为gradient_box的xml文件: <?xml version="1.0" encoding="utf-8&q ...
- CST时间转换成 yyyy-MM-dd格式
将 "Tue Oct 28 12:12:10 CST 2010" 时间格式转成 "2010-10-28 12:12:10" 格式: + (NSString *) ...
- 使用WinRar软件制作程序安装包
之前我写过使用好压软件打包程序,见随笔: 使用好压(HaoZip)软件打包EverEdit制作安装程序 - Fetty - 博客园http://www.cnblogs.com/fetty/p/4907 ...
- aop
做aop做一些事情::: package cn.happy.spring04aop; public interface ISomeService { public void doSomeThing() ...
- 玩转Unity资源,对象和序列化(上)
这是一系列文章中的第二章,覆盖了Unity5的Assets,Resources和资源管理 本文将从Unity编辑器和运行时两个角度出发,主要探讨以下两方面内容:Unity序列化系统内部细节以及Unit ...
- 用CSS正确显示人民币符号的HTML转义字符
做电子商务的难免要跟钱打交道,特别是跟人民币接触更多,但人民币符号长什么样呢,是¥还是¥?糊涂了吧^~^,要知道答案很简单,找出一张新的一百元大钞,在背面看看那个防伪的银线,上面就有. 我们做网页时要 ...