到目前为止,我对安装在不同 LV 中的整个系统有一种半自动备份方法,使用 LVM (CoW) 快照(可以在启动时创建以避免数据损坏)。也就是说,如果我觉得需要创建备份,我将运行一个脚本以将这些快照 LV(与实时系统的安装方式相同)以只读模式挂载到某个位置,然后运行另一个脚本来执行该位置的压缩备份,最终生成整个系统的压缩备份作为单个存档文件。整洁的...
现在,我有一个新的用例,我正在尝试寻找一个好的解决方案。比如说,我有一个外部硬盘,其目的是存储东西。嗯,你知道,它是加密的,上面还有自己的VG和LV,每个VG和LV专门用于存储不同类型的数据,例如图片、视频、文档,甚至那些系统备份存档。这提供了根据数据类型和 LVM 的所有出色功能选择文件系统的灵活性。有时候,我会插入这个野兽并根据我想要存储的内容将更多内容复制到这两个 LV 中的任何一个。接下来,我还有另一个外部硬盘驱动器,我希望(在理想情况下)将其充当第一个外部硬盘驱动器的镜像。此外,理想情况下,当两个设备都插入时,镜像应该自动发生,并且我明确地将内容仅复制到第一个设备上(即类似 CoW 的东西,也许我们应该称之为增量镜像,尽管我不确定这是否可能)。例如,第一个设备已连接并正在写入,而第二个设备未连接的情况也应该处理。也就是说,下次连接第二个设备时,它不仅应该镜像这次写入第一个设备的数据,还应该镜像上次遗漏的数据。我想这就是为什么我提到镜像,在这种情况下可能无法增量执行,并且需要完整的克隆覆盖。
到目前为止,我考虑了以下解决方案:
- LVM 快照在这里似乎毫无用处:
- 它们是 CoW,即它们实际上并不在快照 LV 上维护完整的镜像(除非所有数据在写入第一个设备后发生更改);
- 他们不仅需要在单独且独立的 PV 上跨越一个 VG,而且还需要在单独且从技术上讲是独立的物理设备上跨越一个 VG(我不喜欢这种耦合,并希望避免它)。
- 扇区克隆通过
dd
:- 在第二台设备上生成完全相同的克隆方面看起来很可靠;
- 根据LVM 和克隆 HD,是危险的,因为在这种情况下,LVM 配置显然是重复的,因此,如果未完成某些重命名黑魔法,可能会导致数据损坏(我不想编写重命名脚本,除非我们在此找不到其他解决方案)线程,因为它对我来说看起来很脆弱);
- 每次我将几个文件复制到第一个设备上的一个 LV 中时,仅仅为了维护一个镜像,就覆盖整个第二个设备,这听起来有点矫枉过正;
- 并不是真正自动化,因为它不会检测在哪里更改了什么,并仅基于两个都已插入并且第一个已写入的事实来透明地复制它(这就是我所说的“按需”)。
rsync
两个设备对应LV之间的文件数量:- 好处是,它只会同步更改,甚至可以满足我们错过插入第二个设备一次或两次的情况(这是一个很大的优点);
- 看起来很复杂;
- 需要编写脚本来同时安装相应的 LV;
- 不是自动化的(必须手动触发),因此容易出错;
- 需要基于第一个设备在第二个设备上手动重新创建相同的分区方案和 LVM(是的,这可以是自动化的,但仍然如此)。
- LVM RAID1?我不知道设置两个即插即用设备的可靠性和/或可能性如何,这两个即插即用设备可能会也可能不会同时插入和/或安装,因此,它与上述选项相比如何。非常感谢分享的任何经验。
- 其他一些解决方案,也许利用
vgimportclone
?
我感谢对此的任何投入,特别是已经测试/使用的解决方案,这些解决方案要么是由您自行设计和定制的,要么是现有采用的工具来管理这种情况。目标是使其尽可能简单/最不易出错/自动化。谢谢你!