NAS aan en uit wanneer MacBook aan en uit is

Door balk op zaterdag 7 januari 2017 13:50 - Reacties (10)
Categorie: -, Views: 4.061

Ik heb een Intel D510MO met twee HDD's draaiend op Debian. Dit ding is vooral een backup server voor de MacBook die hier in huis rondslingert. Het verbruik is ongeveer 20W en dat zijn natuurlijk weggegooide wattjes wanneer we slapen of werken.

Vanaf de Mac stuur ik elk uur een incremental backup met behulp van CCC naar de NAS. Het ene uur grote bestanden naar een share. Het andere uur kleine bestanden naar een image op een share. Kleine files? zaken als de Aperture library van 90 GB en enkele 100.000en files. Grote files? zaken als de raw foto bestanden.

Ik had eens ergens een script vandaan gehaald dat zorgde dat de NAS automatisch aan gaat als een bepaalde computer aan gaat, aan blijft als deze aan is, en weer uit gaat als die computer uit gaat. Bron is weg, dus ik herhaal hier schaamteloos de scriptjes.

1. Wake on Lan

In het BIOS van mijn NAS moest ik Wake On Lan activeren.

2. Wek de NAS wanneer MacBook ontwaakt

Met behulp van Sleepwatcher laat ik een script draaien wanneer de laptop wakker wordt. Dit staat in het bestand ~/.wakeup.

code:
1
2
3
4
5
6
7
8
9
#!/bin/bash


/usr/bin/perl /path/to/wol.pl --mac xx:xx:xx:xx:xx:xx

/bin/sleep 120

# vul IP van server in
/usr/bin/ssh 192.x.x.x '/bin/echo $(/bin/date +%s)  > /path/to/folder/wake/upmark'



Dit [url=]http://www.cpan.org/authors/id/S/SR/SRAMKI/]Wake on lan script[/] heb je nodig om met perl de NAS te WoL'en. Dit script heeft enkele dependencies. Installeer die ook.

Op de NAS moet je ook een (door de user beschrijfbare) directory aanmaken. Die van mij staat in ~/wake. Maak daarin een bestand upmark:
touch ~/wake/upmark

Bovenstaand script zal de NAS wakker schudden en twee minuten later de tijd schrijven naar ~/wake/upmark.

3. Hou de NAS wakker (kant van de Mac)

Ik heb op de Mac het volgende script: ticker.sh

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash

ip="192.168.0.NAS" # IP of NAS

if ! ping -c 1 -W 5 "$ip" &>/dev/null ; then

echo "$ip is down, they're all going to laugh at you!"
/usr/bin/perl /path/to/wol.pl --mac xx:xx:xx:xx:xx:xx
/bin/sleep 120
else
echo "$ip is up"
fi

/usr/bin/ssh 192.168.0.NAS '/bin/echo $(/bin/date +%s)  > /path/to/wake/upmark'
#$(/bin/date +%s)


Met behulp van Launcontrol roep ik elk kwartier dit script aan:
ticker.sh

4. Hou de NAS wakker (kant van de NAS)

Op de NAS, installeer pm-utils en test de correcte werking. Het laat je NAS hibernaten, dit schrijft de inhoud van je RAM naar schijf en de NAS gaat helemaal uit.

CreŽer het bestand /path/to/wake/keepawake.sh

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

file="/path/to/wake/upmark"
LOGPATH="/path/to/wake/log_wake.log"

timestamp() {
  /bin/date
}

mactime=$(/bin/cat "$file")
now=$(/bin/date +%s)

#deltat=`/usr/bin/expr $(/bin/date +%s)-$mactime`
deltat=$(($now  - $mactime))
limit=1200

/bin/echo $deltat
/bin/echo $limit

if (( deltat > limit ));
then
        # hibernate
        /bin/echo "$(timestamp): system hibernated" >> $LOGPATH
#       /bin/systemctl hibernate
        /usr/bin/sudo /usr/sbin/pm-hibernate
        exit
else
        # do nothing
        
        /bin/echo "$(timestamp): system kept awake, delta is $deltat" >> $LOGPATH
        exit
fi


Als user:
crontab -e


code:
1
5,20,35,50 * * * * /path/to/wake/keepawake.sh


Dit roept elk uur, 5 minuten nadat er een ticker binnen is gekomen van de Mac, het script op dat de huidige tijd met de ticker tijd vergelijkt. Is er geen ticker binnengekomen? Dan is de Mac offline en kan de NAS gaan slapen.

Volgende: Opentherm Gateway via WiFi naar Domoticz 06-05 Opentherm Gateway via WiFi naar Domoticz

Reacties


Door Tweakers user ThinkPad, zaterdag 7 januari 2017 19:56

Schrijf je dat bestand met de tijd naar de HDD's van de NAS, of in het geheugen van de NAS? De NAS kun je natuurlijk overdag ook aan laten staan, maar de HDD's in spindown laten gaan zodat ze pas weer gaan draaien als je daadwerkelijk een map opent vanaf de laptop.

Door Tweakers user balk, zaterdag 7 januari 2017 20:03

ThinkPad schreef op zaterdag 7 januari 2017 @ 19:56:
Schrijf je dat bestand met de tijd naar de HDD's van de NAS, of in het geheugen van de NAS? De NAS kun je natuurlijk overdag ook aan laten staan, maar de HDD's in spindown laten gaan zodat ze pas weer gaan draaien als je daadwerkelijk een map opent vanaf de laptop.
Bestand gaat naar de HDD. Spindown werkt volgens mij niet goed bij mijn WD Green schijven. En de NAS is echt behoorlijk snel weer up & running.

Door Tweakers user GemengdeDrop, zaterdag 7 januari 2017 23:09

balk schreef op zaterdag 7 januari 2017 @ 20:03:
[...]

Bestand gaat naar de HDD. Spindown werkt volgens mij niet goed bij mijn WD Green schijven. En de NAS is echt behoorlijk snel weer up & running.
hoezo niet?
Er was wel een probleem met de excessive head-parking, iets dat maakt dat die na elke 8 seconden inactiviteit de koppen parkeerde in de offloading-ramp. Waardoor naar verloop van tijd je schijf aan gort gaat.

Maar er is een een tooltje om dat te fixen (wdidle3). De kunst is om er een te vinden die ook werkt met de schijf die je daadwerkelijk hebt. Maar in principe kan je die auto-offload delay instellen of zelfs helemaal uitschakelen. Zelf heb ik het uitgeschakeld en met een scriptje laat ik ze downspinnen na 1h inactiviteit.

Door Tweakers user Kek, zondag 8 januari 2017 12:25

Leuk ja, dit gebruik ik ook al een aantal jaar zo, werkt prima :D

Door Tweakers user SpamLame, zondag 8 januari 2017 14:23

H3, je defineerd $ip met een value en in regel 14 hardcode je het ip alsnog.

waarom niet

code:
1
/usr/bin/ssh $ip '/bin/echo $(/bin/date +%s)  > /path/to/wake/upmark'


Door Tweakers user tim-405, zondag 8 januari 2017 15:43

Die naam van je script hahaha geniaal. En handig scriptje ;D

Door Tweakers user qless, maandag 9 januari 2017 08:25

Was Apple niet gestopt met Aperture?

Door Tweakers user balk, maandag 9 januari 2017 08:57

qless schreef op maandag 9 januari 2017 @ 08:25:
Was Apple niet gestopt met Aperture?
Klopt, maar dat betekent niet dat mijn aperture bibliotheek verdwenen is. Bovendien heb ik nu Lightroom in gebruik en die maakt ook heel, heel, heel veel kleine bestanden aan.

Door Tweakers user Macsylver, donderdag 12 januari 2017 22:42

Thanks! bookmarked voor e.v.t. toekomstig gebruik :D

Door Tweakers user sdk1985, vrijdag 13 januari 2017 22:00

Je kunt natuurlijk ook gewoon je NAS 'on-demand' aan laten gaan via je WOL instellingen. Dat wil zeggen dat hij uit standby komt wanneer je hem accessed. Voor Linux heb je dan de UG flag nodig als ik me niet vergis. Met Windows is het een vinkje.

Reactie formulier
(verplicht)
(verplicht, maar wordt niet getoond)
(optioneel)

Voer de code van onderstaand anti-spam plaatje in: