【问题标题】:How to create a program which is working similar like RAID1 (mirroring)?如何创建一个像 RAID1(镜像)一样工作的程序?
【发布时间】:2010-01-26 18:19:43
【问题描述】:

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

提前致谢!

坎皮

【问题讨论】:

  • 您对编写文件系统设备驱动程序的熟悉程度如何?
  • 嗨!我还没有写过这样的程序,但一切都必须从一次开始:) 你问为什么?
  • 因为这是完成这项工作所需要的。您必须将“简单”排除在您的要求之外。阅读 Walter Oney 的书籍。
  • windows不包括一些软raid吗?
  • 据我所知,IFS 驱动程序在内核模式代码的开发人员中也是众所周知的黑魔法;不是最容易开始的...@Javier:是的,它们就是所谓的“动态磁盘”。

标签: c++ windows


【解决方案1】:

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

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

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

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

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

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

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

还可以查看 Windows 7 WDK 上的文件系统过滤器示例,它是免费的,它们有很好的文件监控示例,可以让您很快看到磁盘更改。

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 2015-08-25
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多