CentOS 系统恢复:覆盖 RAID 超级块并移植到新硬件

CentOS 系统恢复:覆盖 RAID 超级块并移植到新硬件

我的 CentOS 6 系统运行出现故障,我想尝试恢复系统。

它的一个问题是 mdadm 超级块似乎存在一些问题,它包含各种不一致的信息,并且似乎已被某种方式覆盖。我获取的元数据显示它们是版本 1.0 和 1.1。我非常确定所有 raid 卷都应该使用版本 1.2。所有硬盘都发生了这种情况,所以我不能简单地抓取一个可以正常工作的硬盘。

我已成功挂载这些卷,并通过简单地执行保留权限的“cp”命令将它们复制到另一个硬盘上。新硬盘将具有新的 UUID,因此我必须重新制作一些配置文件。

想到的更改是以下文件:

  • /etc/mdadm.conf
  • /etc/fstab
  • grub 配置(grub-install 可能可以完成这项工作,需要尝试一下)
  • 需要重新编译初始 RAM 磁盘才能意识到更改
  • 重新生成 blkid.tab

我还需要做其他什么更改才能创建可启动系统吗?谢谢。

答案1

系统的 mdadm 超级块以某种方式被覆盖,导致系统元数据不一致,无法启动。GRUB 的某些部分也一定在此过程中被覆盖,否则加载启动所需文件的必要信息不再指向有效位置。

尝试通过恢复光盘恢复 GRUB,但失败,并显示“Grub 文件系统类型未知分区类型 0xfd”和“无法找到 GRUB.conf”。这可能是由于 GRUB Stage 1.5 数据可能已被覆盖,或者 GRUB Stage 1 不再指向用于检索 mdadm raid 驱动程序的正确位置(我想知道是否有办法将文件系统驱动程序传递给 GRUB,如果您知道方法,请添加评论)。

通过执行以下操作,成功将系统移植到另一台机器:

修复启动分区:

  • 在单独的硬盘上完成新系统的安装(如果需要,可以使用 RAID)
  • 重新启动系统,运行 CentOS 救援磁盘并安装新旧系统(例如 /mnt/old_sys 和 /mnt/new_sys)
  • 将之前系统中的所有 /boot 内容(/boot/grub 文件夹除外)复制到新系统的 /boot 分区,确保所有权限均保留。重要的是不要对 GRUB 文件夹进行任何操作,GRUB Stage 1 可能会指向必要的文件 Stage 1.5 或 Stage 2。(虽然需要彻底测试这一点,但为了安全起见,不要对 GRUB 文件夹进行任何操作。)
  • 编辑新的 grub.conf 文件,根据您的要求进行更新。
  • 为刚刚复制的内核重新创建 initram 磁盘(您需要挂载 /dev、/proc、/sys 并将这些分区绑定到新系统的相应分区。Chroot 到新的系统映像和 mkinitrd。)

其余系统数据

  • 从新安装中复制 /etc/fstab 和 /etc/mdadm.conf。您可能可以重命名旧系统数据中的文件并复制这些文件,然后将其复制过去。(这将节省您在复制旧系统数据后再次复制的时间)。
  • 删除 / 分区上的所有文件夹,除了运行时构建的文件夹(例如 /dev、/sys、/proc 是我排除的几个文件夹)。保留权限。
  • 将旧分区中的所有内容复制到新分区(运行时构建的文件夹除外)。当然要保留权限。
  • 重新启动系统,您就应该能够访问恢复的系统。根据需要修改和其他配置文件。例如,如果您要更换系统,请修改 udev/rules.d/ifgcfg-eth0。

相关内容