linux 文件系统基础知识(笔记总结版)
这两天看了一本 fedora 9 的实践教程,下面是有关 linux 文件系统知识的学习笔记:
1、linux 文件系统分配策略:
块分配 ( block allocation ) 和 扩展分配 ( extent allocation )
块分配: 磁盘上的文件块根据需要分配给文件, 避免了存储空间的浪费。 但当文件扩充
时,会造成文件中文件块的不连续,从而导致过多的磁盘寻道时间。
每一次文件扩展时,块分配算法就需要写入文件块的结构信息,也就是 meta-dada 。
meta-data 总是与文件一起写入存储设备,改变文件的操作要等到所有 meta-data 的操作都完
成后才能进行,
因此, meta-data 的操作会明显降低整个文件系统的性能。
扩展分配: 文件创建时,一次性分配一连串连续的块,当文件扩展时,也一次分配很
多块。 meta-data 在文件创建时写入,当文件大小没有超过所有已分配文件块大小时,就不
用写入 meta-data,直到需要再分配文件块的时候。
扩展分配采用成组分配块的方式,减少了 SCSI 设备写数据的时间,在读取顺序文件时
具有良好的性能,但随机读取文件时,就和块分配类似了。
文件块的组或块簇 ( block cluster) 的大小是在编译时确定的。簇的大小对文件系统的
性能有很大的影响。
注: meta-data 元信息:和文件有关的信息,比如权限、所有者以及创建、访问或更改
时间等。
2、文件的记录形式
linux 文家系统使用索引节点 (inode) 来记录文件信息。索引节点是一种数据结构,它包
含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。
一个文件系统维护了一个索引节点的数组, 每个文件或目录都与索引节点数组中的唯一
的元素对应。每个索引节点在数组中的索引号,称为索引节点号。
linux 文件系统将文件索引节点号和文件名同时保存在目录中,所以,目录只是将文件
的名称和它的索引节点号结合在一起的一张表, 目录中每一对文件名称和索引节点号称为一