Linux 系统暂停后执行命令的最佳方法

Linux 系统暂停后执行命令的最佳方法

问题: 我们服务器中的 SSD 在固件更新后需要进行电源循环(即关闭/打开,而不是重置/热重启)。

想法: 使用“ipmitool 底盘电源循环”,我可以循环服务器的电源。但是,这会在系统仍在运行、文件系统已安装等情况下切断电源。

我基本上想要的是延迟电源循环,以便系统有机会停止。但我想这必须在服务器的 IPMI 板上实现,所以这实际上不是一个选择。

我最初的想法是动态创建一个包含工具和库的 ramdisk,并以某种方式将其集成到停机过程中。我看到有一个 /etc/init.d/halt,所以那将是我的起点。虽然我相信内核在关机过程中的某个时刻会开始终止剩余的进程。所以我甚至不确定这是否是一种可行的方法。

问题: 在系统停止并且所有常规文件系统都卸载后,执行 ipmitool(或任何其他命令)的最佳方法是什么?

答案1

我会将其降级为单用户模式,卸载所有非操作系统文件系统,并将所有现有文件系统重新挂载为只读。然后运行固件更新工具并“ipmitool 底盘电源循环”。

它不漂亮也不聪明,但应该足够安全

答案2

执行正常的完全关机和断电操作;数到十,然后使用局域网唤醒或 IMPI 重新打开机器,连接到 BMC(戴尔的 DRAC?)。如果您想将其完全保留在机器本地,某些 BIOS 会让您通过 ACPI 指定唤醒/开机时间 - 请参阅http://www.mythtv.org/wiki/ACPI_Wakeup。例如,将启动时间设置为(现在)+(正常关机持续时间)+(较小的安全裕度),然后运行关机。

我不知道服务器级硬件是否真的可以做到这一点 - 如果您尝试的话请告诉我们。

答案3

您正在寻找一个看门狗。一个由您的软件激活的计时器,如果计时器到期而未刷新,则重置计算机。为此,您需要一个带有支持计时器的 BIOS 来打开机器,一个外部 IPMI 管理器,或者幸运的是 IPMI 电源循环支持可以直接在您的机器上工作。

作为起点,请查看IPMI 实用程序其中还包括具有“电源循环”重置的工具。

如果您可以将看门狗定时器设置为活动状态,则建立一个运行级别,以硬件关机的超时功能启动定时器。您的关机(不关闭 ACPI)运行级别的最后效果应该是终止定时器更新过程。

答案4

在启动时(而不是关闭时)。

使用网络启动。

您需要对物理驱动器进行电源循环,因此我建议您重新启动机器,告诉它从网络启动,完成后,对驱动器进行电源循环,然后从驱动器重新启动。

相关内容