Zarządzanie energią - Serwer uśpienia / wybudzenia po uzyskaniu dostępu

9

Mam bezgłowy serwer HP Proliant Microserver z zainstalowanym systemem Ubuntu. Ta maszyna ma udziały samby do obsługi multimediów i zwykle używam w niej rdp lub ssh. Teraz moim problemem jest to, że chcę przejść do trybu uśpienia (aby stan został zapisany z pamięci RAM na dysk twardy) i wygląda na to, że został wyłączony po godzinie bezczynności.

Jeśli jest jakaś próba dostępu do udziału samby przez LAN, chciałbym, żeby się obudził. Teraz moja płyta główna obsługuje tę funkcję. Czy ktoś może skierować mnie w dobrym kierunku, aby osiągnąć to łatwo?

Dzięki

KP65
źródło

Odpowiedzi:

3

Najlepszą instrukcją, jaką znalazłem w sieci, była wiki XBMC dla WOL . W skrócie (więcej informacji w linku):

  1. Musisz włączyć WOL na swojej płycie głównej;
  2. Zainstalować ethtool: sudo apt-get install ethtool;
  3. Ustaw Wake on LAN opcji: sudo ethtool -s eth0 wol g;
  4. Włącz go podczas uruchamiania systemu za pomocą skryptu inicjującego. W linku wiki znajduje się skrypt inicjujący.

Nieprzetestowane; informacje z linku wiki

Rinzwind
źródło
2

Oprócz trybu uśpienia to, czego szukasz, to hibernacja, ponieważ chcesz zapisać swój stan na dysku twardym i całkowicie zamknąć serwer.

Tak więc, jak wielu wskazało, odpowiedzią jest WOL (Wake On Lan). Istnieje wiele samouczków na ten temat, ale przede wszystkim musisz skonfigurować następujące elementy:

  • Router musi ominąć magiczny pakiet (jak nazywa się pakiet WOL) na serwerze, więc musisz przekierować port. Zwykle znajduje się w sekcji LAN. Domyślne porty to 7 i 9.
  • Twoja płyta główna musi nasłuchiwać na porcie LAN, gdy jest wyłączona. Większość współczesnych MB zapewnia tę funkcję, ale domyślnie jest wyłączona. Sprawdź to! W moim przypadku nazywa się to „Power on by Ring on Lan”.

Serwer nie potrzebuje więcej ustawień niż odpowiednia konfiguracja zarządzania energią, aby sprowadzić system po godzinie bezczynności (można to zrobić w System> Administracja> Zarządzanie energią).

Oczywiście po wysłaniu pakietu WOL trzeba chwilę poczekać, ponieważ system musi się hibernować i może to potrwać kilka minut.

Powodzenia

sergio.hs84
źródło
2

Zdecydowałem, że chcę, aby rozwiązanie automatycznie budziło mój serwer multimediów po uzyskaniu dostępu, które nie było zależne od dd-wrt.

Mam Raspberry Pi, więc użyłem go, ponieważ ma niską moc i nie mam nic przeciwko utrzymywaniu go przez cały czas, oczywiście można go uruchomić z dowolnej maszyny Linux.

Ostatnim rozwiązaniem, które znalazłem dla siebie, było napisanie małego skryptu bash. Zależności raspberry-pi to etherwake i tcpdump. Oba nie są domyślnie instalowane na rasbian. Również na serwerze należy włączyć Wake On Lan, jak wspomniano w innych postach.

sudo apt-get install etherwake
sudo apt-get install tcpdump

Skrypt aktywacji wygląda następująco:

nano ~/wol.sh

Następnie:

#!/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

Podstawową ideą jest to, że jest uruchamiany z mojego raspberry-pi, który obudzi serwer, jeśli zauważy pojedyncze żądanie arp dla serwera. Jeśli serwer jest przebudzony, nie będzie nasłuchiwał żądania arp, ale od czasu do czasu wyśle ​​kilka pingów, aby upewnić się, że nadal jest przebudzony.

Nazwałem plik wol.sh i uczyniłem go wykonywalnym. Następnie umieść go w sudo crontab, aby uruchomić @reboot jako root. To jest dla tcpdump, który potrzebuje podwyższonego dostępu do nasłuchiwania eth0 i etherwake.

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

dodaj to na dole

@reboot sh /home/pi/wol.sh > /dev/null
Travis Clark
źródło
0

Po włączeniu WoL na serwerze, aby obudzić się z określonego ruchu protokołu, potrzebujesz czegoś takiego jak skrypt działający na twoim routerze, który ma reguły dotyczące pakietów i może wysłać magiczny pakiet WoL po otrzymaniu żądania.

Przykład pobudki serwera WWW

Cas
źródło
0

Wake On Lan jest kluczem, prawie wszystkie karty dzisiaj obsługują wszystkie tryby (ale nie w Linuksie :().

Najłatwiejszym rozwiązaniem jest karta, która ma działający sterownik Linuxa, który obsługuje tryby Wake On Lan: pumbgw ethtool, chcesz coś w rodzaju trybu emisji pojedynczej. Twój komputer uruchomi się natychmiast po uzyskaniu dostępu do jego adresu sieciowego. Ale jeszcze trudniej jest uzyskać listę kart obsługiwanych przez Linuksa, jedną z nich jest Intel Gigabit Netzwerkadapter Pro / 1000 GT PCI.

Obejściem tego jest, jeśli masz kartę, która nie obsługuje wszystkich trybów: prawie wszystkie sterowniki linuksa obsługują tryb g => magiczny pakiet. Musisz więc wyraźnie włączyć serwer, zanim go użyjesz.

Aha
źródło