Wiki-Bereiche:

Informationstechnik (IT)
Hobbys

Artikel in diesem Bereich:

Ubuntu Mini-ITX HomeServer

Dokument-Updates
  • 27.08.2009: Undervolting-Abschnitt für neuesten Kernel aktualisiert.
  • 18.08.2009: Neuer Abschnitt "Nachträgliche Anpassungen" mit Beschreibung zur Vergrößerung der verschlüsselten Partition auf der LV.
  • 16.08.2009: Neuer Hardware-Abschnitt "Lüftersteuerung" erstellt.

Hardware

PC-Komponenten

Geräuscharme Kühlung

Im Chenbro ES34069 Mini-ITX Gehäuse sind von Werk hinten links 2x 70cm Lüfter zur Kühlung der 4 vorderen SATA-Festplattenslots verbaut. Die Lüfter sind nicht temperaturgeregelt und werden stetig mit 12V betrieben. In einer einigermaßen ruhigen Umgebung sind sie bei Betrieb leider deutlich zu hören. Regelt man die Lüfter auf 7-10V fällt der Geräuschpegel beachtlich.

Daher wurde zusätzlich eine Lüftersteuerung (den T-Balancer MiniNG) im Gehäuse verbaut:

Es handelt sich um eine 2-Kanal-Lüftersteuerung mit zwei unabhängigen Temperatursensoren für etwa 29 EUR, die vier Betriebsarten (Zieltemperatur, Kurve, Stufe und Manuell) zur Verfügung stellt und mehr als ausreichend Leistung besitzt (20W/50W im Analog-/PWM-Modus pro Kanal).

Als Einbauort eignet sich der Platz über dem ITX-Mainboard direkt hinter dem CD/DVD-Laufwerkslot (ggf. neben einem weiteren 60cm Lüfter). Für die Befestigung werden Klettverschlussstreifen mit doppelseitigem Klebeband mitgeliefert, die man auf die Unterseite der Lüftersteuerung (Kühlblech) und dem PC-Gehäuse kleben kann. Die beiden hinteren Lüfter wurden mittels einem 3-poligen Y-Lüfterkabels an einen Kanal der Lüftersteuerung angeschlossen:

Einen der beiden Temperatursensoren habe ich direkt in einen SATA-Festplattenslot geklebt, um dort unmittelbar die Temperatur der Festplatte zu ermitteln. Die Kabel an den Temperatursensoren sind ausreichend lang, um sie ordentlich im Gehäuse verlegen und an einer beliebigen Stelle platzieren zu können:

Als Betriebsart hat sich "Zieltemperatur" und als Ansteuerungsmodus der "PWM-Modus" als die optimale Konfiguration herausgestellt. Hierbei stellt man über einen der beiden Potis die gewünschte Temperatur am jeweiligen Sensor ein, die gehalten werden soll. Wird die Zieltemperatur überschritten, regelt die Steuerung die Lüfter langsam hoch, bis sich die Temperatur wieder bei der Zieltemperatur einpendelt. Beim Finden der richtigen Potistellung ist etwas Geduld gefragt. Nur geringe Änderung am Poti bewirken teilweise recht hohe Sprünge bei der Zieltemperatur. Da die Steuerung der Lüfter etwas verzögert stattfindet, ist es wichtig nach Änderung der Potieinstellung erst etwas zu warten, bis man eine weitere Anpassung durchführt. Meine Zieltemperatur liegt etwa bei 40°C Festplattentemperatur, die ich über hddtemp auslese (siehe Abschnitt "Sensoren auslesen").

Der Geräuschpegel der Lüfter ist dank der Lüftersteuerung bei normaler Umgebungstemperatur nun sehr angenehm (man hört fast nur noch die Laufgeräusche der Festplatte). Gehen die Festplatten in Standby schalten sich die Lüfter nach einer Zeit sogar komplett aus! Der Vorteil gegenüber einer manuellen Absenkung der Lüfterspannung (z.B. auf 7V) ist, dass bei höherer Umgebungstemperatur (Sommer) die Lüfter bei Bedarf schneller drehen und damit besser kühlen können und das bei Standby der Festplatten die Lüfter komplett abgeschaltet werden.

Möchte man auch auf der Mainboard-Seite des Gehäuses noch für etwas Umluft sorgen (vorallem für den Chipsatz des Intel DG45FC Boards ratsam), so lassen sich bis zu 2 weitere 60cm Lüfter im Gehäuse noch verbauen: einen vorne an der Innenseite des Gehäuses und einen nach oben über dem ITX-Mainboard (siehe Bild mit Lüftersteuerung). Zur Ansteuerung der beiden Lüfter kann dann der 2. Kanal der Lüftersteuerung verwendet werden. Den 2. Temperatursensor befestigt man dazu einfach an einer geeigneten Stelle in der Nähe des Boards (am besten nicht unmittelbar im Luftzug eines der Lüfter).

Stromverbrauch

Stromverbrauch wurde mit einem Voltcraft Energy Check 3000 gemessen (also quasi Highend-Equipment :P).

  • Konfiguration: 180W ext. Netzteil, DG45FC, E5200 mit Box-Lüfter, 2x2GB DDR2-800, 1x2.5" HDD, 4x3.5" HDD, GBe angeschlossen, 2x60cm@5V + 2x70cm@12V Lüfter
    • Ausgeschaltet: 1.6W - 1.7W
    • Ausgeschaltet, jedoch kein Gigabit-Netzwerk angeschlossen: 1.2W - 1.3W
    • Unmittelbar beim Einschalten, wenn alle 5 Festplatten gerade hochfahren: Max 92.4W (1 Sekunde lang)
    • Während BIOS: 72W - 77.1W
    • Beim Linux booten: 52W - 73.9W
    • Idle (Ubuntu vollständig mit allen Diensten hochgefahren): 46.2W - 47.1W
      • Idle, alle vier 1TB Festplatten im Standby: 37.3W - 38.1W
      • Idle, zusätzlich die beiden 70cm Festplattenlüfter ausgeschaltet: 36.4W - 37.4W
        • Kurzzeitig die 2.5" Systemplatte deaktiviert (wacht recht schnell wieder von selbst auf): Minimal 36W
      • Idle, zusätzlich Gigabit-Netzwerkkabel gezogen: 34.3W - 35.2W
    • Volllast mit Platten (2x burnP6, beide Kernel 100% load): 71.0W - 71.7W
  • Konfiguration: siehe oben, jedoch mit nur 1x2GB DDR2-800 RAM
    • Ausgeschaltet: 1.4W
    • Ausgeschaltet, jedoch kein Gigabit-Netzwerk angeschlossen: 1W
    • Unmittelbar beim Einschalten, wenn alle 5 Festplatten gerade hochfahren: Max 88.7W (<1 Sekunde lang)
    • Während BIOS: 70W - 75W
    • Beim Linux booten: 50W - 71.7W
    • Idle (Ubuntu vollständig mit allen Diensten hochgefahren): 45.4W - 46.2W
      • Idle, alle vier 1TB Festplatten im Standby: 36.0W - 36.5W
      • Idle, zusätzlich die beiden 70cm Festplattenlüfter ausgeschaltet: 35.0W - 35.5W
        • Kurzzeitig die 2.5" Systemplatte deaktiviert (wacht recht schnell wieder von selbst auf): Minimal 34.7W
      • Idle, zusätzlich Gigabit-Netzwerkkabel gezogen: 33.8W - 34.3W
        • Bei dieser geringen Leistung fängt das Netzteil plötzlich an fiepsen/krisseln
    • Film streamen: SD: 52.2W- 53W, HD: 52.5W - 53.6W
    • Per AFP auf einer verschlüsselten Partition mit dem Finder durchbrowsen (mit Vorschaufunktion aktiviert): 53W - 55W
      • Ohne Zugriff auf die Festplatten: 52.0W - 52.5W
      • Fällt dann nach ein paar Sekunden mit einem Festplattengeräusch wieder auf den Idle-Wert von 45W (IntelliPark von WD)
    • Timemachine-Backup: 52.3W - 57.5W
    • Volllast (2x burnP6, beide Kernel 100% load): 68.0W - 68.7W
      • Volllast (ohne CPU-Undervolting, siehe unten): 79.0W - 79.7W
    • Bonnie++ Test auf RAID5 mit verschlüsselter Partition: bis zu 75W (vorallem bei putc)
    • Bonnie++ Test und CPU-Volllast mit burnP6: bis zu 79W (vorallem bei putc)

Ein Idle-Wert von 35W für ein Dual-Core Pentium-System kann sich wirklich sehen lassen. Verfügbare Atom-Mainboards mit Dual-Core-CPUs verbrauchen im Idle je nach zusätzlicher Ausstattung 25W bis 35W (siehe Test bei Computerbase und bei Anandtech). Bei einer CPU-Volllast mit 51 Watt (68W Volllast - (52W Festplattenleerlauf - 35W Idle)) liegt das Dual-Core Pentium-System deutlich über den Atom-Mainboards mit 29W-39W, bietet jedoch auch wesentlich mehr Rechenleistung (siehe SYSMark 2007 Performance bei Anandtech). In meinen Augen also ein gutes Performance-per-Watt Verhältnis (siehe auch dieser Test bei Tomshardware).

Bei einem Idle-Wert von 37W und einem KW-Preis von 20,27 Cents ergeben sich bei 24/7 Betrieb Stromkosten von 66 EUR pro Jahr bzw. 5.50 EUR pro Monat. Ich persönlich werde das System nur bei Bedarf per Wake-on-Lan einschalten. Für den 24/7 Betrieb habe ich ein Linksys NSLU2, welches mit nur etwa 2.5W (4.50 EUR im Jahr) zu Buche schlägt. Darüber wickele ich Dienste wie DNS, DHCPd, DSL Einwahl (PPPoE), Routing (NAT), Firewall (IPTables) und SSH/VPN für den Remote-Zugriff ab. Bei Bedarf lässt sich das größere System dann darüber (auch remote) mit Wake-on-Lan einschalten.

Ubuntu Konfiguration

Installation

Standardinstallation von Ubuntu 9.04 Server Edition mit folgender Festplattenkonfiguration:

  • 1x 80GB 2.5" System-HDD: /dev/sde
    • sde1: 256MB vom Typ Linux (83) mit ext2 Dateisystem für /boot
    • sde2: Restliche Kapazität (knapp 80GB) vom Typ Linux LVM (8e)
  • 4x 1TB Daten-HDDs: /dev/sd[OldWiki2:a-d]
    • sd[OldWiki2:a-d]1: 1TB vom Typ Linux raid autodetect (fd)
  • RAID5-Device über die vier 1TB Raid-Partitionen sd[OldWiki2:a-d]1: /dev/md0
    • md0: Komplette Kapazität (3TB) vom Typ Linux LVM (8e)
  • Volume Group "System" mit LVM-Partition sde2
    • LV "swap": 4GB mit Swap
    • LV "root": 8GB mit ext3 Dateisystem für /
  • Volume Group "Data" mit LVM-Partition md0
    • noch frei

IP Adresse anpassen

Datei /etc/network/interfaces

ändern in

Netzwerk neustarten:

Installierte Pakete

Boot-Meldungen beim Start anzeigen

Datei /boot/grub/menu.lst

ändern in

Motd anpassen

WOL konfiguriern

Datei /etc/init.d/halt

ändern in

Quelle: http://wiki.ubuntuusers.de/Wake_on_LAN

Sensoren auslesen

Installieren:

Sensoren auslesen:

Undervolting mit Linux-PHC konfigurieren

Mit Hilfe von Undervolting, dem gezielten Herabsetzen der Core-Spannung der CPU, lässt sich der Stromverbrauch und die Erwärmung der CPU senken. Im Gegensatz zum Underclocking, bei dem der CPU-Takt heruntergesetzt wird, bleibt beim Undervolting der CPU-Takt und damit die volle CPU-Leistung erhalten, sprich weniger Stromverbrauch und Abwärme bei gleicher Leistung. Da bei diesem Verfahren ähnlich wie beim Overclocking Fertigungstoleranzen der CPU ausgenutzt werden, lassen sich CPUs unterschiedlich "gut" undervolten.

Die CPU-Spannung lässt sich zum einen im BIOS einiger Mainboardhersteller herabsetzen oder auch per Software während des Betriebs. Unter Linux exisitiert das Linux-PHC Projekt: Alte Homepage,AktuelleHomepage, Neue Releases im Forum

Für Ubuntu-Systeme gibt es einen fertig phc-gepatchten 2.6.28.15-Linux-Kernel, der auch hier zum Einsatz kommt:

PPA for linux-phc Repository in /etc/apt/sources.list hinzufügen:

Key des Repository importieren (siehe auch Ubuntu-Forum):

Paketliste aktualisieren und System upgraden. Hiermit wird der Kernel mit dem "undervolt"/phc-Patch installiert:

UPDATE Gepatchtes Kernel-Modul beim Booten mittels Eintrag in "/etc/modules" automatisch laden:

System mit neuen Kernel neustarten:

Aktuelle Spannungen auslesen und neue setzen (spezifisch für dieses Mainboard und CPU!):

In diesem System bringt die neue Einstellung unter Volllast eine Ersparnis von 11W:

  • Stromverbrauch bei Volllast mit alten Werten: 79.0W - 79.7W
  • Stromverbrauch bei Volllast mit neuen Werten: 68.0W - 68.7W

Die Einstellung muss bei jedem Neustart erneut durchgeführt werden. Am einfachsten ist ein Eintrag in /etc/rc.local:

Weitere Informationen zum Patch im Ubuntu-Forum.

Festplatten automatisch in Standby fahren

Da die WD10EADS 1TB-Festplatten den "IDE idle timer" nicht unterstützen und deshalb die eingestellte Spindown-Time mit "hdparm -S" nicht funktioniert, setze ich das externe Programm hd-idle stattdessen ein:

Sourcecode per CVS auschecken:

Kompilieren, installieren und dem Standard Runlevel hinzufügen (automatisch beim Booten starten):

Konfiguration in /etc/default/hd-idle anpassen (-i 600 entspricht 10 Minuten):

Schließlich hd-idle starten:

Mail konfigurieren

Postfix-Konfiguration anpassen:

Satellite system auswählen und Smarthost eintragen.

Verschlüsselte Temp- und Swap-Partition

Neue LV für Temp-Verzeichnis anlegen und mit Nullen überschreiben:

Einträge in /etc/crypttab für Swap- und Tmp-Partition vornehmen:

Schließlich noch die /etc/fstab anpassen:

ändern in

Festplatten-Verschlüsselung für einzelne Partitionen/LVs

Neue LV erstellen, auf der ein verschlüsseltes Dateisystem erstellt werden soll:

Verschlüsselung einrichten:

Verschlüsselte Daten öffnen, Dateisystem erstellen und mounten:

Nach Nutzung der Partition wieder unmounten und schließen:

Weitere Informationen:

Verschlüsselte Partionen/LVs beim Booten mit USB-Stick automatisch mounten

Um die Partition ohne Eingabe eines Passworts beim Booten automatisch zu mounten, wird ein Keyfile auf einem USB-Stick, der beim Booten eingesteckt sein muss, ausgelesen.

USB-Stick mounten und Keyfile erstellen:

Zusätzlich zum Passwort soll auch der Zugriff auf das verschlüsselte Device über das Keyfile auf dem USB-Stick ermöglicht werden:

Um eine sichere Erkennung des USB-Sticks zu gewährleisten, bestimmen wir die UUID des USB-Sticks:

Wir nehmen den USB-Stick und das verschlüsselte Device in der /etc/fstab auf:

Nun benötigen wir noch ein Script (/root/keyscript.sh), dass den Key vom USB-Stick beim Booten ausliest.

Schließlich geben wir in der Datei /etc/crypttab das verschlüsselte Device mit dem Keyscript an:

Bei eingesteckten USB-Stick wird nun die verschlüsselte Partition beim Booten automatisch gemäß /etc/fstab gemounted.

Weitere Informationen: Beschreibung von Andreas Janssen, Forenbeitrag bei linuxforen.de

Netatalk für AFP-Freigaben einrichten

Zu startende Dienste in /etc/default/netatalk anpassen:

ändern in

Zeile in Datei /etc/netatalk/afpd.conf hinzufügen (am Ende noch eine Leerzeile anfügen)

Für TimeMachine Backups zusätzliche Freigaben in /etc/netatalk/AppleVolumes.default konfigurieren:

Neustart:

Avahi für TimeMachine Backups einrichten

Pakete installieren:

In der Datei /etc/nsswitch.conf den "mdns"-Dienst bei hosts-Anfragen ergänzen:

Mit der Datei /etc/avahi/services/afpd.service und folgenden Inhalt den Avahi-Dienst für AFP-Freigaben konfigurieren:

Neustart des Dienstes:

Einrichten von TimeMachine auf den Mac OS X Rechnern

Neues Sparsebundle für TimeMachine-Backups erstellen und auf gemountete AFP-Freigabe des Ubuntu-Servers verschieben:

Um die AFP-Freigabe des Ubuntu-Servers für TimeMachine-Backup unter Mac OS X nutzen zu können, muss mit folgenden Konsolen-Befehl auch nicht unterstützte Netzwerklaufwerke freigeschaltet werden:

Nun kann in den TimeMachine-Einstellungen die AFP-Freigabe des Ubuntu-Servers ausgewählt und das erste Backup erstellt werden.

Weitere Informationen gibt es am Ende des Blog-Eintrags von Matthias Kretschmann als Update-Nachträge.

Streaming-Server mit FireFly installieren

Pakete installieren:

Möchte man FireFly mit Avahi betreiben, gibt es mit dem mt-daapd Paket unter den aktuellen (64bit-)Ubuntu-Versionen teilweise Probleme. Der FireFly-Server stürzt direkt beim Starten mit einem Segmentation Fault ab. Über den Bug wird hier diskutiert. Als Workaround kann man den Avahi-Dienst nach dem FireFly-Server starten. Besser ist es jedoch eine gepatchte Version von FireFly zu verwenden: Patch oder direkt das gepatchte 64bit-Debian-Paket zum Download.

Gepatchte Version installieren

Der Server lässt sich entweder über die Konfigurationsdatei /etc/mt-daapd.conf oder nach Start über die Web-Administrationsoberfläche http://IP-des-Server:3689 konfigurieren. Folgende Werte sollte man mindestens anpassen:

  • admin_pw: Administrator-Passwort für Weboberfläche
  • mp3_dir: Verzeichnis mit MP3-Dateien (es können auch mehrere mit Komma getrennt angegeben werden)
  • password: Passwort für Zugriff auf Streaming-Server über z.B. ITunes

Samba-Server einrichten

Samba installieren:

Benutzerpasswörter setzen:

Konfigurationsdatei /etc/samba/smb.conf anpassen (noch wenige Performance-Tuningmaßnahmen enthalten):

Nachträgliche Anpassungen

Verschlüsseltes LVM vergrößern

Partition unmounten und Verschlüsselung schließen:

LVM vergrößern (hier um 512GB):

Verschlüsselung wieder aktiveren:

Dateisystemcheck durchführen (sonst beschwert sich resize2fs):

Schließlich Dateisystem auf verschlüsselten Device vergrößern:

Performance Tests

IO Tests

Vorbereitung:

bonnie++ Test auf Hitachi HTS54258 2.5" 80GB System-HDD:

bonnie++ Test auf RAID5 mit 4x WD10EADS 3.5" 1TB Daten-HDDs:

bonnie++ Test auf verschlüsselten RAID5 mit Cyper aes-cbc-essiv:sha256 und Key-Size 256:

bonnie++ Test auf verschlüsselten RAID5 mit Cyper aes-lrw-benbi und Key-Size 256:

bonnie++ Test auf verschlüsselten RAID5 mit Cyper aes-xts-benbi und Key-Size 256:

bonnie++ Test auf verschlüsselten RAID5 mit Cyper aes-xts-benbi und Key-Size 512:

Stichwörter

ubuntu ubuntu Löschen
homeserver homeserver Löschen
mini-itx mini-itx Löschen
fileserver fileserver Löschen
Geben Sie Stichwörter ein, die dieser Seite hinzugefügt werden sollen:
Please wait 
Sie suchen ein Stichwort? Beginnen Sie einfach zu schreiben.