将/ boot和MBR移至新驱动器


11

我有一个带有两个硬盘的CentOS 6服务器。我的旧3TB驱动器给我带来了一些问题,因此我将事情转移到了新驱动器上。由于my //homepartition由LVM管理,因此很容易将它们迁移到新驱动器。现在,我要移至/boot分区和MBR上,以使其全部启动。

我装入了一张实时CD,并rsynced/boot分区上将其加载到新驱动器上的相同大小的分区上。我还尝试使用以下命令复制MBR:

dd if=/dev/sda of=mbrbackup bs=512 count=1
dd if=mbrbackup of=/dev/sdb bs=446 count=1

完成此操作后,我重新启动,告诉我的BIOS在引导周期中不要查看旧的硬盘驱动器,而仅查看新的驱动器,但是最后我只剩下闪烁的光标。

我在这里错过了一步吗?还是我需要做些其他事情来使事情启动,以便完全删除旧驱动器?

编辑:我开始认为rsync不是将/ boot分区从一个驱动器复制到另一个驱动器的方法。根据本指南,我尝试使用dump命令。在此命令中,我将旧的未挂载的引导分区复制到了新的空挂载的引导分区。

dump -0f - /dev/sdaX | (cd /mnt/boot; restore -rf -) 

我在启动时遇到grub错误15,这比闪烁的光标要好,但我不知道这是否更接近解决方案。


为什么不在新驱动器上grub-install?
弗罗斯特斯

每次我厌倦了运行grub-install时,我都会启动并仅收到grub提示。
Cloudkiller

Answers:


3

如果两个硬盘大小相同(或新硬盘更大),为什么不将旧磁盘复制到新磁盘呢?即

dd if=/dev/sda of=/dev/sdb

现在,如果新硬盘更大,请使用parted或gparted更改分区大小。所有这些操作都是通过实时CD / USB记忆棒启动的。


他们是不同的大小。3tb只是对服务器的过度杀伤,因此我调低到1tb猛禽,希望获得更高的速度。无论如何,克隆似乎不是问题。至少LVM部件易于移动,并且引导分区似乎完全复制了我的上一个转储。现在,我认为问题与我的grub或MBR有关。我认为问题是我对grub2以及它如何与LVM交互以解决它不了解。
Cloudkiller 2013年

使用dd进行位复制是一种古老的数据迁移方式,尤其是当磁盘大小现在处于TB级且实际数据量通常少于10gb时;全新安装的SUSE干净安装了许多库,在磁盘上我可以运行5GB左右,我将它压缩成一个文件,然后使用8gb的记忆棒将tar文件四处移动,无论启动是EFI还是MBR,启动分区MB。
罗恩

如果您可以使用EFI或UEFI而不是BIOS,并且可以通过GPT而不是MBR&dos引导分区来拥有EFI引导分区,那么基本上可以将EFI分区格式化为fat32并复制到这几MB的相关文件中;否则,对于MBR,您必须不了解其工作原理,更正其中与新磁盘有关的地址,然后将新的MBR安装在第一个扇区的新磁盘上,以便BIOS可以正常访问它;如果您的硬件支持EFI,则EFI会好得多
ron 18'Mar

ELILO比GRUB / GRUB2更好,grub中的很多东西我从来没有使用过,只会使事情变得复杂。一个elilo.conf文件,您完成了!如果它不能仅引导要查找和更正的那个文件
ron 18'Mar

4

事实证明,使用rsync或转储复制/ boot分区是造成此问题的原因。根据上述erick的回答,我将现场CD引导到救援模式,并运行了以下dd命令。

dd if=/dev/sda of=mbrbackup bs=512 count=1
dd if=mbrbackup of=/dev/sdb bs=446 count=1
dd if=/dev/sda1 of=/dev/sdb1

我再次运行前两个dd只是为了确保所有内容均已正确复制并且在进行的所有测试中均未损坏。然后,我运行第三个dd将引导分区从旧驱动器复制到新驱动器。之后,我关闭计算机,取出旧驱动器,然后毫无问题地引导到CentOS中。

由于在已挂载的驱动器上使用转储导致了某些问题,导致复制无法正常工作。无论如何,dd做到了。谢谢大家的帮助。


自从成功以来,这就是无知的一个很好的例子。问问自己,应急CD为您做了什么,以纠正MBR中的问题?系统中同时有两个磁盘,一个是sda,一个是sdb,并且当您删除旧磁盘而只有新磁盘时,是否会改变然后变成sda或sdb?
罗恩

取决于您所做的事情可能无关紧要,但是通常最好通过某些独特的方法(例如,通过device-id或UUID)来引导或标识磁盘。
罗恩

使用dd和MBR就像在引擎上使用点和冷凝器,而不是通过电子燃料喷射(EFI)进行电子点火... pun旨在...而不使用EFI,因为尚未完全理解。
罗恩

3

我建立了一个新卷,而不是dd。采取更多步骤,但可能会解决问题而不是将问题复制过来。我的/ boot太小,损坏了。我也在grub2中使用cento7。因此,我的指令将需要进行一些调整,或者按照psusi的建议升级到grub2。我试图记录这些变化。

注意:当我使用“ / dev / sdx”时,我假设您知道“ sdx”需要更改为您要/ boot的磁盘/卷的名称。

  • 使用fdisk(不是cfdisk)对类型为83(普通Linux部分)的分区进行分区,并将其标记为可引导。
    • 使用fdisk的原因:cfdisk启动分区的时间太早,没有足够的空间用于引导加载程序。请记住,引导加载程序需要在分区之前安装。
  • 将文件系统放在分区上。Ext [234],xfs。其他?。
  • 在/ boot挂载
  • 将* .img文件从旧的/ boot复制到/ boot…至少要保留。
  • 我还将vmlinuz- *文件从旧的/ boot复制到了/ boot…,不确定是否需要。
  • 运行grub2-install / dev / sdx
    • 注意1:如果您使用的是grub(而不是grub2),我相信正确的命令是grub-install / dev / sdx
    • 注意2:此文件安装在我们刚刚格式化的分区之前,因此不要将其指向/ dev / sdx1!
  • 运行grub2-mkconfig -o /boot/grub2/grub.cfg
  • 不要忘记为/ boot更新/ etc / fstab

参考: http : //www.ocztechnologyforum.com/fo...226#post373226 http://www.patriotmemory.com/forums/...ead.php?t=3696 http://thunk.org/tytso /blog/2009/02/...se-block-size/ https://ubuntuforums.org/showthread.php?t=1528529 https://wiki.centos.org/HowTos/Grub2


2

问题是您不应该那样dd来复制MBR。您只需要在新驱动器上重新安装grub即可获得正确更新的MBR。MBR包含grub阶段2文件的位置,该文​​件在还原转储时已更改。

另外,您还应该升级到grub2,因为grub的遗留物已经多年未维护,并且grub2不需要非lvm / boot分区。


我正在使用grub2,这是CentOS 6安装程序放在磁盘上的内容。此外,非lvm / boot分区也是CentOS提供的默认设置。我试图多次在驱动器上重新安装grub2,但是让它正常工作是我难以理解的事情。
Cloudkiller
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.