无需*完全*转储的硬盘复制(转储分区即可)

无需*完全*转储的硬盘复制(转储分区即可)

今天,我买了第二台服务器,它和第一台服务器几乎一模一样(我猜)。规格(处理器型号、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未安装并且可以安全地操作)。

  1. 我使用 fdisk 创建了 4 个主分区,使用了 fdisk 提供的起始值和结束值(例如:4096 → 16386047 /dev/sda1)。

  2. 我确实设置 /dev/sda2为“82”。

  3. 我确实标记/dev/sda1为可启动
  4. 我确实将/dev/sda3/var)和/dev/sda4/backup)格式化为 ext4
  5. 我确实安装了两个分区。
  6. 我从第一台服务器的 /var 执行了 rsync /var
  7. dd我用(从第一个硬盘获取的数据)覆盖了第二个硬盘的第一个数据组(0->4096) 。
  8. /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

那么使用下载的工具来专业地克隆整个硬盘怎么样?您可能会看到这个问题,我曾尝试向另一个用户描述这一点,并提供了一些链接:点击我

由于这个问题有点偏离主题,目前被标记为“暂停”,但据我所知,它仍然可以访问。

相关内容