我们有 2 台服务器,一台是 4 年历史的老服务器,另一台是刚买的,两台硬件都差不多,在老服务器上我们使用 centos 4.5,过去 1900 天老服务器都没有重启过。
现在我们想要进行克隆而无需重启旧服务器(oldserver = serverone),所有生产数据都在我们想要克隆的 serverone 上。
我们采取了如下措施:-
SERVERONE 以 root 身份运行
tar cfl /boot /tmp/boot.tar
tar cfl /(root) /tmp/root.tar
tar cfl /data /tmp/data.tar
使用 centos 的第一张 CD 将 SERVERTWO 作为救援模式
fdisk -l /dev/sda
创建新分区
/dev/sda1 * /boot 300MB (same as serverone)
/dev/sda2 <swap> 2G
/dev/sda3 /
fdisk -l /dev/sdb
创建新的 par
/dev/sdb1 /data
mkfs.ext3 /dev/sda1
mkfs.ext3 /dev/sda3
mksf.ext3 /dev/sdb1
mkswap /dev/sdb2
来自SERVERTWO
cd /dev/sda1
scp root@serverone:/tmp/boot.tar .
cd /dev/sda3
scp root@serverone:/tmp/root.tar .
cd /dev/sdb1
scp root@serverone:/tmp/data.tar .
cd /dev/sda1
tar xf boot.tar
cd /dev/sda3
tar xf root.tar
cd /dev/sdb1
tar xf data.tar
chroot /mnt/root
grub-install
如果您对上述解决方法有任何建议或有任何可以制作 .iso 直播并且我们可以在 servertwo 上使用的工具,请帮助我。
答案1
如果您像这样备份数据并且进程仍在写入磁盘文件,则将面临不一致的风险(文件未存档,因为它们是在 tar 运行完成目录后写入/更改的)。
为了避免这种情况,您应该确保没有任何内容写入磁盘。为此,您需要结束文件系统上所有具有打开的写入句柄的进程(lsof /mountpoint | egrep '[0-9]+[wu]'
这会有所帮助)并将文件系统重新挂载为只读(mount -o remount,rw /mountpoint
)。在这种情况下,您可能需要运行fsck /mountpoint
以检查文件系统错误。之后,您可以简单地使用dd
进行逐字节克隆。
这样,您便可以避免重新启动,但尽管如此,该服务器上所有有意义的服务都会停机。
答案2
如果它们确实相同,为什么不直接从 CD 启动新的盒子,将物理分区安装在某处并 rsync 数据。
请注意,无论你选择哪条路线,你仍然需要在之后进行清理,即
截断 mtab
安装引导程序
检查 fstab 命名模式是否匹配(即使用相同的设备文件或更改磁盘 ID)
如果适用,更改主机名/ip