如何自动休眠云存储服务器?


13

我有运行Ubuntu 16.04 lts和NextCloud / OwnCloud的云存储数据中心,它们不需要24/7全天候可用,并且不需要电源管理解决方案。服务器为Dell PowerEdge 1950 Gen II和Dell PowerEdge 2950 Gen II

总体目标

休眠的云存储服务器经过20分钟的空闲时间后,已与WOL解除休眠状态,仅从我们的数据中心每年就减少了6272.09千克二氧化碳,即6680kw,这些指标是通过详细的能源审核获得的。

无效的解决方案尝试

景观

本地/ cron作业中的环境仅提供计划的启动和关闭,因此对于我们可以实现的任务无效。

Powernap

powernap似乎可行,但该服务未在Ubuntu 16.04上启动

XXXXXXX〜$ sudo服务关机状态
●powernap.service-PowerNap
   已加载:已加载(/lib/systemd/system/powernap.service;已禁用;供应商预设
   有效:无效(无效)

ponwernap似乎使用的折旧服务(例如network.service)在Ubuntu 16.04中不再可用

可达成的目标

局域网唤醒(WOL)

遵循此链接上的手动设置,启用WOL非常简单。或使用powewake

服务器休眠

到目前为止,我仅使用sudo systemctl hibernate和休眠服务器sudo systemctl hibernate-sleep

  1. powernap-我正在提交错误报告以删除耗尽的依赖关系
  2. systemctl-可能导致某个地方
  3. pm-utils-也可能导致某个地方

硬件升级

我已经使用Xeon X5365 CPU升级了Dell 1950 Gen II Dual Xeon E5335的CPU。X5365启用电源管理并从BIOS设置电源管理。老实说,我不赞成这种升级,因为X5365的每CPU功耗比E5335多70瓦,但这样做却有利于休眠测试。

更新1

此时此刻pm-utils是除设置wolNIC 之外的唯一方法。目前,我正在探索最佳配置,以便为空闲时间的交流电设置创建电源钩。

任何建议,请。


1
欢迎来到Ask Ubuntu。拜托,你有什么问题?请更具体
MadMike '17

休眠云服务器会经过一个空闲时间,并已通过WOL取消休眠。额外的细节将给出一个工作方案示例。
Fab

1
我不太了解您的绊脚石是什么。您尝试了哪些无效的方法和/或您需要帮助理解的具体内容是什么?
Zanna

3
冬眠不切实际吗?根据您的RAM大小和磁盘读写速度,休眠和恢复可能需要几分钟。在这段时间内如何处理请求?您的用户愿意等待那么长时间吗?简单地挂起可能是更好的折衷方案,以节省功耗,同时保持更大的敏捷性。也许虚拟化服务器并将它们托管在一台功能强大的计算机或群集上,使您可以挂起/恢复部件,同时平衡其他服务器上的负载也可以帮助节省功耗。请注意,尽管如此,但我没有大型服务器系统的经验。
字节指挥官

1
我同意Byte Commander。对于具有数据中心运营实际经验的人员的建议,您可能应该询问Server Fault
David Foerster

Answers:


0

我整理了一个小脚本,您可以每15分钟在cronjob中运行一次,也可以使用systemd计时器运行该脚本:

#/bin/bash

NActiveUsers=$(who -q | awk -F'#' '{printf $2}' | awk -F'=' '{printf $2}')
AvgLoad15Min=$(cat /proc/loadavg | awk -F' ' '{print $3}')

ActiveUsersThresh=2
AvgLoadThresh=0.15

if [ "$NActiveUsers" -lt "$ActiveUsersThresh" ]
then
    LoadBelowThresh=$(echo $AvgLoad15Min'<'$AvgLoadThresh | bc -l)
    if [ "$LoadBelowThresh" -eq 1 ]
    then
        systemctl hibernate
    fi
fi

它首先获取登录到系统的用户数以及最近15分钟内的平均负载。您应该可以使用找出空闲的平均系统负载cat /proc/loadavg。第三个浮点数给出了最近15分钟的平均值。此值有助于定义变量中的阈值集AvgLoadThresh。这当然需要调整。您可以定义的另一件事是允许多少用户登录,并且系统无论如何都进入休眠状态。这是在中设置的ActiveUsersThresh。只是为了确保系统在进行维护或其他操作时不会一直处于休眠状态。

我猜可能会提出更智能的检查,因此将其视为第一种简单的方法。例如,我不知道您自己的cloud安装中使用了哪个数据库或Web服务器,但是您可以尝试在hibernate命令之前优雅地停止它们,以便没有人突然断开连接。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.