我正在将一个看似是 redhat 4(可能是 5?)服务器克隆到相当新的硬件上,因为原来的主板出现故障。DBA 不想重新配置新安装,所以他们希望我尽可能进行克隆。我使用了 Clonezilla 稳定版本 2.5.0-25,并通过静态 IP 通过网络执行了第二个选项磁盘到远程磁盘复制。使用了本教程:https://www.youtube.com/watch?v=8UGR_RLCptQ
Redhat 版本信息:
[root@original_server ~]# cat /etc/redhat-release
redhat-4
#Enterprise Linux Enterprise Linux Server release 5 (Carthage)
旧硬件:Asus RS260/2x Xeon E5420/12gb DDR3 ECC FB RAM(硬件问题之前为 24gb)/ICP ICP5085BL RAID 控制器/RAID 10 8 个驱动器最佳
新硬件:华硕 RS720/2X Xeon 2620/48gb DDR3 ECC FB RAM/华硕 PIKE 2308 RAID 控制器/RAID 10 8 个驱动器最佳
在此过程中,我没有被要求克隆引导加载程序,尽管挂载在 /boot 上的 sda1 分区似乎随后被克隆了。
长话短说,克隆似乎成功了,旧数据位于新服务器上的正确分区中,但是当我尝试启动时,出现了Unable to access resume device (LABEL=SWAP-sda5) and mount: could not find filesystem '/dev/root'
错误。然后出现了一些没有此类文件或目录的错误,然后是内核崩溃。
到目前为止我已经尝试过:
使用 CentOS 5.11 64 位 DVD 重建 initrd 并按照以下说明进行操作:https://wiki.centos.org/TipsAndTricks/CreateNewInitrd。当我使用
$(uname -r)
指定的值时,命令返回“内核“2.6.18-398.el5”没有可用模块”。我使用现有 initrd 文件(2.6.18-8.el5)上的内核版本号重新运行该命令,它成功了。文件大小完全相同。从华硕网站通过 RPM 安装用于 el5_3 的 LSI Fusion-MPT SAS2 驱动程序以用于 RAID。
initrd
安装 RAID 控制器后 删除原始文件并重建。initrd
文件仅稍微小一些(一个或两个字节)。从 Gparted 获取 sda1、sda2、sda3、sda6 的 UUID 并
/etc/fstab
使用它们而不是标签进行修改。在 grub.conf 中取消注释
#boot=/dev/sda
并将其修改为boot=/dev/sda1
。修改启动顺序中的内核命令(更改
ro
为rw
,指向root=
,,/dev/sda
以及/dev/sda3
指向UUID=uuid的/dev/sda3
),但这些都不起作用。
我还没有尝试过但我知道可以选择以下选项:
重新安装 grub,但我是否要重新安装到
/dev/sda1
(原来的位置)或/dev/sda
?我如何事先备份原始 grub 设置?从源代码安装 RAID 控制器驱动程序(另一件我不太熟悉的事情)。
运行 fsck:不太熟悉,过去曾使用 -f -y 选项运行它,但显然您想以交互方式运行它以免破坏系统。
我猜是 RAID 驱动程序的问题,但我不知道如何将其包含在 initrd 中。如果有更好的 Linux 系统克隆选项,我愿意接受(我尝试时 Partimage 无法加载,但我可以再次尝试)。已经花了三天时间,所以希望我在提问之前已经尽职尽责。
原始 /etc/fstab:
[root@original_server ~]# cat /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs defaults 0 0
LABEL=/main /main ext3 defaults 1 2
LABEL=/opt /opt ext3 defaults 1 2
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
LABEL=SWAP-sda5 swap swap defaults 0 0
原始的/boot/grub/grub.conf:
[root@original_server ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda3
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Enterprise Linux (2.6.18-8.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-8.el5.img
TLDR:尝试使用 Clonezilla 通过网络将 redhat 4 机器克隆到较新的硬件,但出现无法找到文件系统 /dev/root 的问题。修改了 fstab 和 grub.conf,安装了 RAID 驱动程序,修改了启动选项,并重新创建了 initrd,结果相同。
如果需要,我可以提供截图或更多信息。任何帮助我都会感激不尽,谢谢。
答案1
这里的问题是root=
GRUBkernel
行中的选项不正确。您需要更新grub.cfg
,然后将 GRUB 重新安装到启动设备。
现在,我不确定应该将它安装在哪里。通常它应该安装到实际的磁盘设备,即 ,而/dev/sdx
不是分区 ( /dev/sdxN
)。但是,如果您将它安装到分区,应该不会出现任何问题。
我不熟悉如何在 Red Hat 中更新现有的 GRUB 安装。我搜索了说明,找到了以下内容:https://unix.stackexchange.com/questions/152222/equivalent-of-update-grub-for-rhel-fedora-centos-systems