如何创建类似RAID1(镜像)的程序?

时间:2010-01-26 18:19:44

标签: c++ windows

我想创建一个与RAID1非常相似的简单程序。它应该像这样工作:
首先,我想提供主HDD-s驱动器号和次要驱动器号。我只会写入主硬盘!如果将任何新数据复制到主HDD,则应自动将其复制到次要HDD 我需要一些帮助,我应该从哪里开始这一切?如何监控主HDD中的写入数据?显然有很多方法可以做我想要的(我想),但我需要最简单的方法 如果这不是那么复杂,那么如果主HDD有两个或更多分区,我怎么能处理这种情况呢,因为那时我也要检查二级硬盘的分区,然后在必要时创建/调整大小?

提前致谢!

kampi

1 个答案:

答案 0 :(得分:0)

将磁盘写入实时镜像到另一个磁盘的概念是高可用性的基础,实现这些方案并非易事。

我工作的公司制作DoubleTake,它实时镜像&将基于文件的IO复制到本地或远程卷。这与您所描述的有些不同,它似乎是基于块的磁盘/卷复制,但许多概念是相似的。

对于基于文件的复制,有一些令人讨厌的场景,我将描述一些:

  1. 将一个卷的内容同步到另一个卷,请记住在执行此操作时可能会发生更改。我想你可以简单地通过要求卷开始完全格式化。但对于拥有数据不是一个好解决方案的人来说呢?

  2. 跟上磁盘更改:如果要镜像的卷比源卷慢,该怎么办?你在哪里缓冲?要磁盘?记忆?

  3. 无论如何,我们使用内核模式文件系统过滤器驱动程序来捕获磁盘IO,然后我们的用户模式服务抓取此IO并将其转发到本地或远程磁盘。

    如果你想了解文件系统过滤,最好的书之一(它的旧版但很好)是Rajeev Nagar的File System Internals。对于使用文件系统过滤器进行任何认真的工作都必须阅读。

    另外,请查看Windows 7 WDK上的文件系统过滤器示例,它是免费的,并且它们具有良好的文件mon示例,可以让您快速查看磁盘更改。

    祝你好运!

相关问题