前一篇文章写道文件系统是什么。这一篇我们讲讲文件在磁盘中到底是如何存放的。
- 连续存储方式:一个文件存储位置,物理上相邻
- 非连续存储方式:一个文件的数据分为多个块,分别存储在磁盘上不相邻的物理位置
连续存储方式
连续存储方式很简单,首先获取文件头,所谓的文件头就相当于 索引节点,索引节点中存放着文件在磁盘中的起始地址和长度。这样就可以将文件读取出来了。
缺点:
- 空间碎片
- 长度不易扩展
非连续存储方式
链表
隐式链表
文件头(索引节点)记录着头尾数据块,其他的数据块,通过节点中指针进行遍历。
显式链表
显式链表会在内存中生成一张 文件分配表,里面没项对应着,磁盘中该数据块访问完成后的下一个数据块
索引
普通索引
多个索引
链式索引
多级索引
优缺点比较
Unix文件系统使用的存储方式
在Linux Ext2/3中。
- 小文件就是顺序分配:通过索引节点直接定位到文件数据
- 大文件则使用一级或多级索引