不扯淡了,直接来写吧,一天一共要写三篇博客,还有两篇呢。

1. 这篇博客讲什么?

Fast File System(FFS)快速文件系统,基本思想已经在在上一篇博客File System Implementation 里面说明了,FFS是对VSFS的一种优化改进使其可以被实际使用。

2. FFS基于VSFS的改进思想是什么?

这个呢,VSFS在存储文件的时候,根本没有考虑磁盘的寻址时间,把磁盘当做了一种随机存储介质!事实上由于局域性原理的存在,依据局域性而对存储做相应改进是非常有助于性能提升的。FFS则正是看到了这一点,其改进是将磁盘划分为多个子区域(Cylinder Groups),存储文件的时候同一文件夹下的文件尽可能放在同一个GroupCylinder GroupsFFS最大的改进来源。

3. FFS文件系统的实现

  • 首先,FFS将磁盘划分为很多子区域,也就是很多个Cylinder Groups,如下图: 
     
    每个组内的结构跟VSFS基本一样,下图: 
     
    对于这里面的SuperBlock每个组都会有。

  • 文件存储 既然FFS号称利用局域性原理,那么具体是什么操作的呢?

    • 对于文件夹,它会选择一个包含文件夹少而且剩余的空闲inode数目多的组来存储;
    • 对于文件,它确保一个文件的inode和data是属于同一个组的;而且,将同一文件夹的文件尽量放在一个组,这里面的“尽量”是考虑到大文件可能需要被存在好几个组。
    • 大文件 大文件是需要特殊处理的,因为否则的话因为组内空间被大文件大量占用,这就会使得很难实现“相关文件放一起”的那个使用局域性原理的设计。那么大文件就必须被“分割”为多块分别存储在各个组内,那么如何设定这个切割的大小呢,或者说大文件的每一块设置为多大。 
      这个需要一点计算。设置大文件切割大小核心在于,设置的太小了,那么读取它的时候影响效率(因为是需要额外寻址的,如果太小,这总的传输效率低)。假设磁盘的平均寻址时间是10ms,那么为了达到一半的传输效率,这意思是说磁盘真正用来传数据的时候和寻址时间相同,假设磁盘传输效率是40MB/s,那么10ms传输的数据是409.6KB。换句话说,只需要409KB,就可使的传输效率为50%。事实上,大约3.7MB就可使得磁盘平均传输效率为90%。所以,切割大小设置为4M左右就可以了。 
      FFS的设计者挺聪明的,其实按照之前的VSFS的设计,每个inode里面会有15个块指针用来索引文件占用磁盘块的,前面12个直接索引可表示12*4KB=48KB的空间,而一级间接索引就可表示4M的空间。所以除了前48KB,之后的每4M数据均放置在不同的组内,这个刚好可以使用一一级间接索引表示。

4. FFS设计细节

  • 小文件问题 这个是说很多文件太小了,用一个磁盘块(4KB)存储有点浪费空间啊!!所以呢,FFS引入sub-blocks这个概念,一般是512B,也就是一个sector扇区的大小。那么这样一来又会使得写小文件的操作台低效了,哈哈,不用担心,我们可以写文件的时候现在Cache中缓存一下,等到收集了4KB的数据再一次性写入。这就是FFS提供的libc库的作用啦。
  • parameterized placement 这个呢,有点难理解,先看这个图吧: 
     
    假设一个这个文斌就包含了12个磁盘块,而且如左边显示的那样存储于一个磁道上面。那么序列读取数据的时候就会有一个很小的问题:当磁头达到0块的时候读取数据,可是等它读完了准备读1块的数据的时候,磁头早就转过去了(假设转到2块的位置),于是需要接着等磁头转回来!!这样是不是很慢,事实上磁盘会将一个磁道的数据一下子缓存在磁盘里面,但是即使是这样,也需要两圈才能读完。因为你在等1快的数据的时候,磁盘转了一圈读出了整个磁道的数据,然后你获得了1块的数据,可是还是需要转一圈才能依次获得每一块的数据。于是乎就很聪明的将数据排列成右边那个样子,这样一来就只需要一圈啦。。。。

5. 参考文献

  1. http://pages.cs.wisc.edu/~remzi/OSTEP/file-ffs.pdf

Fast File System的更多相关文章

  1. Storage System and File System Courses

    I researched a lot about storage system classes given at good universities this year. This had two r ...

  2. File System Design Case Studies

    SRC=http://www.cs.rutgers.edu/~pxk/416/notes/13-fs-studies.html Paul Krzyzanowski April 24, 2014 Int ...

  3. 谷歌三大核心技术(一)The Google File System中文版

    谷歌三大核心技术(一)The Google File System中文版  The Google File System中文版 译者:alex 摘要 我们设计并实现了Google GFS文件系统,一个 ...

  4. HDFS分布式文件系统(The Hadoop Distributed File System)

    The Hadoop Distributed File System (HDFS) is designed to store very large data sets reliably, and to ...

  5. Low-overhead enhancement of reliability of journaled file system using solid state storage and de-duplication

    A mechanism is provided in a data processing system for reliable asynchronous solid-state device bas ...

  6. Google File System中文版

    英文原文地址: Google File system 译文原文地址: The Google File System中文版 Google File System中文版 摘要 我们设计并实现了Google ...

  7. The Google File System论文拜读

    The Google File System Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung Google∗ 摘要 我们设计并实现了谷歌文件系统 ...

  8. The disk contains an unclean file system

    Ubuntu : Status 14: The disk contains an unclean file system By mkyong | July 23, 2014 | Viewed : 10 ...

  9. PatentTips – EMC Virtual File System

    BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention generally relates to net ...

随机推荐

  1. 软工实践Beta冲刺答辩

    福大软工 · 第十二次作业 - Beta答辩总结 组长本次博客作业链接 项目宣传视频链接 本组成员 1 . 队长:白晨曦 031602101 2 . 队员:蔡子阳 031602102 3 . 队员:陈 ...

  2. lintcode-457-经典二分查找问题

    457-经典二分查找问题 在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回-1 样例 给出数组 [1, 2, 2, 4, 5, 5]. 对于 target = 2, 返回 1 或者 ...

  3. Windows Forms编程实战学习:第三章 菜单

    第三章 菜单 1,控件和容器 所有的Windows Forms控件都是从System.Windows.Forms.Control类继承的,相关类的层次结构如下图所示: MarshalByRefObje ...

  4. 第15章 磁盘配额(Quota)与高级文件系统管理

    磁盘配额(quota)的应用与实践 什么是quota 举例来说,用户的默认主文件夹是在/home下面,如果/home是个独立的分区,假设是10G,/home下有30个账号,这样30个用户共享这10G的 ...

  5. 七周七语言之用ruby做点什么

    如果你想获得更好的阅读体验,可以前往我在 github 上的博客进行阅读,http://lcomplete.github.io/blog/2013/05/25/sevenlang-ruby/. 每学一 ...

  6. 使用rand替换random模块

    random模块使用相同的种子,在不同的进程中会出现相同的结果. rand的模块使用不同的种子,在不同的进程中不会出现相同的结果. 2个模块都是erlang自带的. 然后erlang在文档里面注明推荐 ...

  7. Cmder命令行工具在Windows系统中的配置

    一.Cmder简介 Cmder:一款用于Windows系统中,可增强传统cmd命令行工具的控制台模拟器(类似于Linux系统中的终端控制窗口) 特点: 无需安装,解压即用 可使用较多Linux命令,如 ...

  8. 探究Android中通过继承ViewGroup自定义控件的原理

    原文地址:http://www.cnblogs.com/kross/p/3378395.html 今天断断续续的折腾了一下午到现在20:38,终于有点明白了.o(╯□╰)o 在Android开发中,我 ...

  9. Beats Solo3 Wireless 无法链接 MacBook pro

    Beats Solo3 Wireless 无法链接 MacBook pro 问题解决了,原来只要长按耳机的开关按钮就能被识别到了,貌似需要5秒钟不松手. https://bbs.feng.com/re ...

  10. ping不通的常见原因和解决办法

    Ping是Windows.Unix和Linux系统下的一个命令.ping也属于一个通信协议,是TCP/IP协议的一部分.利用“ping”命令可以检查网络是否连通.如果ping不通则可以通过以下方式寻找 ...