Hallo,
hat jemand eine Virtualisierung laufen wo ein VDR und NAS auf einem physikalischem Rechner laufen?
Wenn ja, mit welcher Software setzt ihr das um und was für eine Leistung sollte der Rechner haben?
Hallo,
hat jemand eine Virtualisierung laufen wo ein VDR und NAS auf einem physikalischem Rechner laufen?
Wenn ja, mit welcher Software setzt ihr das um und was für eine Leistung sollte der Rechner haben?
Ich hab eine Maschine unter ESXi 5.1 laufen.
Darauf laufen u.a. ein VDR unter Archlinux und als NAS NAS4Free.
Auf der Maschine läuft noch mehr. Auch ein Windows. Von daher ist die Hardware größer dimensioniert als nötig.
In meinem Falle ein Core i5, 16 GB RAM, 6 Platten a 2 TB. 5 der Platten laufen in einem Raid-Z2 Verbund. Die sechste dient dem VDR für Aufnahmen.
Die VMs und ESXi selbst liegen auf einer SSD.
Ich hole diesen alten Thread hier noch einmal hoch, weil ich im großen und ganzen meine Lösung gefunden habe: LINK
Bevor ich mit meinem Testsystem aber produktiv gehe, wollte ich von den hier anwesenden "Virtualisierern" mal wissen, wie Ihr das mit den Timerprogrammierungen gelöst habt. Was ich mir überlegt habe ist, dem Server (unRAID) S3 Sleep zu ermöglichen und diesen dann durch yaVDR wecken zu lassen, sobald eine Aufnahme fällig ist. Frage ist halt nur, ob die VM den Timer überhaupt mitbekommt, wenn der Server im S3 ist.
Gibt es eine Best Practice für so einen Fall (klar, den Server 24x365 betreiben ginge, aber wir wollen ja Strom sparen) ?
Der Server läuft bei mir durch. Es ist ja nicht nur VDR in Betrieb. In meinen Augen ist das Thema mit der heutigen Hardware auch nicht mehr so kritisch. Man kann relativ problemlos einen Server bauen, der um 20 Watt im Leerlauf verbraucht. Das Sparpotential ist dann so gering, das der Aufwand für eine Abschaltung eigentlich nicht lohnt.
Dein Ansinnen funktioniert so auch nicht, wenn der VDR in einer VM läuft. Dann kann er Timer setzen wie er will. Die kommen nie bei der echten Hardware an.
Eine Lösung wäre z.B. yaVDR als Betriebssystem direkt auf der Hardware zu nutzen und dann VMs mit KVM laufen zu lassen. Der VDR läuft dann direkt auf der Hardware und hat die Kontrolle. Dann geht auch Wakeup. Fnu hatte diese Konfiguration hier im Forum auch schon einmal beschrieben (vielleicht auch mit Xen statt KVM, weiß nicht mehr genau).
Hi.
Ich habe dazu vdrpsend in ein eigenes Script auf dem VM-Server eingebaut. Der VM-Server fragt dadurch per vdrpsend die VDR-VM, wann der nächste Timer startet und schreibt dann entweder den nächsten regulären Aufwachzeitpunkt oder den nächsten timerstartpunkt in das RTC-wakeup device.
ByE...
Hallo atl, das ist ja eine interessante Sache, die Du da machst. Hättest Du etwas dagegen, mir Dein Script einmal zu Verfügung zu stellen? Vielen Dank.
Hättest Du etwas dagegen, mir Dein Script einmal zu Verfügung zu stellen?
Nein, grundsätzlich nicht. Aber das Skript macht noch viel, viel mehr, was sich ganz sicher sehr stark von deiner Nutzung unterscheiden würde. Deshalb veröffentliche ich hier nur die Bereiche, die für den speziellen Fall interessant sind:
#!/bin/bash
#
#set -x
LANG=en
LC_ALL=en_US.UTF-8
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# should the server wake up by itself and when
AUTO_WAKEUP="yes"
WAKEUPTIME="09:00"
# comment it out to ignore virtual VDRs timers for next wakeup
VDR_WAKEUP="yes"
# VMs which are running VDR (multiple IPs separated by space)
VDR_VMS="10.0.2.64"
SVDRP_PORT=6419
# minimum uptime of the server
MIN_UPTIME=30
# ... more other stuff
IsVDRRecordingActive()
{
if [ "$(echo ${VDR_WAKEUP,,})" == "yes" ]
then
# check all VDRs for next timer
for VDR in $VDR_VMS
do
if [ -n "$(ping -c 1 -t 1 ${VDR} 2>/dev/null | grep ttl )" ];
then
# check if next timer has started or will started before NOW + MIN_UPTIME, if yes exit script
if [ $(svdrpsend -d ${VDR} -p ${SVDRP_PORT} NEXT rel | grep 250 | awk '{print $3}' | sed -e 's/\r//') -lt $(( MIN_UPTIME * 60 )) ]
then
logit "There is an active recording running now (or in less than ${MIN_UPTIME} min) on ${VDR}!"
return 1
else
# check for next timer and set NEXT_STARTUP to NEXT_RECORD - 5 Minutes, if it before current NEXT_STARTUP
NEXT_RECORD=$(svdrpsend -d ${VDR} -p ${SVDRP_PORT} NEXT abs | grep 250 | awk '{print $3}' | sed -e 's/\r//')
NEXT_RECORD=$(( NEXT_RECORD - 300 ))
#echo "Next Startup (pre VDR): ${NEXT_STARTUP}"
#echo "Next Record: ${NEXT_RECORD}"
[ ! ${NEXT_STARTUP} ] || [ ${NEXT_STARTUP} -gt ${NEXT_RECORD} ] && NEXT_STARTUP=${NEXT_RECORD}
#echo "Next Startup (after VDR): ${NEXT_STARTUP}"
fi
fi
done
fi
return 0
}
# ... more other stuff
# calculate todays and next wakeup time for AUTO_WAKEUP
TODAY=$(date +%s --date $(date +%Y-%m-%d))
if [ "$(echo ${AUTO_WAKEUP,,})" == "yes" ] && [ -n "${WAKEUPTIME}" ]
then
eval $(echo ${WAKEUPTIME} | awk -F: '{printf "HOURS=%i; MINUTES=%i", $1, $2}')
TIME=$(( HOURS * 3600 + MINUTES * 60 ))
TODAY_WAKEUP=$(( TODAY + TIME ))
[ $(date +%s) -lt ${TODAY_WAKEUP} ] && NEXT_STARTUP=${TODAY_WAKEUP}
[ $(date +%s) -gt ${TODAY_WAKEUP} ] && NEXT_STARTUP=$(( TODAY_WAKEUP + 86400 ))
#echo "Next wakeup time: ${NEXT_STARTUP}"
fi
IsVDRRecordingActive
if [ "$?" == "1" ]; then
exit
fi
if [ ${NEXT_STARTUP} ]
then
echo 0 > /sys/class/rtc/rtc0/wakealarm
echo ${NEXT_STARTUP} > /sys/class/rtc/rtc0/wakealarm
echo "echo ${NEXT_STARTUP} > /sys/class/rtc/rtc0/wakealarm"
fi
Alles anzeigen
Das ganze wird von mir genutzt auf einem Proxmox-Server, sollte aber auch problemlos auf jedem anderen Debian oder Ubuntu System funktionieren. Voraussetzung ist aber, dass der ACPI-Wakeup mit dem System funktioniert, sprich die Hardware entsprechend konfiguriert ist und das Betriebssystem auch. Desweiteren muss das svdrpsend-Skript z.B. von YaVDR auf den Server kopiert werden und dort auch funktionieren, sprich Perl muss installiert sein.
Vielen Dank - ich werde sehen, ob ich das an meine Installation adaptieren kann (Slackware basierend). Sind auf jeden Fall tolle Anregungen.
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!