Ext
全称Linux extended file system, extfs,即Linux扩展文件系统,Ext2就代表第二代文件扩展系统,Ext3/Ext4以此类推,它们都是Ext2的升级版,只不过为了快速恢复文件系统,减少一致性检查的时间,增加了日志功能,所以Ext2被称为索引式文件系统,而Ext3/Ext4被称为日志式文件系统。
备注:Linux支持很多文件系统,包括网络文件系统(NFS)、Windows的Fat文件系统。
查看Linux支持的文件系统:ls -l /lib/modules/$(uname -r)/kernel/fs
查看Linux支持的文件系统(已载入到内存中):cat /proc/filesystems
核心设计
数据存放区
这些元素相对稳定,磁盘格式化后,就固定下来了。
- inode(索引节点)
记录文件的权限、属性和数据所在块block
的号码,每个文件都有且仅有一个的inode
,每个inode
都有自己的编号,可以把inode
简单地理解为文档索引。
备注:在磁盘格式化后,inode的大小和数量都已经固定了,大小均为128Bytes(新的Ext4和xfs为258Bytes)。读取文件时,先读取inode里面记录的文件属性和权限,匹配正确后,才会读取文件内容(block)。 在Linux系统中,实际使用inode来识别文件,而不是文件名,类似于用户标识和昵称的设计。
- inode table
存储文件系统的所有inode编号的表格 - block(数据区块)
存储的文件内容,也叫数据区块(data block),每个block
都有自己的编号,Ext2
支持的单位block
容量仅为1k、2k、4k。
备注:为了方便inode的记录,在磁盘格式化后,block的大小都已经固定了。每一个块只能存放一个文件的数据,若文件太大,将占用多个block;若文件太小,block剩余空间就不能被使用了,就会导致 磁盘空间浪费&