Linux学习笔记8-文件、目录与磁盘格式一

Linux的EXT系列文件系统

windows常用的文件系统有FAT和NTFS,而Linux的正规文件系统为EXT4(Linux fourth extended file system, Ext4fs),它是由EXT,EXT2,EXT3发展而来的。

操作系统的文件数据除了文件实际内容外,通常含有非常多的属性,例如操作系统的文件权限(rwx)与文件属性(所有者,群组,修改时间等)。文件系统会将这两部分的数据分别放在不同的块,权限与属性放置到inode中,至于实际数据则放置到data block块中。另外还有一个超级块(super block)会记录整个文件系统的整体信息,包括inode与block的总量,使用量,剩余量等。

每个inode与block都有编号,至于这三个数据的意义可以简略说明如下:

  • super block: 记录此文件的系统的整体信息,包括inode、block的总量,使用量,剩余量,以及文件系统的格式与相关信息等;
  • inode: 记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码;
  • block: 实际记录文件的内容,若文件太大,会占用很多个block。

由于每个inode与block都有编号,而每个文件都会占用一个inode,inode内则有文件数据放置的block号码。因此,如果能找到文件的inode的话,很自然的就会知道文件放置数据的block号码,当然就能够读取文件。而且我们常常是只需要读取文件的权限或属性,这样设计就能够不读取block的内容,只从inode中读取,例如读取文件前一定会先校验权限,如果无权限直接拒绝读取。

EXT4文件系统在格式化的时候会划分出多个块组(block group),每个块组都有自己独立的inode/block/super block系统。block group结构如图:

  • data block数据块,是用来存放文件内容的地方,EXT4文件系统支持的block大小有1KB,2KB,4KB三种。原则上块的大小与数量在格式化完成后就不能再改变了,如果文件大于一个块,则会占用多个块,如果不足一个块也会占用一个块,大多数发行版本的默认值是4K。
  • inode table,inode对应表,inode记录的文件数据至少有下面这些:  
    • 该文件的访问权限
    • 该文件的owner和group
    • 该文件的大小
    • 该文件的atime,ctime和mtime
    • 该文件的特殊属性如SetUID等
    • 该文件内容的地址

   每个inode的大小固定为256bytes,每个文件都仅会占用一个inode,所以,文件系统能够创建的文件总数与inode的数量有关;系统读取文件时需要先找到inode,并分析inode所记录的权限与用户是否符合,若符合才能够实际读取Block的内容。

 

posted @ 2017-04-23 18:07  Tyler_Liu  阅读(149)  评论(0编辑  收藏  举报