Linux文件存储方式

文件以数据块的形式存储到磁盘中,不足一块,按一块存储。

文件系统的数据块管理主要有三种方式:连续分配、链接表法和索引链表法。

  • 1、连续分配
    寻找磁盘上的一段连续的物理空间,在其上连续划分出足够的物理块,与数据块号作映射。
  • 优点
    通过将数据块首地址进行计算,支持随机访问;
  • 缺点
    需要确定数据块的大小,需要查找连续的物理空间,会生成空间碎片。
  • 2、链接表法
    采用类似链表的方法,在数据块中保存下一数据块的物理地址。
  • 优点
    不用提前确定文件的大小,减少了磁盘碎片的生成,有效利用了磁盘空间。
  • 缺点
    不支持随机访问,需要遍历查找;
    添加下一数据块地址产生的额外的存储空间开销。
  • 3、索引链表法
    借鉴数据库索引的思想,将索引(下一数据块地址)和数据块分开存放,直接将索引表存储在内存中
  • 优点
    内存中存储索引表,避免了查找数据块引起的频繁的磁盘IO,提高了数据块查找的开销
  • 缺点
    依旧存在着额外的存储开销

补充
Linux中,将所有的文件、目录抽象为i-node(index node)节点。其中存放了文件的元数据和数据节点的索引。对于超大文件,还可以使用多级索引的方式进行存储。

参考文献
Linux文件系统存储方式