我正在考虑在我的网络上安装文件服务器,用于提供数据和备份。
我希望这台机器随时可用,但我不想让它一直保持打开状态(以节省电量)。
是否可以进行设置,以便该设备在一段时间后自动挂起(或关闭电源),然后在我尝试连接到它时自动重新打开电源(使用 LAN 魔术唤醒,而无需发送显式 WOL包)?
答案1
我很幸运地使用过午睡(它是为 ubuntu-sever 打包的,但源代码在那里,所以你应该能够在任何东西上编译它)在备份机器不做任何事情时暂停它们。但是,这不会自动唤醒它们。还有一个与 PowerNap 源 tarball 捆绑在一起的 PowerWake 程序(与powerwake
Ubuntu 中一样打包),它为 Wake-On-Lan 进程提供了一些抽象(例如,可以轻松地仅使用主机名发送 WOL),但它仍然不是自动的。
编辑。另外一个选择:
我对此了解不多,因为我从未使用过它,但有些卡能够通过任何单播消息唤醒。您可以查看您的卡是否具有使用功能网络工具
# ethtool eth0
将 eth0 替换为您的网络设备。然后查看以“Supports Wake-on:”开头的行的输出。如果该行列出了“u”,那么您可以在启动时执行以下操作(即在初始化脚本或类似的内容中):
ethtool -s eth0 wol u
与 PowerNap 或在某些条件下使机器进入睡眠状态的其他任何东西相结合,这应该可以提供您正在寻找的东西。
答案2
OS X 现在可以做到这一点,从 Snow Leopard 开始。这是通过睡眠代理服务。这几乎是自动的。唯一的要求是您的 LAN 上有第二台始终在线的 Apple 设备,可以充当睡眠代理。我相信他们目前的低功耗嵌入式盒子都支持这一点:Airport、Time Machine 和 Apple TV。
但在一般情况下,我相信答案是否定的。我不知道有任何其他操作系统已经实现了这样的服务。该技术是开源的,因此最终没有理由不普及。它可能还太新,目前还无法得到广泛采用。
您现在可能会问,为什么在 LAN 上需要第二个 Apple 盒子?
当 PC 处于睡眠状态时,内核(以及网络堆栈)不会运行,因此操作系统中没有代码可以响应您想要的那种“神奇”数据包。
LAN 唤醒魔术数据包不由操作系统处理。它们被网络接口 IC 识别,网络接口 IC 通过向 CPU 发送信号以将其从睡眠状态释放来做出响应。它可以做到这一点,因为 IC 在某些睡眠状态下仍保持通电状态。 (这就是为什么在某些机器上,当 PC“关闭”时以太网链路指示灯保持亮起状态。)
Apple 技术起作用的原因是,在 PC 进入睡眠状态之前,它会通知睡眠代理。然后,睡眠代理会安排暂时接受睡眠计算机的流量,如果它收到一些有趣的信息,它会向 PC 发送一个 WOL 数据包,并交出它收到的流量。