Управление питанием - сервер сна / пробуждения при доступе

У меня безголовый микросервер HP Proliant с установленной Ubuntu. На этой машине есть разделы samba, которые служат медиа, и я обычно использую rdp или ssh. Теперь моя проблема в том, что я хочу, чтобы машина перешла в спящий режим (чтобы состояние сохранялось от оперативной памяти до жесткого диска), и может показаться, что она выключена после часа простоя.

Если есть попытка получить доступ к общему ресурсу samba через локальную сеть, я бы хотел, чтобы он проснулся. Теперь моя материнская плата поддерживает эту функцию, может ли кто-нибудь указать мне правильное направление для достижения этой цели легко?

Спасибо

9
задан 17 May 2011 в 13:06

5 ответов

Лучшей инструкцией, которую я нашел в Интернете, была вики XBMC для WOL . Вкратце (более подробная информация в ссылке):

  1. Вам необходимо включить WOL на материнской плате;
  2. Установить ethtool: sudo apt-get install ethtool;
  3. Установить Wake- параметры локальной сети: sudo ethtool -s eth0 wol g;
  4. Включите его при запуске системы с помощью сценария инициализации. В вики-ссылке есть сценарий инициализации.

Не проверено; информация из вики-ссылки

0
ответ дан 17 May 2011 в 13:06

Wake On Lan - это ключ, почти все карты сегодня поддерживают все режимы (но не в linux :().

Самое простое решение - это карта с работающим драйвером Linux, поддерживающим режимы Wake On Lan: pumbg в ethtool вы хотите что-то вроде одноадресного режима. Таким образом, ваш компьютер запускается, как только вы получаете доступ к его сетевому адресу. Но еще сложнее получить список карт, поддерживаемых Linux, одну, которую я нашел это Intel Gigabit Netzwerkadapter Pro / 1000 GT PCI.

Обходной путь есть, если у вас есть карта, которая не поддерживает все режимы: почти все драйверы Linux поддерживают магический пакет g mode =>. Таким образом, вы должны явно включите сервер, прежде чем использовать его.

0
ответ дан 17 May 2011 в 13:06

Если на вашем сервере включен WoL, чтобы он проснулся для трафика определенного протокола, вам понадобится что-то вроде скрипта, работающего на вашем маршрутизаторе, который имеет правила пакета и может отправлять волшебный пакет WoL, когда он получает запрос.

пробуждение веб-сервера пример

0
ответ дан 17 May 2011 в 13:06

Помимо спящего режима, вы ищете режим гибернации, поскольку вы хотите сохранить свое состояние на жестком диске и полностью отключить сервер.

Итак, как указывалось многими, ответом является WOL (Wake On Lan). Об этом много уроков, но в основном вам нужно настроить следующее:

  • Ваш маршрутизатор должен обойти магический пакет (как называется пакет WOL) на вашем сервере, поэтому вы нужно сделать переадресацию портов. Обычно он находится в разделе ЛВС. Порты по умолчанию - 7 и 9.
  • Ваша материнская плата должна прослушивать порт LAN, когда она выключена. Большинство современных МБ предоставляют эту функцию, но по умолчанию отключено. Проверь это! В моем случае это называется «Включение по кольцу на локальной сети».

Серверу не нужно больше настроек, чем в подходящей конфигурации управления питанием, чтобы отключить систему после часа простоя (это можно сделать из Система> Администрирование> Управление питанием).

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

Удачи

0
ответ дан 17 May 2011 в 13:06

Я решил, что мне нужно решение для автоматического пробуждения медиа-сервера при обращении, которое не зависит от dd-wrt.

У меня есть Raspberry Pi, поэтому я использовал его, потому что он маломощный, и я не против держать его включенным постоянно, конечно, его можно запускать с любой машины Linux.

Окончательным решением, которое я нашел для себя, было написание небольшого сценария bash. Зависимости raspberry-pi - это etherwake и tcpdump. Оба не установлены по умолчанию на rasbian. Также на сервере должен быть включен Wake On Lan, как упоминалось в других постах.

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

Основная идея заключается в том, что он запускается от моего малинового пи, который разбудит сервер, если он замечает один запрос arp для сервера. Если сервер активен, он не будет прослушивать запрос arp, но время от времени отправляет несколько пингов, чтобы убедиться, что он все еще активен.

Я назвал файл wol.sh и сделал его исполняемым. Затем поместите его в crontab sudo для запуска @reboot от имени пользователя root. Это для tcpdump, которому необходим повышенный доступ для прослушивания eth0 и etherwake.

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

добавить это в нижней части

@reboot sh /home/pi/wol.sh > /dev/null
0
ответ дан 17 May 2011 в 13:06

Другие вопросы по тегам:

Похожие вопросы: