0%

第7章:Linux磁盘与文件系统管理(1)

一、文件系统特性

文件系统运作方式
这与操作系统的文件数据有关。较新的操作系统的文件数据除了文件实际内容,通常会含有非常多的属性,例如Linux操作系统的文件权限(rwx)与文件属性(拥有者、群组、时间参数等)。文件系统通常会将这两部分的数据存放在不同的区块,权限与属性放置到inode,实际数据放在data block区块中。此外,还有一个超级区别会记录文件系统的整体信息,包括inode与block的总量、使用量、剩余量等。

  • inode:记录文件的属性,一个文件占用1个inode,同时记录此文件的数据所在的block号码
  • block:实际记录文件的内容,若文件较大,则会占用多个block

inode存放block号码的好处:磁盘能够在较短时间内读取出全部的数据,读写效率高
这种数据存取的方法称为索引式文件系统
1571710186(1)

碎片出现的原因:文件写入的block太过离散,使得文件读取的效能将变得很差。FAT文件系统需要碎片整理,而Ext2索引式文件系统基本不用。

1571710933(1)
FAT这种格式的文件系统没有inode,所以没办法一下子读取出来,每个block号码都记录在前一个block当中。若记录分散,则需要多次转磁盘,读取效率差。

二、Linux的EXT2文件系统(inode)

文件系统一开始就将inode与block
规划好了,但是若文件系统GB,则将所有的inode与block放在一起是不明智的,为此将文件系统格式化为多个区块
1571713022(1)

data block(数据块)

1571713132(1)

  • 原则上,block的大小与数量在格式化完就不能再改变了(除非重新格式化)

  • 每个block内自多只能放置一个文件的数据

  • 如果文件大于block,则一个文件用多个block块

  • 若文件小于block,则block剩余容量不能再被使用(磁盘空间浪费)

    inode table(inode 表格)

  • inode数量与大小在格式化时已经固定

  • 每个inode大小固定为128bytes

  • 每个文件都仅会占用一个inode而已

  • 文件系统能建立的文件数目与inode数量有关

  • 系统读取文件时,先找到inode,并分析inode所记录的权限与用户是否符合,若符合才能开始实际读取block的内容

  • 每个inode是128bytes,记录一个block用掉4byte
    1571714606(1)
    每个inode是128bytes,里面有12个直接指向block号码的对照,能直接取得block号码。
    间接是再拿一个block来当作记录block号码的记录区,若文件太大,则用间接的block来记录编号。
    1571714840(1)

inode剩余部分

  • block bitmap(区块对照表):比如新增文件用到block,需要知道哪些block是空的
  • inode bitmap:与上类似
  • superblock:记录此filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及档案系统的格式与相关信息等;
  • Filesystem Description:每个区组的开始、结束的block号码以及每个区段(superblock、bitmap、inodemap、data block)分别介于哪一个block号码之间。

    目录

    创建目录,文件系统会分配一个inode与至少一块block给该目录。其中,inode记录该目录的相关权限与属性,并可记录分配到的block号码;block则记录在该目录下的文件名占用的inode号码数据。所以,inode并没有记录文件名:
    1571723030(1)

inode并不记录文件名,文件名记录在目录的block中。所以新增/删除/更改文件名与目录的w权限有关。
因为文件名记录在目录的block块中,因此当我们要读取某个文件时,就必会经过目录的inode与block,然后才能找到待读取的inode号码,最终才会读到正确的文件的block内的数据。

1571723948(1)

EXT2/EXT3/EXT4文件的存取与日志式文件系统的功能

新建文件或目录

1571724857(1)