两个存储卷之间的完全直接双向数据交换?

我将如何去做两个相同大小的存储设备之间的100%数据交换,并保持两个数据分区,而不使用第三个设备作为临时缓冲区?

换句话说,我有两个非常大的存储arrays,每个都有两个相同大小的非常大卷:

DRIVE 1:VOLUME A

DRIVE 2:VOLUME B

我希望来自卷a的数据转到卷b,而来自卷b的数据转到卷a。 所有数据必须保留。 我没有办法获得临时存储的第三个设备。

我认为这在理论上可以在比特级进行编程。 只要在两个卷上都有一些空闲空间,那么这个空闲空间就可以作为交换数据的临时存储空间。 最糟糕的情况是,我可以通过执行目录的批量复制来手动完成此操作。 但是,肯定有一些软件可以在比特级上做到这一点?

不幸的是,我已经在网上search,空了。 我所看到的所有软件都将旧驱动器克隆到新驱动器,但没有直接的双向卷数据交换。

有任何想法吗?

** 更新 **

只是要清楚 – 我意识到可以将数据手动移动到多个临时位置,并使用备份/恢复过程。 这是我试图避免必须做的,因为从多个位置和多个进程恢复数据所涉及的时间和精力。 没有任何其他数组足够大,可以作为整个数据/文件集的临时位置。

** 解决scheme **

由于数据集是模块化的,我最终手动交换数据。 Altap Salamander文件pipe理器能够对文件传输进行排队,所以我基本上创build了一个文件传输队列,其大小计算为在复制一组文件之后每个驱动器上可用的可用空间量。 像一个魅力工作,但太耗时,而只是使用一个备用的存储arrays临时安置一个完整的副本。 如果有软件自动做到这一点,将会很酷,但显然这是额外的硬件击败软件解决scheme的问题之一。

唯一的安全解决scheme是使用额外的硬件。 与您的存储供应商谈谈雇用一些东西来帮助您完成工作。 试图做任何其他的方式将结束在灾难,你会回到这里问如何恢复…

我只想编写一个程序来在原始模式下打开两个卷,并在内存中分配两个大缓冲区。 从卷A和卷B中填充一个缓冲区。然后将从卷A读取的缓冲区写入卷B,反之亦然。 重复,直到你完成交换。

请注意,如果在这个过程中任何地方中断,这将是非常丑陋的。

如果你提到你的平台,我可以给你更具体的build议。

将开发数据复制到产品硬件,然后将备份数据从备份恢复到开发硬件。 我错过了什么吗?

有很多方法可以做到这一点,但是您需要基于安全来确定优先级。 如果你丢失了生产数据,我想你会被淘汰,所以让我们把重点放在保证这一点的方法上,并减less生产不可用的时间。

  • 第一步 :备份你的开发环境并closures它。

  • 第二步 :从您的开发环境中取消分配磁盘

  • 第三步 :将这些磁盘分配给prod环境(这样prod环境不会尝试使用旧的文件系统)

  • 第四步 :把你的产品移植到新的磁盘上。 您可以使用操作系统镜像两个卷之间的数据,并重新启动新硬件上的服务。

  • 第五步 :从prod服务器上分配旧的prod磁盘,并分配给dev服务器

  • 第六步 :将你的开发数据恢复到提交给开发服务器的磁盘上。

编辑:恢复或使用暂存空间是唯一的select,如果没有以可恢复的方式对其进行备份,我将其定义为“prod服务器”。

这确实需要一个硬件解决scheme。 我有一个设备,它需要一对SATA驱动器,并按下一个button复制到另一个。 不需要电脑。

如果没有这样的硬件设备,则必须有某种forms的中间缓冲,因为进行复制的系统在写入另一个设备之前必须从一个设备读取。 但是,这可以做得非常快,因为瓶颈通常是I / O接口,而不是中间系统。

你确定你没有临时存储吗? – 我确定你有系统的备份。 在那里你有足够的临时存储空间。

你为什么不使用这些备份来完成这个? 将最新的两个备份还原到所需的存储arrays,然后完成。

如果你不能从备份方法中复制+恢复,Oskarbuild议(如果你没有备份,对你不好意思),那么开发系统的本质使得它非常简单直接。 简单地将开发工作发布到生产服务器上,当开发不再有生产差异时,交换angular色,然后在另一台服务器上恢复开发。