哪种类似于ZFS的文件系统可以根据文件访问模式优化卷选择?


2

是否有类似RAID / ZFS的冗余文件系统,可以根据文件的访问模式优化文件的放置?我的目标是建立一个桌面系统,该系统将根据访问文件的频率和频率自动在硬盘,固态驱动器和RAM磁盘之间移动文件,以通过机会选择卷来控制磨损。例如,经常读取(并已打开以进行只读访问)的文件将放置在SSD上;经常读取但已打开以进行读写访问的文件将放置在RAM磁盘上;很少访问的文件将移至HD。

我正在想象一个可以自动识别访问模式并优化物理卷放置的智能虚拟文件系统。但是,我偷偷摸摸的感觉到可以通过在硬盘上创建主文件系统,在SSD上创建交换分区并为文件系统缓存保留大量RAM来实现类似的效果。

上述(简单)解决方案的缺点是它对底层硬件的弱点不敏感。例如,写操作会导致SSD更快地发生故障-HD更容易受到影响。但是,RAM几乎可以无限期地写入而不会失败。文件系统应利用这些属性来最大化设备的寿命。

Answers:


3

您应该看一下Btrfs,尤其是平衡部分。它可能包含与您所需要的代码完全相同或相近的代码,并且可以在此代码上进行构建。

您所描述的系统几乎类似于缓存,并且一定程度上可以强制作为现有文件系统的附件。一般而言,一些注意事项:

  • 磁盘控制器不会立即传播写操作,这意味着在短时间内快速写入同一文件实际上不会导致底层硬件被更新多次。
  • 固态硬盘不像以前那样脆弱,即使没有更多硬盘,也可以承受与硬盘一样的跳动。缺少活动部件真是太好了!
  • 您建议的设计仅在访问模式不像其他任何高速缓存那样频繁更改时才有用。近年来,异步I / O加快了磁盘交互时间,但有时取决于应用程序级别的支持。另一方面,猴子修补操作系统以将文件的RAM内副本提供给应用程序,而对HDD进行AIO则可能会提供纯粹的内存系统无法提供的数据持久性(请参阅:memcached,以及为何强烈建议您不要将其用作持久性引擎)

我知道最终目标是对OS /用户/应用程序尽可能透明,仅呈现一个卷/驱动器/分区,并在内部处理所有事务。我不确定台式机是否是此类系统的最佳目标,因为我怀疑台式机是否像为服务器构建的那样有用。

PS这在混合驱动器中已经存在了一段时间。RAM部分没有使用,但是台式机用户还是不会真正注意到它。另一个建议是Combo Drive,Google Scholar还有其他建议。


混合驱动器似乎是一个绝妙的主意,但我认为性能经济学并不存在。我同意这种多阶段缓存在服务器环境中很有用,但对大多数桌面用户而言却不是。
jcrawfordor 2011年

3

ZFS已经在自动进行这种优化。只需将SSD添加为池中的缓存设备,就可以找到文件(实际上是数据块),从不太活跃的文件到最活跃的文件:

  • 在常规磁盘上
  • 在SSD(L2ARC)上
  • 在RAM(ARC)上

ZFS ARC(自适应替换缓存)使用的算法基于最常用的块和最近使用的块。

http://blogs.oracle.com/brendan/entry/test


1

您可能需要研究bcache:http ://bcache.evilpiepirate.org/

看起来很有希望,但我还没有尝试。


很有意思!我还没有读完,但是我想知道它是否还可以在SSD之前使用RAM缓存。那将是完美的!
RubyTuesdayDONO

我认为将bcache放在RAM磁盘上不会带来任何好处-这就是linux文件系统缓存的优势所在。Bcache在允许具有针对随机访问进行了优化的巨大缓存(相比于RAM)方面更加深入,SSD擅长于此(与硬盘相比)。Bcache希望可以在非易失性存储上工作-尽管可以,但RAM磁盘不是您的最佳选择。
hurikhan77
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.