我们有一些服务器运行在非常恶劣的环境(研究船),需要有高可用性。
我们有软件RAID 1来提供一定程度的恢复能力,以及适当的数据备份(磁带等),但是我们希望能够打破新的服务器,并从一个已知的好副本重新映像它(包括RAID设置),如果生产箱上的硬件完全失效。 简单的过程是一个很大的好处。
我感兴趣的任何build议,最好的方法来解决这个问题。 我目前的方法(对Linuxpipe理来说比较新,对于MDADM来说是全新的),就是使用DD从一个live CD中取出一个RAID设备的完整gzip拷贝: dd if=/dev/sda bs=4096 | gzip -c > /mnt/external/image/test.img dd if=/dev/sda bs=4096 | gzip -c > /mnt/external/image/test.img然后在新PC上反转进程,最后使用mdadm --assemble重新创build并重新构build数组。
我不确定这是最好的方法,还是甚至可以工作。 任何build议将是伟大的。
基于dd(块级别)的副本将包含磁盘上的所有可用空间,不会占用较大的磁盘空间,并且不适合放置较小的磁盘(捏住)。
而不是在块级别上进行克隆,我会在文件系统级别进行。
我会从Live CD启动新的服务器,对磁盘进行分区,创build新的MDarrays,格式化arrays,在任何交换卷上运行mkswap ,然后解压(或者un-cpio,如果您愿意的话)将每个源服务器卷的级别副本复制到每个新arrays中。 最后我会安装boot-loader。 那么你是金。
所有这些都可以被脚本化,并与文件系统归档文件一起滚动到实时CD / DVD映像上以解压缩。
传统上, dump和restore是密切知道文件系统结构的程序,可以高效地写出并加载保存和恢复文件系统所需的最小程度。
在Linux上, dump和restore命令(有时称为e2dump和e2restore )适用于ext2 / 3/4。 xfsdump和xfsrestore是XFS的类似物。
当然,您可以使用文件系统无关的工具,如tar或cpio或rsync 。 由于您不必设置分区或文件系统或引导加载程序,但您的dd方法在使用简单性上胜出,但如果您的磁盘不完全相同,则可能会导致问题。
根据埃文的回答,如果你想要一个更传统的图像,你可以挂载和使用作为只读参考文件系统,我build议你看看你的源卷的SquashFS图像。
对于部署,你安装你的镜像,然后使用你select的文件级副本(rsync,tar / untar或者cpio都是合理的)。 使用你现在的方法对于一个快速而肮脏的图像来说也是很好的,但是正如埃文指出的那样,你的灵活性还是相当的。