Linux文件系统是否由磁盘自动备份但完全托管在内存中?

时间:2009-07-17 22:53:23

标签: linux filesystems

我必须对一大堆文件进行大量的随机访问。我有足够的主内存来容纳所有数据。

当我将数据复制到临时ramfs文件系统并在那里进行处理时,这只需要等待磁盘访问的一小部分时间。

是否存在将所有数据保存在主内存中的Linux文件系统,将任何更改写入后备磁盘,但是从不接触磁盘进行任何读取操作?

如果没有,可以说,可以调整ext3缓存,以保证它们能够保存100%的数据和元数据吗?

3 个答案:

答案 0 :(得分:8)

如果您只是读取数据,那么您确实可以调整缓存,以便所有数据都缓存在RAM中 - 请参阅/ usr / src / linux / Documentation / sysctl / fs.txt vm。 txt有关您可以在此调整的详细信息。当您写入数据时会出现问题,特别是如果您使用fsync()或类似数据以确保数据已提交到实际磁盘。

由于操作系统已经fsync()的情况下更新磁盘,如果你仍然想确保你的数据是一致的并且不是在停电时输了。

您可能遇到的一个问题是atime或访问时间 - 默认情况下,每次访问文件时都会在inode中更新访问时间。即使您认为自己只执行读取操作,也会导致磁盘写入。在您访问许多小文件的场景中,这可能是一个特殊问题。如果您不关心跟踪访问时间,可以使用noatime安装文件系统以禁用此“功能”。

答案 1 :(得分:1)

为什么不尝试在ramdisk和物理磁盘之间创建RAID镜像?

不确定它是否有效。如果必须始终同步镜像,则在写入时无论如何都必须等待磁盘,但是为了阅读,您应该获得一些东西。 但是,是的,对我而言,它看起来非常复杂,轮子重新设计的方形IO缓存:)

但是,这将是一个不错的实验。

答案 2 :(得分:0)

看看这个:

http://freecode.com/articles/virtual-filesystem-building-a-linux-filesystem-from-an-ordinary-file

您可以将文件作为FS安装到RAMdisk中,然后将其备份为文件。

不要经常备份,但这是一个很好的解决方案,只需一次保存所有虚拟磁盘。