电源管理 - 访问时休眠/唤醒服务器

电源管理 - 访问时休眠/唤醒服务器

我有一台安装了 ubuntu 的无头 HP Proliant Microserver。这台机器上有 samba 共享服务媒体,我通常通过 rdp 或 ssh 进入它。现在我的问题是我想让机器进入睡眠模式(这样状态就会从内存保存到硬盘),并且在空闲一小时后看起来就像关闭了一样。

如果有人试图通过 LAN 访问 Samba 共享,我希望它能够被唤醒。现在我的主板支持此功能,有人能告诉我如何轻松实现这一目标吗?

谢谢

答案1

我在网上找到的最好的说明是XBMC wiki 中的 WOL。简而言之(更多信息见链接):

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

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

答案2

除了睡眠模式之外,您还需要休眠模式,因为您希望将状态保存在硬盘中并完全关闭服务器。

因此,正如许多人指出的那样,答案是 WOL(局域网唤醒)。有很多关于它的教程,但主要需要设置以下内容:

  • 您的路由器必须绕过魔术包(即 WOL 包)到达您的服务器,因此您需要进行端口转发。它通常位于 LAN 部分。默认端口为 7 和 9。
  • 您的主板在关机时需要监听 LAN 端口。大多数现代主板都提供此功能,但默认情况下处于禁用状态。检查一下!在我的情况下,它被称为“通过 LAN 上的 Ring 开机”。

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

显然,发送 WOL 数据包后您必须等待一段时间,因为您的系统需要解除休眠状态,这可能需要一段时间。

祝你好运

答案3

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

我有一个树莓派,所以我用它是因为它的功耗低而且我不介意一直开着它,当然它可以在任何 Linux 机器上运行。

我自己找到的最终解决方案是编写一个小的 bash 脚本。raspberry-pi 依赖项是 etherwake 和 tcpdump。默认情况下,这两个程序在 rasbian 上都没有安装。此外,服务器上需要启用局域网唤醒功能,如其他帖子中所述。

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.x.x  #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

答案4

网络唤醒是关键,如今几乎所有的卡都支持所有模式(但 Linux 除外 :()。

最简单的解决方案是使用具有支持局域网唤醒模式的 Linux 驱动程序的卡:pumbg在 中ethtool,您需要类似单播模式的东西。这样,只要您访问其网络地址,您的计算机就会立即启动。但获取 Linux 支持的卡列表更加困难,我发现的卡是 Intel Gigabit Netzwerkadapter Pro/1000 GT PCI。

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

相关内容