У меня безголовый микросервер HP Proliant с установленной Ubuntu. На этой машине есть разделы samba, которые служат медиа, и я обычно использую rdp или ssh. Теперь моя проблема в том, что я хочу, чтобы машина перешла в спящий режим (чтобы состояние сохранялось от оперативной памяти до жесткого диска), и может показаться, что она выключена после часа простоя.
Если есть попытка получить доступ к общему ресурсу samba через локальную сеть, я бы хотел, чтобы он проснулся. Теперь моя материнская плата поддерживает эту функцию, может ли кто-нибудь указать мне правильное направление для достижения этой цели легко?
Спасибо
Лучшей инструкцией, которую я нашел в Интернете, была вики XBMC для WOL . Вкратце (более подробная информация в ссылке):
sudo apt-get install ethtool
; sudo ethtool -s eth0 wol g
; Не проверено; информация из вики-ссылки
Wake On Lan - это ключ, почти все карты сегодня поддерживают все режимы (но не в linux :().
Самое простое решение - это карта с работающим драйвером Linux, поддерживающим режимы Wake On Lan: pumbg
в ethtool
вы хотите что-то вроде одноадресного режима. Таким образом, ваш компьютер запускается, как только вы получаете доступ к его сетевому адресу. Но еще сложнее получить список карт, поддерживаемых Linux, одну, которую я нашел это Intel Gigabit Netzwerkadapter Pro / 1000 GT PCI.
Обходной путь есть, если у вас есть карта, которая не поддерживает все режимы: почти все драйверы Linux поддерживают магический пакет g mode =>. Таким образом, вы должны явно включите сервер, прежде чем использовать его.
Если на вашем сервере включен WoL, чтобы он проснулся для трафика определенного протокола, вам понадобится что-то вроде скрипта, работающего на вашем маршрутизаторе, который имеет правила пакета и может отправлять волшебный пакет WoL, когда он получает запрос.
пробуждение веб-сервера пример
Помимо спящего режима, вы ищете режим гибернации, поскольку вы хотите сохранить свое состояние на жестком диске и полностью отключить сервер.
Итак, как указывалось многими, ответом является WOL (Wake On Lan). Об этом много уроков, но в основном вам нужно настроить следующее:
Серверу не нужно больше настроек, чем в подходящей конфигурации управления питанием, чтобы отключить систему после часа простоя (это можно сделать из Система> Администрирование> Управление питанием).
Очевидно, что после отправки пакета WOL вам придется подождать некоторое время, так как вашей системе необходимо отключить спящий режим, и это может занять несколько минут.
Удачи
Я решил, что мне нужно решение для автоматического пробуждения медиа-сервера при обращении, которое не зависит от 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