今天,我买了第二台服务器,它和第一台服务器几乎一模一样(我猜)。规格(处理器型号、RAM、HDD)相同。
但是我没能将第一个服务器的磁盘复制到第二个服务器。它无法启动。派去检查硬件故障的技术人员说“软件配置错误。服务器无法启动。甚至无法分辨安装的是哪个操作系统。”
以下是我失败的原因:
I did fdisk -l on my first disk.
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x000b6660
Device Boot Start End Blocks Id System
/dev/sda1 * 4096 16386047 8190976 83 Linux
/dev/sda2 16386048 17432575 523264 82 Linux swap / Solaris
/dev/sda3 17432576 222230527 102398976 83 Linux
/dev/sda4 222230528 976762879 377266176 83 Linux
然后我确实以救援模式启动了第二台服务器(有点像从实时 CD 启动:/dev/sda
未安装并且可以安全地操作)。
我使用 fdisk 创建了 4 个主分区,使用了 fdisk 提供的起始值和结束值(例如:4096 → 16386047
/dev/sda1
)。我确实设置
/dev/sda2
为“82”。- 我确实标记
/dev/sda1
为可启动 - 我确实将
/dev/sda3
(/var
)和/dev/sda4
(/backup
)格式化为 ext4 - 我确实安装了两个分区。
- 我从第一台服务器的 /var 执行了 rsync /var
dd
我用(从第一个硬盘获取的数据)覆盖了第二个硬盘的第一个数据组(0->4096) 。- 我
/dev/sda1
用第一块硬盘上的dd
镜像覆盖了第二块硬盘
我期望:
具有相同分区方案的硬盘,保存前 4096 个字节,相同/dev/sda1
,rsync 副本/dev/sda3
(/var
)和不同的/backup
(对于服务器操作无用)。
为什么这个方案不起作用?我该怎么做才能做得更好?我不反对在两台服务器之间通过网络传输 500 GB 来存储整个硬盘,但我没有办法将图像存储在新服务器上……
答案1
它不起作用,因为您没有在新磁盘上安装引导加载程序。Grub 通常占用磁盘的前 64k,因此如果您想复制 grub,则需要 dd 那么多。然后 grub 通过 UUID 查找您的根或引导分区,因此如果您格式化了新分区并复制了文件,则不会匹配,因此 grub 将停止并等待您手动告诉它要引导什么。其他分区上更改的 UUID 也会阻止它们被挂载。
如果您只是 dd grub over,那么您将需要首先使用命令告诉它在哪里找到自己set prefix=(hdXX,Y)/boot
(填写驱动器和分区号),然后该normal
命令应该加载 grub 的其余部分并拉出启动菜单,但您需要按e
编辑它并更改 kernel root= 参数以指向正确的分区而不是旧的 UUID。最后,您需要更新 /etc/fstab,以便它可以找到新的分区。
答案2
那么使用下载的工具来专业地克隆整个硬盘怎么样?您可能会看到这个问题,我曾尝试向另一个用户描述这一点,并提供了一些链接:点击我
由于这个问题有点偏离主题,目前被标记为“暂停”,但据我所知,它仍然可以访问。