Asrock ION 330 Pro als Heimserver

Aus Laub-Home Wiki

Dies soll eine Anleitung werden um einen idealen Heimserver aufzusetzen. Das Augenmerk Nummer Eins liegt auf dem Stromsparen, da ein Server normalerweise 24x7x365 läuft, können schon ein paar Watt mehr oder weniger gut oder schlecht für den Geldbeutel sein. Hier ein kleines Rechenbeispiel: Server von 120W vs Server von 30W:

120W*24/1000*31=89,28KWh im Monat --> bei 21cent pro KWh = 18,75€
30W*24/1000*31=22,32KWh im Monat --> bei 21cent pro KWh = 4,69€

Mach eine Ersparniss von ungefähr 14€ im Monat (macht fast 170€ im Jahr). Ich denke da sollte man nicht lange überlegen.

Features

Der Server soll folgende Dinge erfüllen:

  • Stromsparen!!!
  • Fileserver
    • Samba und NFS
    • Fileserver HDD via USB oder ESATA
    • Verschlüsselung der Dateien mittels LUKS (der kleine ION ist zu langsam dafür)
  • Webserver (Apache)
  • FTP Server
  • KissPlayer Server (via kissdx)
  • Nagios Monitoring System
  • Monitorix
  • Virtuelles WindowsXP

Grundinstallation

Wahl des Betriebsystemes

Ich habe um das geeignete System zu finden Beide für mich in Frage kommenden Systeme, Ubuntu 11.04 und Debian Squeeze (beide 64Bit), mittels der Netinstall CD installiert und folgende Tests durchgeführt:

  • Stromverbrauch Nach der Installation
  • Speicherverbrauch (RAM) des Grundsystemes inkl. OpenSSH-Server mit htop
  • Stromverbrauch nach Aktivierung unten genannter Stromspareinstellungen
  • LM-Sensors Kompatibilität (Lüftersteuerung)
  • HDD Geschwindigkeitstest (ext4)
  • Bauchgefühl :-)

und hier die Ergebnisse auf einen Blick:

-- Debian Ubuntu
Stromverbrauch vorher 31W 33W
Stromverbrauch nachher 28W 28W
RAM 39MB 85MB
LM-Sensors auch mit kernel 2.6.39 keine richtigen Werte hat nur falsche Core Temperaturen geliefert, auch mit Kernel 3.0
HDD Speed siehe unten siehe unten
Bauchgefühl sehr gut gut

Fazit:
Ich entscheide mich für das gute alte Debian Squeeze.

Installation

Als erstes wurde eine Debian Linux Squeeze Grundinstalliert, siehe diese Anleitung:

Nun wurden folgendes geändert:
hier habe ich alle Konsolen deaktiviert außer der ersten, es soll ja kein Monitor angeschlossen werden.
/etc/inittab

# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1
#2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6

folgende Zeile folgender Datei hinzufügen: /etc/sysctl.conf

vm.swappiness=0

Strom Sparen

Ist Zustand Grundinstalliertes Ubuntu 11.04 ohne Anpassungen:
33W

st Zustand Grundinstalliertes Debian Squeeze ohne Anpassungen:
31W

Fazit des Stromsparversuches

Es lohnt sich nicht wirklich diese Funktionalitäten einzubauen, da der ION von sich aus schon wenig Stromverbraucht und die CPU nicht Speedstep Fähig ist. Was ein paar Watt bringt ist das abschalten der Festplatten. Gerade das runterfahren der ESATA Platte im 3,5" Externen Gehäuse bringt fast 10 Watt. Das abschalten der Internen HDD bringt immerhin 2 Watt, doch bei dieser Platte wird es schwierig sein sie ruhig gestellt zu bekommen, da doch einige Jobs auf dem Server laufen sollen und die VMs bei mir auch auf dieser liegen.

Diverse System Einstellungen

Folgendes wurde der /etc/rc.local hinzugefügt:

# Save Power
echo 5 > /proc/sys/vm/laptop_mode
echo 1 > /sys/devices/system/cpu/sched_smt_power_savings
echo 1500 > /proc/sys/vm/dirty_writeback_centisecs

/etc/modprobe.d/powersave.conf

options drm_kms_helper poll=N
options usbcore autosuspend=1

NIC Geschwindigkeit ändern

Um die Netzwerkkarte auf 100MBIT zu drosseln:

ethtool -s eth0 autoneg off speed 100

Um wieder zurück zum Gigabit zu kommen:

ethtool -s eth0 autoneg on speed 1000

Dies kann mittels Cronjob eingesetzt werden um in den Genutzten Zeiten das Gigabit hochzufahren und in den nicht genutzten Zeiten auf 100Mbit zu drosseln:
/etc/cron.d/nicspeed

0  23 * * * root /usr/sbin/ethtool -s eth0 autoneg off speed 100 > /dev/null 2>&1
0  7  * * * root /usr/sbin/ethtool -s eth0 autoneg on speed 1000 > /dev/null 2>&1

Leider bringt dies nicht wirklich viel, kann aber ohne Probleme eingesetzt werden wenn man Nachts eh nicht an den Rechner muss.

Festplatten ruhig stellen

HDD mit noatime mounten

Festplatten mit noatime mounten: /etc/fstab

UUID=fa4d93aa-eefc-42e5-a04f-6e5046b8e299 /               ext4    noatime,errors=remount-ro 0       1
UUID=a2eb9a11-ff5f-482c-b15e-392cf703ea7d /srv            ext4    defaults,noatime          0       2

um es gleich zu aktivieren:

mount -o remount,noatime /
mount -o remount,noatime /srv

HDParm

Installation:

aptitude install hdparm

mit folgendem Parameter wird die HDD nach 1Minute in den Standby geschickt. Der S Wert steht für N * 5 Sekunden.

hdparm -B 1 -S 12 /dev/sda

folgender Befehl liest die Information der HDD aus:

hdparm -i /dev/sda

um das ganze Boot resistent zu machen folgendes in die /etc/hdparm.conf eintragen:

command_line {
       hdparm -S 180 /dev/sda
}

zum überprüfen der Spinup/Spindown Zyklen:

Powertop

Installation:

aptitude install powertop
powertop

LM-Sensors

Achtung!!! Da LMSensors keinen Sinn macht, da es leider beim ION falsche Werte liefert habe ich dies bei der Neuinstallation weggelassen!

aptitude install lm-sensors
sensors-detect

hier alles mit YES beantworten
Summary:

Now follows a summary of the probes I have just done.
Just press ENTER to continue: 

Driver `to-be-written':
  * ISA bus, address 0x290
    Chip `Nuvoton W83677HG-I (NCT6771F/NCT6772F/NCT6775F) Super IO Sensors' (confidence: 9)

Driver `coretemp':
  * Chip `Intel digital thermal sensor' (confidence: 9)

Note: there is no driver for Nuvoton W83677HG-I (NCT6771F/NCT6772F/NCT6775F) Super IO Sensors yet.
Check http://www.lm-sensors.org/wiki/Devices for updates.

To load everything that is needed, add this to /etc/modules:
#----cut here----
# Chip drivers
coretemp
#----cut here----
If you have some drivers built into your kernel, the list above will
contain too many modules. Skip the appropriate ones!

Die Frage wieder mit YES beantworten
Dann die Module neu laden:

service module-init-tools start

WakeOnLan

Um Wakeonlan dauerhaft zu aktivieren, muss natürlich die Option im BIOS aktiviert werden. Hinzukommt noch eine Einstellung unter Linux.
Hierfür wird das kleine tool ethtool benötigt:

aptitude install ethtool

Nun muss folgende Zeile der /etc/rc.local angehängt werden, damit die Netzwerkkarte das WOL Flag gesetzt bekommt:
/etc/rc.local

# Enable WakeOnLan
ethtool -s eth0 wol g

Nun kann der Rechner heruntergefahren werden

halt

Das Anschalten geht dann zum Beispiel von einem anderen Linux Rechner im selben Netz. benötigt wird hier das Paket etherwake oder wakeonlan:
Installation:

aptitude install etherwake

oder

aptitude install wakeonlan

dann einfach mittels etherwake aufwecken:

etherwake MAC-Adresse
etherwake 90:e6:ba:f2:7a:e2

Weiterführender Link:

VMware Server / Virtual Box Installation

Da der Asrock ION 330 nicht über VT verfügt viel meine Wahl auf den VMWare Server, welcher auch unter Debian Squeeze läuft. hier findet ihr die Installationsdoku:

Nachdem der VMWare Server irgendwie nicht mehr aktuell ist, habe bin ich nun auf virtualbox umgestiegen, siehe hier:

Kissdx Installation

Hier die Anleitung für die Kissdx Installation

NFS Server

Hier die Anleitung für den NFS Server

Benutzer für den NFS:

groupadd -g 1001 neuegruppe
useradd -u 1001 -g neuegruppe -m -c "Vorname Nachname" -s /bin/false benutzername

Rechtevergabe auf den NFS Share:

chown andreas.laub /srv/data/

Samba Server

Hier die Anleitung

FTP Server

Apache Webserver

zuerst Installieren:

aptitude update
aptitude install apache2 php5 postfix mysql-server phpmyadmin links

Dann konfigurieren:

a2enmod rewrite
a2enmod ssl
a2enmod auth_digest
a2dissite default-ssl
a2dissite default

/etc/apache2/sites-available/localhost

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName localhost
        ServerAlias 127.0.0.1
        RedirectMatch ^/$ /server-status/

        ErrorLog /var/log/apache2/error.log
        CustomLog /var/log/apache2/access.log combined

        LogLevel warn
</VirtualHost>

/etc/apache2/sites-available/vhost1

<VirtualHost *:80>
        ServerAdmin webmaster@domain.tld
        ServerName vhost1.domain.tld
        ServerAlias domain.tld
        DocumentRoot /srv/httpd/vhosts/vhost1.domain.tld/htdocs/

        ErrorLog /var/log/apache2/vhost1.domain.tld-error.log
        CustomLog /var/log/apache2/vhost1.domain.tld.log combined

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        RewriteEngine On
        RewriteCond %{HTTPS} !=on
        RewriteRule ^/(.*) https://%{SERVER_NAME}%{REQUEST_URI} [R]
</VirtualHost>

/etc/apache2/sites-available/vhost1-ssl

<VirtualHost *:443>
        ServerAdmin webmaster@domain.tld
        ServerName vhost1.domain.tld
        ServerAlias domain.tld
        DocumentRoot /srv/httpd/vhosts/vhost1.domain.tld/htdocs/

        SSLEngine On
        SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
        SSLCertificateFile /etc/apache2/ssl/multidomain.crt
        SSLCertificateKeyFile /etc/apache2/ssl/multidomain-private.key

        <Location />
                Order deny,allow
                Deny from all
                Allow from 127.0.0.1
                AuthType Digest
                AuthName "HTTP Digest Access"
                AuthDigestProvider file
                AuthUserFile /etc/apache2/htdigestuser.pwd
                Require user admin
                Satisfy Any
        </Location>
        <Directory /srv/httpd/vhosts/vhost1.domain.tld/htdocs/>
                Options -Indexes FollowSymLinks -Includes -MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/vhost1.domain.tld-error.log
        CustomLog /var/log/apache2/vhost1.domain.tld-access.log combined

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
</VirtualHost>

Nun den Digest User anlegen:

und ein MultihomeSSL Zertifikat für alle Domains erstellen:

cd /etc/apache2/sites-enabled
mv vhost1 00-vhost1
mv vhost1-ssl 00-vhost1-ssl
apache2ctl configtest
apache2ctl restart

Monitorix Installation

Hier die Anleitung:

Syslog Server

Hier die Anleitung:

HDD Performance Test

aptitude install bonnie++
bonnie++ -u root -d /srv/ -s 4096 -n 800 -r 2048 -m TESTSERVER -x2 >> /root/bonnie.log

Hier die Werte:

  • Ubuntu 11.04 Kernel 2.6.38-10-server
  • Debian Squeeze Kernel 2.6.32-5-amd64
  • Debian Squeeze Kernel 2.6.32-5-amd64 mit cryptFS
  • Debian Squeeze Kernel 2.6.32-5-amd64 Vertex SSD SATAII
  • Debian Squeeze Kernel 2.6.32-5-amd64 Seagate HDD 3.5" in Sharkoon Dock via ESATA
  • Debian Squeeze Kernel 2.6.32-5-amd64 Seagate HDD 3.5" in Sharkoon Dock via USB 2.0
  • Debian Squeeze Kernel 2.6.32-5-amd64 Seagate HDD 3.5" in Fanbox ESATA Gehäuse
  • Debian Squeeze Kernel 2.6.32-5-amd64 Seagate HDD 3.5" in Fanbox ESATA Gehäuse mit cryptFS
format_version bonnie_version name file_size io_chunk_size putc putc_cpu put_block put_block_cpu rewrite rewrite_cpu getc getc_cpu get_block get_block_cpu seeks seeks_cpu num_files max_size min_size num_dirs file_chunk_size seq_create seq_create_cpu seq_stat seq_stat_cpu seq_del seq_del_cpu ran_create ran_create_cpu ran_stat ran_stat_cpu ran_del ran_del_cpu putc_latency put_block_latency rewrite_latency getc_latency get_block_latency seeks_latency seq_create_latency seq_stat_latency seq_del_latency ran_create_latency ran_stat_latency ran_del_latency
1.96 1.96 Ubuntu 1 1313663802 4G 94 99 58660 38 30566 16 853 98 79523 12 285.1 9 800 10840 71 175819 100 360 1 10899 70 228356 100 235 1 86323us 2471ms 3770ms 39438us 69113us 231ms 1516ms 1419us 56304ms 1511ms 95us 41031ms
1.96 1.96 Debian 1 1313742098 4G 96 99 59317 30 26736 12 837 98 78832 10 177.3 4 800 10577 77 168497 96 796 4 10555 77 229126 100 484 3 123ms 2159ms 1358ms 24059us 56715us 1043ms 1131ms 1817us 33045ms 936ms 92us 30335ms
1.96 1.96 Cryptfs 1 1313749204 4G 103 99 21751 12 11569 7 804 97 33645 6 280.8 7 800 8330 64 152516 99 445 2 8151 60 191324 99 287 1 122ms 13055ms 8805ms 56437us 51501us 2129ms 2326ms 13882us 64709ms 3075ms 496us 43197ms
1.96 1.96 VERTEX SSD 1 1314172888 4G 105 99 112906 56 63158 32 890 99 274779 35 5461 135 800 12422 89 173950 98 2469 13 12613 88 229880 100 1600 9 78029us 522ms 746ms 10020us 9217us 280ms 741ms 1434us 4746ms 598ms 68us 4426ms
1.96 1.96 Seagate ESATA 1 1314651264 4G 95 99 101222 52 47691 22 655 99 130963 17 259.4 6 800 10975 83 136566 99 1456 8 10037 83 124555 99 490 4 124ms 223ms 795ms 44163us 19645us 686ms 1018ms 2094us 19003ms 898ms 629us 23368ms
1.96 1.96 Seagate USB 1 1314734817 4G 95 99 31069 17 14941 8 836 98 41435 6 224.5 8 800 9295 69 140788 100 407 2 8981 70 187378 99 152 1 110ms 433ms 626ms 33935us 25927us 702ms 2046ms 2114us 75449ms 1888ms 525us 60662ms
1.96 1.96 Fanbox 1 1315075591 4G 93 99 98169 52 46535 24 646 99 128759 21 247.0 6 800 10360 82 142731 99 866 6 10736 83 226443 100 538 4 124ms 693ms 1153ms 22524us 17651us 679ms 1041ms 2074us 41850ms 1069ms 403us 28947ms
1.96 1.96 CryptFanbox 1 1315152104 4G 100 99 22855 13 11529 7 821 98 33543 6 361.8 8 800 8644 63 168983 100 763 4 8131 61 226313 100 471 3 124ms 5160ms 8412ms 28120us 31985us 2377ms 2550ms 1511us 35575ms 4613ms 77us
1.96 1.96 3TB-ESATA 1 1316020779 4G 103 99 85100 41 36746 17 879 99 193279 21 330.2 5 800 11165 82 173665 99 577 3 11000 80 232263 100 324 1 91243us 936ms 1004ms 26149us 24195us 819ms 901ms 2030us 79803ms 1403ms 67us 62280ms

Fazit:

Um schnelle Datenübertargungen mit dem ION zu schaffen, sollte eine ESATA angeschlossenen 3, 5" HDD zum Einsatz kommen. Zum Verschlüsseln der gesamten Platte reicht die Performance des ION definitiv nicht aus, deshalb werde ich hier auf Truecrypt Container setzten, welche ich direkt auf den Macs oder Windows PCs mounte. Die Interne Platte werde ich nur für das OS und die Server Dienste (HTTP, FTP, MySQL usw.) nutzen.

Quellen