我的旧电脑需要更换。几个月后就会更换,但与此同时,我想学习与提高性能和数据弹性相关的技术。
我还有一个空的 2 TB USB 外置硬盘,大约是我当前笔记本电脑硬盘大小的 3-4 倍。所以......我想做两件事:
使用外部硬盘镜子我当前笔记本电脑中的数据(假设
/home
位于一个单独的分区中,这就是我想要试验的......我可以在外部硬盘上设置一个分区来在开始实验之前保存副本)并将其与笔记本电脑的 HDD,以提高连接两个 HDD 时的性能。应该能够从断开外部硬盘驱动器的连接中恢复,并能够在重新连接外部硬盘驱动器时同步。当我拿到新计算机时,能够连接外部硬盘并将数据镜像到新计算机,并能够在连接外部硬盘时使用它来提高性能,并且在外部硬盘断开连接时能够继续工作如果我再次连接,则同步。
我们可以假设,一旦我开始使用新计算机,外部硬盘就不会连接到旧计算机,如果这使情况更容易处理的话。
有哪些可能的方法来实现它?如果您需要有关分区当前设置/home
或所涉及驱动器的详细信息,请告诉我,尽管我认为可以将其列出在空中。
提示一下,我的笔记本电脑 HDD 中的分区是使用 LVM 设置的(我知道一些事情,但想利用这个实验来了解更多信息)。
答案1
不幸的是,这个问题实际上可以通过数百万种方式来解决。
KISS 方法是:
- 将新驱动器格式化为全新设备(您实际上不需要为lvm操心)
- 使用一些“手动”同步机制,例如
cp -a
、tar|tar
或rsync
,手动将旧驱动器同步/home
到新驱动器,或者lsyncd
在连接外部驱动器时进行近实时同步 - 一旦新计算机到达,请确保您用户的 uid:gid 与旧计算机上的相同,并
cp -a/rsync/tar|tar
从外部驱动器返回家中。
所有用户级应用程序数据都将以这种方式传输,但您不应忘记您还备份了应用程序包列表,以便您可以重新创建原始应用程序“加载”。
更复杂的解决方案是在块级别进行处理:
- dmraid/mdraid(取决于你问的是谁 - 用户层控制程序是什么
mdadm
) - 左室厚度
因为您已经有了 LVM 设置,所以我相信 mdadm RAID 不适用于您的情况。但 dmraid 将是一个简单的“无废话”设置。
最复杂的设置就是搞乱 LVM,您可以通过两种方式进行处理(我认为 - 如果算上 LVM 快照):镜像和快照。根据我的经验,这两种 LVM 方式都不适合您。也许更理智的人会使用 LVM 镜像。不幸的是,由于我不喜欢 LVM,因此我不会就此事提供任何建议。
请记住,列出的 KISS 选项有额外的好处,它们将在传输过程中对文件重新进行碎片整理(对 SSD 来说不是太大问题 - 但仍然有效)。文件将以线性方式在目标卷上重新创建,并在此过程中进行碎片整理。
另一方面,您可能会丢失一些空间,例如稀疏文件中的“孔”(但如果我没有记错的话,现代rsync
应该有这样的选择)。如果您知道正在使用大量稀疏文件,则可以使用它du --apparent-size
来计算相关卷的最差最大大小。
不幸的是,现在很难说,就像“虚拟内存”一样,新卷介质上的文件将有效消耗多少空间(实际使用的大小取决于太多因素)。
遗憾的是,像 LVM 镜像这样的块级传输并不是最理想的,因为“新”卷将从镜像卷继承“坏状态”(如果有的话),所以在这种情况下我会反对它。
重新创建文件系统总是比拖来拖去更安全、更明智。
如果您感到偏执,您应该确保/home
在传输过程中不被访问(您甚至可以进入单用户模式),如果您真的很生气,您可以计算sha256sum
所有文件的哈希值(注意这可能需要几天的时间,并且文件不能被写入!)并将它们与传输进行比较。
一如既往,archlinux wiki 有相当好的介绍性文章:
我建议不要在自己的关键数据上进行冗余实验,而使用虚拟机进行此类实验,它要简单得多,并且您可以打破并了解更多信息。