Как я могу автоматически спящий режим облачных серверов хранения?

10

У меня есть облачные центры хранения данных, работающие под управлением Ubuntu 16.04 lts и NextCloud / OwnCloud, которые не должны быть доступны 24 часа в сутки и 7 дней в неделю. Серверы Dell PowerEdge 1950 Gen II и Dell PowerEdge 2950 Gen II

Общая цель

Серверы хранения облачных хранилищ Hibernate за время простоя, например, 20 минут, и имеют такую ​​деинвариантную систему с WOL, чтобы сократить 6272,09 кг двуокиси углерода в год, что составляет 6680 кВт от нашего центра обработки данных, показатели, достигнутые во время детального энергоаудита.

Неэффективное решение попыталось

Пейзаж

Пейзаж в помещениях / рабочих местах cron предлагает только запланированный запуск и завершение работы, тем самым неэффективен для наших достижимых результатов.

PowerNap

powernap похоже на путь, но сервис не начинается с Ubuntu 16.04

XXXXXXX~$ sudo service powernap status
● powernap.service - PowerNap
   Loaded: loaded (/lib/systemd/system/powernap.service; disabled; vendor preset
   Active: inactive (dead)

ponwernap, похоже, использует обесцененные сервисы, такие как network.service, которые больше не доступны в Ubuntu 16.04

Достижимые цели

Пробуждение по локальной сети (WOL)

Включение WOL прямолинейно, выполнив ручную настройку на этой ссылке . или с использованием powewake

Спящий режим сервера

До сих пор мне удалось спящий режим только с помощью sudo systemctl hibernate и sudo systemctl hibernate-sleep

  1. powernap - я регистрирую отчеты об ошибках для удаления истощенных зависимостей
  2. systemctl - может привести к
  3. pm-utils - может привести и к чему-то еще.

Модернизация оборудования

Я обновил процессоры Dell 1950 Gen II dual Xeon E5335 с процессорами Xeon X5365. X5365 обеспечивает управление питанием и устанавливает управление питанием в BIOS. Честно говоря, я не был сторонником такого обновления, поскольку X5365 потребляет 70 Вт на процессор больше, чем E5335, но сделал это в пользу тестирования спячки.

Обновление 1

В данный момент времени pm-utils - единственный способ обойтись без установки wol на nic. В настоящее время я изучаю оптимальную конфигурацию, чтобы создать крючок питания для настроек переменного тока на время простоя.

Любые рекомендации, пожалуйста.

    
задан Fab 21.02.2017 в 10:05
источник

1 ответ

0

Я собрал небольшой скрипт, который вы можете запускать в cronjob каждые 15 минут или используя таймеры systemd:

#/bin/bash

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

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 . Просто чтобы убедиться, что система не всегда находится в спящем режиме, когда вы выполняете техническое обслуживание или что-то в этом роде.

Я думаю, что можно было бы придумать более интеллектуальные проверки, поэтому см. это как первый простой подход. Например, я не знаю, какая база данных или веб-сервер используется в вашей собственной установке, но вы можете попытаться прекратить их изящно перед командой hibernate, поэтому никто не сможет внезапно потерять соединение.

    
ответ дан romed 12.07.2017 в 14:30