懒惰磁盘备份在Linux上的ramdisk?

快速和肮脏的总结:我想要的东西像一个只有当系统不繁忙时才会消耗的写入caching。

我想沿着这个问题的RAM磁盘和物理RAID略有扭曲的东西。

对于一个特定的构build,我经常做,我想保持生成输出在一个虚拟磁盘,最终被写出到磁盘。 我正在构build的一个特定的目标是一堆cp,tar,gzip等,所以我是磁盘绑定的。 在一个严格的debugging周期,我希望它是快速的,不关心这么多,如果编译输出被closures损坏。 但是,如果在系统不繁忙的情况下将虚拟硬盘同步到磁盘,那将会很不错。 我可以想象这是一个cron工作,但是我问你们所有的机会,有一个更加连贯的解决scheme,把另一个问题(ramdisk溢出到磁盘)的特点与这个新的转折(给定的空闲磁盘时间,ramdisk的内容也出到磁盘上)。 理想情况下,整个东西看起来像一个单一的挂载点,在那里我设置总大小和ram的数量使用。

– – 更新 – –

我不认为页面caching做我想要的,因为我真的想要非常快的写性能。

几个古怪的想法。 首先,Puppy Linux有点这样做; 它将您的工作空间同步到永久。 这似乎与智能脚本和简单的复制命令。

第二…如果你经常在ramdisk-> real disk之间安排一个rsync呢?

但是我想问问大家,有没有一个更连贯的解决scheme,将另一个问题(磁盘溢出的ramdisk)的特点与这个新的转换结合起来(给定足够的磁盘空闲时间,ramdisk的内容使它出来到磁盘也)。

你所要求的是延迟写入机制,即写入到虚拟磁盘接收优先级而不是写入永久存储,但所有的数据最终写入磁盘,是正确的?

理想情况下,整个东西看起来像一个单一的挂载点,在那里我设置总大小和ram的数量使用。

听起来很有趣,你也许可以用LVM镜像来完成这个过程。

  1. 使虚拟磁盘成为具有物理驱动器的卷组的成员。

  2. 将虚拟硬盘镜像到您的硬盘上。 请注意,LVM镜像是方向特定的,即数据从一个PV单向stream向另一个。

  3. 将LVM卷安装在一个统一的文件系统中。

将写入卷起并写入基于LVM的虚拟磁盘(并借助镜像,物理驱动器)。 与其中写入是同步和并行的RAID-1(两个驱动器同时写入)不同,LVM镜像是asynchronous且顺序的(主驱动器接收写入,然后LVM将写入写入镜像)。 这接近(但不是100%)您正在寻找的行为。 请记住,LVM确实会对未完成的写入操作施加压力,以便清除到磁盘,因此,看到的任何“空闲”都将在几秒钟内完成,最坏的情况是部分秒。

这种安排的另一面是你现在有一个非常好的持久性机制。 当你启动时,创build你的虚拟磁盘,并将现有的驱动器映射到它; 镜像完成后,打开镜像,并反转方向(ramdisk – > hdd)。 这意味着每次重新启动都会导致您的数据被放入虚拟盘,并在关机之前,从虚拟盘中写入硬盘。 它可能可以在perl或shell脚本中编写脚本。

我相信还有其他方法可以做到这一点,但这是快速版本。 我会多思考一下,看看我能弄清楚什么。

你所描述的正是你的操作系统的磁盘caching应该做的。 现代操作系统是非常好的,如果他们有足够的内存可供处理。

在我看来:给你的机器足够的内存,让操作系统做好工作。