我们有一些在非常恶劣的环境(研究船)中运行的服务器,需要具有高可用性。
我们有软件 RAID 1 以实现一定程度的弹性,以及适当的数据备份(磁带等),但是如果生产机上的硬件完全失效,我们希望能够拆出一台新服务器并从已知良好的副本重新镜像它(包括 RAID 设置)。流程简单是一大优势。
我对解决此问题的最佳方法的任何建议都很感兴趣。我目前的方法(对 Linux 管理相对较新,对 MDADM 完全陌生)是使用 DD 获取其中一个 RAID 设备的完整 gzip 副本(来自实时 CD):
dd if=/dev/sda bs=4096 | gzip -c > /mnt/external/image/test.img
然后在新 PC 上反向执行该过程,最后使用
mdadm --assemble
它重新创建和重建阵列。
我不确定这是否是最好的方法,或者它是否有效。任何建议都很好。
答案1
基于 dd(块级别)的副本将包含磁盘上的所有可用空间,不会利用以后的更大磁盘,也不会适合较小的磁盘(在紧急情况下)。
我不会在块级别进行克隆,而是在文件系统级别进行克隆。
我会从实时 CD 启动新服务器,对磁盘进行分区,创建新的 MD 阵列,格式化阵列,mkswap
在任何交换卷上运行,然后将每个源服务器卷的文件级副本解压(或解压缩,如果您愿意)到每个新阵列中。最后,我会安装引导加载程序。然后你就成功了。
所有这些都可以编写脚本并与要解压的文件系统档案一起滚动到实时 CD/DVD 映像上。
答案2
传统上,dump
和restore
是熟悉文件系统结构并能高效地写出和加载保存和恢复文件系统所需的最少信息的程序。
在 Linux 上,命令dump
和restore
(有时名为e2dump
和e2restore
)适用于 ext2/3/4。 xfsdump
和xfsrestore
是 XFS 的类似物。
当然,您可以使用独立于文件系统的工具,例如tar
或cpio
或rsync
。您的dd
方法以易用性取胜,因为您根本不需要设置分区、文件系统或引导加载程序,但如果您的磁盘不完全相同,则可能会导致问题。
答案3
与 Evan 的回答一致,如果您想要一个可以挂载并用作只读参考文件系统的更传统的图像,我建议您研究一下获取源卷的 SquashFS 图像。
对于部署,您可以挂载映像,然后使用您选择的文件级副本(rsync、tar/untar 或 cpio 都是合理的)。使用当前方法对于快速而粗糙的映像也很好,但正如 Evan 指出的那样,这会占用相当多的灵活性。