1. 前一篇文章写道文件系统是什么。这一篇我们讲讲文件在磁盘中到底是如何存放的。
  • 连续存储方式:一个文件存储位置,物理上相邻
  • 非连续存储方式:一个文件的数据分为多个块,分别存储在磁盘上不相邻的物理位置

文件在磁盘中如何存储? - 图1

连续存储方式

连续存储方式很简单,首先获取文件头,所谓的文件头就相当于 索引节点,索引节点中存放着文件在磁盘中的起始地址和长度。这样就可以将文件读取出来了。
image.png
缺点:

  1. - 空间碎片
  2. - 长度不易扩展

非连续存储方式

链表

隐式链表

文件头(索引节点)记录着头尾数据块,其他的数据块,通过节点中指针进行遍历。
image.png

显式链表

显式链表会在内存中生成一张 文件分配表,里面没项对应着,磁盘中该数据块访问完成后的下一个数据块
image.png

索引

普通索引

索引中记录着这个文件由哪几块数据块组成
image.png

多个索引

一个索引可能不足以表示出文件的所有块,可以用多个索引块呀。

链式索引

image.png

多级索引

image.png

优缺点比较

image.png

Unix文件系统使用的存储方式

在Linux Ext2/3中。

  • 小文件就是顺序分配:通过索引节点直接定位到文件数据
  • 大文件则使用一级或多级索引