Linux文件系统(1)

Linux文件数据除了文件实际内容外,还含有很多的属性,比如操作权限rwx与文件属性(所有者,群组和时间参数等)

其中权限与属性会放在iNode中,而实际数据则放在data block中,另外还有一个超级块会记录整个文件系统的整体信息,包括inode和data block的使用量等

inode中有文件数据防止的block号码,如果找到文件的inode的话,自然就知道这个文件所放置的数据的block号码,当然就可以读出文件的实际数据了。

这数据该访问的方法称之为索引式文件系统 indexed allocation

其他常用的文件系统有FAT的文件系统,常用于U盘,这种格式的文件系统没有inode的存在,因此,fat没办法将文件的所有block在一开始全部读出,每个block号码都记录在前一个block中。如果一个文件的数据写入block较为分散,那么磁盘磁头将无法再磁盘转一圈能够读到所有数据,因此磁盘会多转几圈才能完整的读取这个文件的内容。

所谓的“碎片整理”,就是文件写入block太过于离散,因此文件读取的性能将会变得很差,可以通过碎片整理景同一个文件的block汇合在一起,FAT系统需要经常碎片整理。而ext2系统格式索引式文件系统不需要。


Linux的ex2文件系统

在格式化的时候去区分为多个块组,每个块组都有独立的inode/block/superrblock系统

data block

 在ext2系统中支持的block大小有1KB,2KB,4KB三种。在格式化的时候block的大小已经固定好了。

且,每个block最多只能防止一个文件的数据;若文件大于一个block,一个文件会占用多个block,而文件小于一个block,则block的剩余空间不能够被使用。也就是浪费了。

因此大的block会造成浪费,而过小的block会导致过多的block,而inode也会记录更多的block号码,导致读写性能下降。

因此在进行文件系统格式化时,要想好文件系统的使用情况。


inode

固定大小为128bytes

每个文件只能占用一个inode

如果block特别多,inode怎么储存,因为inode记录一个block号码要花掉4bytes。

系统将inode记录block号码的区域定义为12个直接,一个间接,一个双间接,一个三间接记录区。

间接就是再拿一个block当做记录block号码的记录区,双间接和三间接同理。

这样一来,如果以较小的1kb的block来说,一个inode可以指定16GB的block大小,也就是16GB的文件大小


superblock

记录整个文件系统相关信息的地方,包括有

block和inode的总量

未使用和已使用的inode,block数量

block和inode的大小等


posted on 2016-06-29 15:32  sichenzhao  阅读(127)  评论(0编辑  收藏  举报

导航