Asrock ION 330 Pro als Heimserver
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.