我注意到,当我拔掉网线时,系统会等待大约 100 秒来配置网络,因此我编辑/etc/init/failsafe.conf
并注释了两wait()
行(感谢教程这里)
# Plymouth errors should not stop the script because we *must* reach
# the end of this script to avoid letting the system spin forever
# waiting on it to start.
$PLYMOUTH message --text="Waiting for network configuration..." || :
#sleep 40
$PLYMOUTH message --text="Waiting up to 60 more seconds for network configuration..." || :
#sleep 59
$PLYMOUTH message --text="Booting system without full network configuration..." || :
然后我抓起一个计时器,开始计算启动时间的秒数,奇怪的是,启动一个未插网线的系统比启动一个插网线的系统要多 15 秒。而且大部分延迟都出现在启动时出现的这一行:
the disk driver for servername--vg-swap1 not ready
我的主文件夹已加密,并且 Ubuntu 已使用 LVM 安装。
你可能会说“再延迟 15 秒又有什么坏处呢?”好吧,我正在配置这台服务器用于交通控制系统,如果发生电源故障,系统应该尽快恢复,所以每一秒都很重要。
谢谢。
答案1
您是否已将 eth0 设置为由 DHCP 自动分配?查看 /etc/network/interfaces(它是一个文件,而不是文件夹)
如果你的输入看起来像这样:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
那么延迟这么大是因为您的系统正在尝试运行 DHCP,即使网线已拔出,这意味着它会运行所有通道直到得到响应,但由于没有插入,所以永远不会得到响应,所以需要一段时间。如果已插入,速度会快得多,因为它应该会很快收到 DHCP 请求。
这是我能想到的最好的解释。
答案2
如果你坚持要加快启动时间,你应该在启动时不运行任何程序。系统启动并运行后,再启用设备和系统应用程序。
将机器设置为仅启动到控制台而不启动网络,然后在 rc.local 中设置脚本以休眠一段时间,然后启用网络和其他服务。在良好的硬件上,您应该能够在 5 秒内(grub 停止操作后)“启动”。
但是,根据您的评论,这不是最好的答案。如果没有网络,“服务器”部分将 100% 没用,如果没有网络,“工作站”部分将 100% 没用(您说的是 Web 应用程序)。因此,与正常启动相比,快速启动的 Linux 机器仍然会 100% 没用更长时间。此外,如果您使用“普通”服务器硬件,您可能在预引导加载程序设置和发布上花费的时间比在 Linux 启动上花费的时间要多得多。
此外,如果您的服务器正在运行关键软件,您应该使用两个或更多个集群,并且较长的启动时间也很重要。
简而言之,以这种方式改变启动顺序虽然启动速度更快,但几乎肯定会需要更长的时间才能从中断中恢复。
如果您想加快网络访问速度,那么禁用 DHCP 并使用静态 IP 应该会有所帮助。另外,请考虑,即使交换机上有“插件”生成树算法,也可能需要一段时间才能获得真正的网络访问。