我们正在从 RHEL6 --> CentOS 7 升级。相关主机的操作系统位于 /dev/sda 上,并且在 /dev/sdb 和 /dev/sdc 上有一些补充数据驱动器。当我运行 kickstart 安装时,我显然希望 /dev/sda (旧操作系统)的内容被新操作系统覆盖。
如果现在是 /dev/sda,我敢打赌在 kickstart 环境中它将是 /dev/sda。但我似乎记得在某处读到这并不是 100% 值得信赖的保证。
如果当前称为 /dev/sdb 或 /dev/sdc 的内容在 kickstart 环境中被确定为 /dev/sda 并被操作系统覆盖,那将是一场史诗般的悲剧。
关于如何保证 kickstart 将操作系统安装在特定驱动器上,有什么建议吗?
我最好的猜测是,在 kickstart 文件中检查以确保 /dev/sda 包含我们期望的 LVM 实体,例如根逻辑卷的“lv_root”。如果 /dev/sda 包含 lv_root,则假设确实已为 /dev/sda 分配了正确的驱动器并继续。
答案1
在您要查找的 kickstart 文件中:
ignoredisk --only-use=sda
这将导致sda
安装忽略除此之外的所有磁盘。
该sd
字母应保持不变(因为它基于使用的 SATA 端口)。然而值得注意的是,sd
如果可移动介质在硬盘驱动器之前使用并且通常被识别为使用sd*
(例如,如果您从 USB 驱动器安装),则可移动介质可以抵消字母。
如果您也未在 kickstart 中指定autopart
或part
部分,安装将在擦除驱动器之前暂停(询问您要如何分区。kickstart/安装中的任何其他提示也将阻止立即擦除磁盘)。在这里,您可以在安装开始之前使用++切换到TTY2并尝试安装CTRL
驱动器ALT
。F2
在 TTY2 上,您将拥有一个免费root
终端,因此您可以创建一个目录,挂载sda#
到该目录,然后浏览以确保这些是文件。
如果磁盘正确,您可以返回 TTY1 并继续安装。
这有关 kickstart 的 RHEL 文档对于这种东西来说是黄金。
答案2
我认为您可以编写脚本,以便使用磁盘 uuid 而不是块设备标签。例如:
part / --fstype=ext4 --onpart=/dev/disk/by-id/ata-ST3160815AS_6RA0C882
。至少这可以保证重新启动时的一致性。