Teil 1 der Homeserver Serie
Dies wird eine kleine Serie von Anleitungen. Im Prinzip kann jede alleine davon schon Nützlich sein. Dies ist der erste Teil, bei der Installation meines persönlichen Servers für zu Hause. Ziel war 6TB Daten so zu speichern, das selbst der Ausfall einer Festplatte keinen Datenverlust zur folge hat. Natürlich war nicht nur der Datenerhalt wichtig, sondern auch, das der Server weiter läuft bis ich die Zeit habe die Festplatte zu tauschen. Dieser Artikel beschäftigt sich mir der Einrichtung des Betriebssystems inklusive Raid und der Grundkonfiguration.
Warum das ganze?
Ein NAS ist eine praktische Sache, nur manchmal nicht das beste / günstigste. Unsere Anforderungen für zu Hause (Einer umfangreich digitalisierten CD Sammlung, einem Digitalen Videorekorder, Fotographie im RAW Format und jeder Menge Virtueller Maschinen sei Dank):
- 6TB Speicherplatz mit Festlattenredundanz
- Vernünftige Performance beim Schreiben und lesen
- Unterstützung aller Vorhandener Betriebssysteme (diverse Linux, Mac Os X und Microsoft Windows XP und 7)
- Sicherer Zugriff von außen (Ohne VPN)
- Geringer Stromverbrauch (Deshalb nicht der Desktoprechner)
Optimal sollte das Gerät noch folgendes können:
- Benutzerverwaltung über SMB (Reine Faulheit)
- Erweiterbarkeit mir eventuellen Zusatzdiensten (z.B. Nagios, Radius, Webserver)
- Vernünftige Update Zyklen
- Günstiger Preis
Ja, ich weiß, eine Eierlegende Wollmichsau. Zu erst habe ich mir ein paar NAS auf dem Markt angeschaut. Die wenigsten Unterstützen 4 Festplatten im RAID 5. Eines was ich gefunden hatte war das ReadyNAS Ultra 4 von Netgear (ca. 473,91 € www.amazon.de, 28.06.2011) und das TS-459 Pro von QNAP (ca. 777,49 € www.amazon.de, 28.06.2011), die auch schon in der CT 20/2010 vom 13.09.2010 vorgestellt wurde. Dazu kommen dann noch die Preise für die 4x2TB Festplatten (ca. 230€), ich habe keine Stelle im Web gefunden die eines der Geräte im Vollausbau angeboten haben. Auch die Suche bei anderen Webseiten hat mich nicht zu einem NAS geführt mit einem für mich angenehmen Preis/Leistungsverhältnis und den gewünschten Funktionen. Ein Kollege brachte mich dann auf die Idee mal bei HP nach den MicroServern zu schauen. Gefunden habe ich den N36L , der dank normaler PC / Server Technik einfach zum Aufrüsten ist und Zertifiziert ist für Microsoft Windows Server 2008 R2 (Ihr könnt euch Überlegen wie wohl der Plan B aussah…) und RedHat Enterprise Linux. Der HP ProLiant MicroServer ist schon (Mit 250 GB HDD und 1 GB RAM) für 249€ zu haben.
Das Angenehme an dem MicroServer ist, das man merkt das HP seit Jahren sehr gute Server baut. Alles ist gut durchdacht, aufgeräumt und das einzige Werkzeug was man braucht (Nein, kein Imbus, aber fast) wird mitgeliefert. Auch ist der MircoServer modular aufgebaut, wer möchte kann ein TPM oder eine Remotemanagementschnittstelle (ILo) nachrüsten.
Das Betriebssystem
Die häufiger meine Anleitungen lesen, wissen das ich als Ersatz für RHEL sonst immer das Binärkompatible CentOS bevorzuge. Leider war CentOS noch nicht bei Version 6 angekommen als die Arbeit an diesem Projekt begann, das ebenfalls aus den RHEL Quellen nachgebaute Scientific Linux schon. Unterstützt wird die SL (Dies ist die Abkürzung) Community unter anderem durch das CERN, was eine gute Pflege gewährleistet. Als Beispiel für die Aktualität, bei SL ist momentan der RC vom 6.1 verfügbar, wo CentOS gerade Version 6.0 fertig hat.
Nicht wundern über englische Bezeichnungen oder Screenshots, ich installiere ein Server Betriebssystem im in englischer Sprache, nennt es Berufskrankheit 😉
Der Server
Ein paar Veränderungen müssen sein, die 250GB Festplatte muss weichen, dafür kommen 4 2TB Festplatten hinein. Der Arbeitsspeicher würde mit 1 GB wahrscheinlich für die Grundlagen reichen, aber bei den heutigen Preisen stecken wir einfach noch ein 4GB Modul von Kingston mit ECC dazu. Das waren schon die Hardware umbauten. Da der Onboard Sata Controller leider nur RAID 1 oder RAID 0 kann, muss das RAID 5 leider über Software realisiert werden, dies ist aber bei den meisten günstigen NAS auch der Fall. Wer auf die 5 GB Ram verzichten kann (Das dürften die meisten sein, die nur ein NAS brauchen und nicht auch noch Virtuelle Maschinen hosten wollen), der bekommt mit den HP MicroServer ein NAS mit 8 TB brutto und etwas weniger als 6TB netto Speicherplatz für unter 550€.
Hier meine Konfiguration mit Preisen für 590,81€ (Preis Stand 27.07.2011, PC-King www.pc-king.de)
Menge | €/Stk. | Gesamt | |
HP Microserver N36L Athlon2 1,3 GHz DualCore | 1 | 249,00 | 249,00 |
DDR3 Kingston 4 GB VR ECC | 1 | 52,11 | 52,11 |
HDS 2000 Seagate ST2000DL003 | 4 | 66,95 | 267,80 |
LG GH24NS50 SuperMulti | 1 | 21,90 | 21,90 |
Die Screenshots habe ich mit einer entsprechenden VM gemacht. Das hat den Vorteil wenn man mal was beim Schreiben ausprobieren muss oder man feststellt das Weg A nicht geht, hat man Snapshots (Wenn man sie benutzt.). Aber Mittlerweile läuft der Server bei mir als Physik, also der Weg funktioniert 😉
Die Installation von SL 6.0
Weniger ist gerade bei Servern mehr, und deshalb wird nur das Notwendige installiert. Aus Gründen der Bequemlichkeit und um mich von Unterwegs mal bequem ins Netzwerk zu Hause einzuloggen, installiere ich eine Grafische Oberfläche mit ein paar Programmen mit. Wer das nicht benötigt, kann die einfach weglassen.
Bis auf ein paar, aber wichtige Unterschiede, wird eine Standard Installation mit minimal Konfiguration durch geführt. Ich gehe hier nur auf die Unterschiede ein:
Gestartet werden muss die Installation mit „Install system with basic video driver“ (Vesa mode), sonst sieht man nichts.
Die Partitionierung (Create Custom Layout)
Auf allen Festplatten werden die Folgenden Partitionen angelegt:
- 500 MB Raid Partition
- 2048 MB Raid Partition
- Der Rest: Raid Partition (Fill to maximum allowable size)
Das Raid
- Die 500 MB Partitionen werden zu einem RAID 1 (Linux ist so Freundlich und spiegelt dann über alle 4 Platten) mit dem Mountpoint /boot
- Die 2048 MB Partitionen werden zu einem Raid 10 als SWAP zusammengefasst, das ergibt 4 GB Swap. Das sollte mit den 5GB Arbeitsspeicher ohne Probleme ausreichen.
- Der 4 verbleibenden werden als RAID5 mit LVM Disk erstellt, das ergibt eine etwas weniger als 6TB.
Das Logical Volume
Zu erst muss eine Volume Gruppe erstellt werden. Der Grund warum ich auf eine LVM Lösung statt auf statische Partitionen setzte ist, ich weiß noch nicht genau wo ich hinterher wie viel Speicherplatz ich brauche. Mit Hilfe von LVM können wir einzelne Bereiche vergrößern, oder zur Not auch verkleinern.
Meine Empfehlung für eine LVM Einrichtung ist (Den restlichen Platz weisen wir nach Bedarf zu):
- 10 GB für /
- 10 GB für /home (wer es Verschlüsseln möchte: Encrypted)
- 2 GB für /var/log
- 10 GB für /shares (Encrypted)
Wichtiger Hinweis bei der Verschlüsselung: die Passphrase nie vergessen, Möglichst kompliziert und nicht das Administratorkennwort benutzen. Die Passphrase muss bei jedem Boot eingegeben werden, und wenn sie vergessen wird ist ALLES WEG!!! Remote kann Sie nur eingegeben werden, wenn ein Ilo-Board nachgerüstet wurde.
Den Bootloader auf /dev/sda installieren, wir kümmern uns später darum, das das System auch ohne die Festplatte /dev/sda auskommt
Die Softwareauswahl
Als Grundlage nehme ich den „Minimal Desktop“ den ich direkt anpasse. Man kann auch direkt die Online Repositorien aktivieren.
- SL Addons
- Yum Repositories
- RPMforge
- Epel
- Yum Repositories
- Desktops
- Graphical Administration Tools
- Audit-viewer
- Policycoreutil-gui
- Setroubleshoot
- System-config-lvm
- Graphical Administration Tools
Spiegeln der Bootsektoren
In der Datei /boot/grub/grub.conf müssen die folgenden Zeilen kopiert und angepasst werden:
title Scientific Linux (2.6.32-71.el6.x86_64)
root (hd0,1)
kernel /vmlinuz-2.6.32-71.el6.x86_64 ro root=/dev/mapper/vg_homeserver-lv_main rd_MD_UUID=b556ad27:946a3486:33c88c9c:743a1e64 rd_LVM_LV=vg_homeserver/lv_main rd_MD_UUID=1c02b488:f7c3dcb6:300dfc61:77a01b15 rd_NO_LUKS rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=de crashkernel=auto rhgb quiet
initrd /initramfs-2.6.32-71.el6.x86_64.img
Geändert werden muss nur in der Zeile „root“ die Festplatten ID: „root (hd1,1)“, bitte drauf achten die UUID sind Hardwarespezifisch.
Jetzt müssen wir den Grub noch in den zweiten Bootsektor schreiben, wer auf Nummer Sicher gehen möchte kann den Grub in alle Bootsektoren schreiben:
# grub
device (hd1) /dev/sdb
root (hd1,1)
setup (hd1)
quit
Da das Raid5 immer noch am einrichten sein sollte, folgt jetzt hier erst mal eine Pause. Den aktuellen Staus kann man mit „cat /proc/mdstat“ nachschauen.
Die Tests
Danach einmal den Server herunterfahren, die primäre Festplatte entfernen und den Server starten. Theoretisch sollte er jetzt normal hochfahren. Ein „cat /proc/mdstat“ als root zeigt uns das die Festplatte fehlt.
Nach dem herunterfahren die Fehlende Festplatte wieder hinzufügen und den Server wieder starten. Kleine aber Wichtige Information am Rande, der Server ist nicht Hot-Plug fähig, leider.
Wenn der Server die Festlatte nicht automatisch wieder einbindet, hilft „mdadm –manage –re-add /dev/MDDEV /dev/SDDEV“. Nach dem wieder alle in Ordnung ist („cat /proc/mdstat“), das kann einige Zeit dauern, sollte man das auch mit der 2ten Festplatte testen. Wer auf richtig Nummer sicher gehen möchte macht den Test nach und nach mit allen Festplatten. Wichtig bei allen Lösungen zur Hochverfügbarkeit ist, es zu Versuchen. Nur dies Schaft wirklich Sicherheit, es hilf nichts Jahrelang ein Backup zu machen um nach dem Datenverlust festzustellen das es nicht funktioniert.
Jetzt ist es an der Zeit den Server einmal mit den aktuellen Updates zu versorgen. „yum update“ und die GPG Meldungen bestätigen.
Nach dem Kernel Update
Nach dem Updaten des Kernels müssen wir den Bootsektor und die Grub Konfiguration anpassen. Wenn hier jemand ist, der Zeit hat, dafür ein kleines Script zu schreiben würde ich mich freuen davon zu hören. Nun, der Weg zu Fuß:
- Jetzt muss noch der Grub gestartet werden um wieder den Grub anzuweisen den Bootsektor neu zu schreiben. Dazu in einer Rootshell einfach „grub“ eingeben und anschließend:
device (hd1) /dev/sdb
root (hd1,1)
setup (hd1)
quit
Zum Test ein mal neu starten. Wer möchte, kann den Fehlerfall erneut testen. Ein wichtiges Wort noch zum Schluss, eine Redundante Speicherung ersetzt kein Backup! Wenn ausversehen Daten gelöscht werden (oder durch einem Virus auf den Clients), sind sie genauso Weg als wenn sie nur auf einer Platte liegen.
Zu guter Letzt installieren wir noch 3 Pakete und ihre Abhängigkeiten die man immer brauchen kann:
yum install kernel-devel glibc-devel gcc
Ausblick auf die nächste Anleitung
Diese Anleitung und der Server bilden die Grundlage für das System was ich für zu Hause aufbauen möchte. Hier ein Ausblick auf die Dinge die in Planung sind:
- Samba als DC für das Netzwerk
- Linuxupdate Server mit MREPO
- MS Windows Updates mit WSUSOFFLINE
- Nagios zur Überwachung von der Fritz.Box, Internet Verbindung und Webservices