美文网首页
快速文件系统简介

快速文件系统简介

作者: 404Not_Found | 来源:发表于2021-06-28 07:51 被阅读0次
  • 作者: 雪山肥鱼
  • 时间:20210629 06:47
  • 目的:快速文件系统
# 简单文件系统的问题
# Fast File System
 ## 组织结构:柱面组
 ## 一般策略,如何分配文件和目录
 ## 大文件策略

简单文件系统的问题

vsfs结构.png

超级块S包含整个文件系统的信息,卷的大小,有多少inode, 指向空闲列表块的头部指针等。磁盘inode区域包含文件系统的所有inode。最后大部分磁盘被数据占用。

  • 问题1:
    vsfs 即 老的 unix 文件系统将磁盘当成随机存取的内存,即数据遍布各处,但是忘了介质是磁盘的非内存的事实,有非常高的定位成本。
    文件的数据块通常举例inode非常远。所以每当第一次读取inode 然后读取文件的数据块时,就会出现非常耗时的 寻道。
  • 问题2:
    文件系统会变得非常碎片化,因为空闲空间没有被得到有效管理。文件的存储与删除过程如下:


    文件存储流程.png
    删掉BD.png
    存储E.png

非常明显的碎片化,当要读写E时,无法顺序读写,发生寻道。
磁盘碎片整理工具的作用就是重新组织磁盘数据以连续放置文件,并为让空闲空间成为一个或者几个连续的区域,移动数据,然后重新ninode等以反应变化。

  • 问题3:
    原始块太小了,512bytes,即 1 block = 1 sector,虽然防止了内存碎片化,但每个块都需要定位开销来访问它,因此传输不加。

待解决的问题

  1. 如何组织文件系统数据结构以提高性能?
  2. 数据结构之上需要哪些类型的分配策略
  3. 如何让磁盘系统具有磁盘意识

Fast File System

快速文件系统,让文件系统的结构和分配策略具有磁盘意识。意思就是,知道介质是磁盘,定位开销大。

组织结构: 柱面组

柱面组.png

效果如上图所示:
对外来说,现代驱动并不会给文件系统暴露这些细节,磁盘只是到处block的逻辑地址,并且隐藏了上述的几何信息。
暴露给文件系统的是块组。block group. 就上图来说,有3个柱面组(最里面的不算)即3个block group


图片.png

那么在同一个 group组,放置2个文件,FFS可以确保先后访问两个文件,不至于发生寻道。所以为达到以上目的,可以在每个 block group 中分配文件和目录。


per block group.png
对于超快来说,每一个group 都有一个副本,有自己的ib,db,inodes table 和 data region. 每一个group都是原来的vsfs的结构。

一般策略: 如何分配文件和目录

如何在磁盘上放置文件和目录以及相关metadata呢?
原则:相关的东西放一起。那么问题来了,什么是相关的呢?

  1. 目录的放置。找到分配量少的柱面,(希望负载均衡),和拥有大量自由的inode(有足够大的地方放置文件)
  2. 将目录数据 和 inode 放到该分组。
  3. 对于单个文件来说:FFS 需要将 数据块分配到与其inode相同的 block group 中。防止inode 和 数据之间的长时间寻道。
  4. 将位于统一目录中的所有文件,放在他们所在目录的柱面组中。

相关的放在一个 block group 里就对了。

效果图对比/a/c, /a/d, /a/e, /b/f:


相关性策略.png 非相关行策略.png

大文件策略

大文件并不是顺序排列的。并非占住了一个坑,后续的data 坑位都是属于它的。
大吻技安的存储并非如此:


大文件存储.png

这样存放很明显的缺点就是,inodes table中有很多空闲inode,但data 区并没有什么空间可以存放数据了。
这样存储大块文件,会导致磁盘搜索的速度降低,特别是在顺序访问的情况下。
但只要控制大块文件的大小,我们大部分时间仍然花费在磁盘的传输数据上。而在大块之间寻道的时间却相对减少。
类似这种概念,块足够大,那么就可以一半时间传输数据,一般时间寻道,

相关文章

网友评论

      本文标题:快速文件系统简介

      本文链接:https://www.haomeiwen.com/subject/yelhultx.html