[菜鸟学Linux]外传03-漫谈Linux文件系统中文件系统

本文详细介绍了Linux中常见的文件系统,如Ext3、Ext4、XFS和SWAP的工作原理。探讨了扇区、块、inode和superblock的概念,以及它们如何协同工作以实现文件的高效存储和检索。特别关注了Ext2和Ext4文件系统中inode和blockgroup的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. Linux中常见文件系统:Ext3、Ext4、XFS、SWAP
  2. 文件是存储在硬盘上的,硬盘的最小存储单位叫做扇区sector,每个扇区存储512字节。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个块block。这种由多个扇区组成的块,是文件存取的最小单位。块的大小,最常见的是4KB,即连续八个sector组成一个block
  3. 文件数据存储在块中,那么还必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种存储文件元信息的区域就叫做inode,中文译名为索引节点,也叫i节点。
  4. Ext2文件系统在格式化的时候,基本上是区分多个区块群组(block group)的,每个block group都有独立的inode/block/superblock系统
  5. 一个文件必须占用一个inode,但至少占用一个block
  6. inode包含很多的文件元信息,但不包含文件名,例如:字节数、属主UserID、属组GroupID、读写执行权限、时间戳等。而文件名存放在目录当中,但Linux系统内部不使用文件名,而是使用inode号码识别文件。对于系统来说文件名只是inode号码便于识别的别称。
  7. 在Ext2中,inode记录block号码的区域定义为12个直接,一个间接,一个双简介,一个三间接记录区,Ext4的inode容量扩大到256bytes了,可以支撑16TB的单一文件和16EB的单一文件系统
  8. 表面上,用户通过文件名打开文件,实际上,系统内部将这个过程分为四步:1、系统找到这个文件名对应的inode号码;2、通过inode号码,获取inode信息;3、根据inode信息,找到文件数据所在的block,并读出数据;4、系统还要根据inode信息,看用户是否具有访问的权限,有就指向对应的数据block,没有就返回权限拒绝。
  9. inode也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区,存放inode所包含的信息。每个inode的大小,一般是128字节或256字节。通常情况下不需要关注单个inode的大小,而是需要重点关注inode总数。inode总数在格式化的时候就确定了。可以通过df -i查看硬盘分区的inode总数和已使用情况
  10. inode特有现象:1、文件名包含特殊字符,可能无法正常删除。这时直接删除inode,能够起到删除文件的作用:find ./* -inum 节点号 -delete;2、移动文件或重命名文件,只是改变文件名,不影响inode号码;3、打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名;4、由于硬盘分区的inode总数在格式化后就已经固定,而每个文件必须有一个inode,因此就有可能发生inode节点用光,但硬盘空间还剩不少,却无法创建新文件。同时这也是一种攻击的方式。
  11. superblock是记录整个文件系统相关信息的地方,没有superblock也就没有这个文件系统了。记录的信息可以通过dump2fs查看(Ext4以下有效)主要有:1、block与inode的总量;2、未使用与已使用的inode/block数量;3、block与inode的大小;4、文件系统的挂着时间、最近一次写入数据的时间等等等
  12. 一个文件系统只有一个superblock,第一个block group内会含有superblock之外,后续的block group不一定含有superblock,如果含有,则该superblock主要是为第一个block group内的superblock做备份

附:
inode table格式

debugfs 1.42.13 (17-May-2015)
debugfs:  open -w /dev/sda5

debugfs:  mi <2228474>
Mode    [0100664]
User ID    [1000]
Group ID    [1000]
Size    [5]
Creation time    [1487406129]
Modification time    [1487406127]
Access time    [1487406151]
Deletion time    [0]
Link count    [1]
Block count high    [0]
Block count    [8]
File flags    [0x80000]
Generation    [0x15fa265]
File acl    [0]
High 32bits of size    [0]
Fragment address    [0]
Direct Block #0    [127754]
Direct Block #1    [4]
Direct Block #2    [0]
Direct Block #3    [0]
Direct Block #4    [1]
Direct Block #5    [5502407]
Direct Block #6    [0]
Direct Block #7    [0]
Direct Block #8    [0]
Direct Block #9    [0]
Direct Block #10    [0]
Direct Block #11    [0]
Indirect Block    [0]
Double Indirect Block    [0]
Triple Indirect Block    [0] 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值