电源管理 – 访问时hibernate/唤醒服务器

我有一个安装了ubuntu的无头HP Proliant微服务器。 这台机器上有samba共享服务媒体,我通常rdp或ssh进入它。 现在我的问题是我希望机器进入睡眠模式(因此状态从ram保存到硬盘)并且看起来它在一小时空转后关闭。

如果有任何尝试通过LAN访问samba共享我希望它唤醒。 现在我的主板支持这个function,任何人都可以指出我正确的方向来实现这一目标吗?

谢谢

我在网上找到的最好的指令是WOL的XBMC维基 。 简而言之(链接中的更多信息):

  1. 您需要在主板上启用WOL;
  2. 安装ethtool: sudo apt-get install ethtool ;
  3. 设置Wake-on-LAN选项: sudo ethtool -s eth0 wol g ;
  4. 使用init脚本在系统启动时启用它。 wiki链接中有一个init脚本。

未测试; 来自wiki链接的信息

除了睡眠模式之外,您正在寻找的是hibernate,因为您希望将状态保存在硬盘中并完全关闭服务器。

因此,正如许多人所指出的,答案是WOL(Wake On Lan)。 有很多关于它的教程,但主要是你需要设置以下内容:

  • 您的路由器必须绕过魔术数据包(因为WOL数据包被调用)到您的服务器,因此您需要进行端口转发。 它通常位于LAN部分。 默认端口为7和9。
  • 电源关闭时,您的主板需要在LAN端口上进行监听。 大多数现代MB都提供此function,但默认情况下处于禁用状态。 核实! 就我而言,它被称为“Lan on Ring on Power”。

服务器不需要比适当的电源管理配置更多的设置,以便在一小时不活动后关闭系统(可以从系统>管理>电源管理完成)。

显然,你必须等待一段时间后发送WOL数据包,因为你的系统需要去hibernate,它可能需要一些。

祝好运

我决定在访问不依赖于dd-wrt时自动唤醒我的媒体服务器的解决方案。

我有一个覆盆子pi所以我使用它因为它是低功率我不介意一直保持它,当然它可以从任何Linux机器运行。

我为自己找到的最终解决方案是编写一个小的bash脚本。 raspberry-pi依赖是etherwake和tcpdump。 默认情况下,两者都没有安装在rasbian上。 另外在服务器上,需要启用Wake On Lan,如其他post中所述。

 sudo apt-get install etherwake sudo apt-get install tcpdump 

唤醒脚本如下:

 nano ~/wol.sh 

然后:

 #!/bin/bash pingInterval=60 #time interval, in seconds, between checks that the server is still awake. target=192.168.xx #WOL target ip address targetMAC=00:11:22:33:44:55 #WOL target MAC wake () { tcpdump -i eth0 -c 1 -p host $target etherwake $targetMAC #echo WOL sent to $target at $targetMAC return } while sleep $pingInterval; do varPing=`ping -s 1 -c 2 $target > /dev/null; echo $?` if [ $varPing -eq 0 ]; then #echo ping success else #echo ping fail wake fi done 

主要的想法是它从我的raspberry-pi运行,如果它注意到服务器的单个arp请求,它将唤醒服务器。 如果服务器处于唤醒状态,那么它不会正在监听arp请求,而是偶尔发送几个ping以确保它仍处于唤醒状态。

我将文件命名为wol.sh并使其可执行。 然后将它放在sudo crontab中以root身份启动@reboot。 这适用于tcpdump,需要提升访问权限才能收听eth0和etherwake。

 sudo chmod +x /home/pi/wol.sh sudo crontab -e 

将其添加到底部

 @reboot sh /home/pi/wol.sh > /dev/null 

在服务器上启用WoL以使其唤醒特定协议流量时,您需要在路由器上运行具有数据包规则的脚本,并在收到请求时发送WoL魔术数据包。

Webserver唤醒示例

Wake On Lan是关键,今天几乎所有卡都支持所有模式(但不支持linux :()。

最简单的解决方案是具有支持Wake On Lan模式的工作Linux驱动程序的卡: ethtool pumbg ,您需要类似单播模式的东西。 因此,只要您访问其网络地址,您的计算机就会启动。 但要获得Linux支持的卡列表更加困难,我发现它是Intel Gigabit Netzwerkadapter Pro / 1000 GT PCI。

解决方法是,如果您的卡不支持所有模式:几乎所有Linux驱动程序都支持g mode => magic数据包。 因此,在使用服务器之前,必须明确地打开服务器。