Technischer Stand: Jahr 2005. Dieser Artikel wird nicht mehr aktualisiert.
Als Fileserver kommt grundsätzlich ein Unix-System mit NFS (Network File System) und Samba infrage. Aus Gründen der Geschwindigkeit und der Zuverlässigkeit ist ein RAID-System zu empfehlen. Dabei ist RAID-5 ein guter Mittelweg im Gestrüpp verschiedener RAID-Varianten: mit ausreichender Sicherheit zu günstigen Kosten. Bei RAID-5 mit n aktiven Platten beträgt die Gesamtkapazität das (n-1)-fache der Kapazität einer Platte. Die Platten sollten also gleich groß sein, größere Platten werden nur teilweise genutzt. Die Kapazität einer Platte wird für automatisch erzeugte Paritätsinformationen genutzt, die die Weiterverwendbarkeit des RAID-Verbundes auch bei Ausfall einer (aber nur einer Platte) ermöglichen. Zur Verbesserung der Zugriffsgeschwindigkeit werden die Paritätsinformationen reihum auf alle Platten verteilt.
Traditionell wird RAID "in Hardware" mit speziellen RAID-Controllern realisiert. Linux unterstützt ab Kernel 2.2 (ausgereift in Kernel 2.4) ein Software-basiertes RAID. Vergleichstests haben ergeben, daß Software-RAID (also die Funktion im Betriebssystemkern implementiert) und Hardware-RAID (mit der Funktion als Firmware auf dem RAID-Controller) in ihrer Performance kaum voneinander zu unterscheiden sind. (Gängige Consumer-Technologie vorausgesetzt.)
Ein Versuch, RAID mit OpenBSD 3.3 aufzubauen, das ebenfalls über eine RAID-Implementierung verfügt, endete in zahlreichen Panics. Mit Debian Linux war ich dagegen vom ersten Moment an sehr zufrieden. Der Server läuft jetzt seit über einem Jahr ohne Probleme.
Der
Rechner ist als Pentium 3 mit 500 MHz ausreichend ausgestattet.
Zum Einsatz kommen zwei IDE-Controller (normale, ohne Hardware-RAID) und vier Festplatten je 80 GB. Das ergibt im fertigen System knapp 240 GB Plattenspeicher. Platten mit 5400 rpm sind ausreichend schnell, relativ billig und mittlerweile sehr leise (auch wenn das im Rechnerraum oder Keller nicht so entscheidend ist). Es muß nicht exakt derselbe Typ für alle eingesetzten Platten sein. Die kleinste und langsamste Platte entscheidet schließlich über die Leistungsfähigkeit des Gesamtsystems. Sehr wichtig ist, daß jede Platte als Master an eigenem IDE-Kanal hängt. Alles andere beeinträchtigt Geschwindigkeit und Ausfallsicherheit.
Ein Raid-Server ist durch die Platten, extra Controller und Kabel gut gefüllt. Es empfiehlt sich, die Luftzirkulation um die Platten zu verbessern, denn es wird sonst unangenehm heiß dazwischen.
Ein Booten von RAID ist auch möglich. Die Linux-Partitionen auf RAID-Platten zu legen ist aber Verschwendung. Dafür reicht auch eine alte Festplatte mit 2 GB. Das RAID-System wird erst unter laufendem Linux eingerichtet.
Von Debian wird das ISO-Image der Installations-CD aus dem Internet geladen. Nach dem Booten von CD wird ein minimales System (selbstverständlich ohne X11) installiert, wobei zusätzliche Module am besten direkt vom Internet mit FTP abgeholt werden. Wichtig ist, die Systemquellen (als Debian-Package) mit zu installieren. Zum Übersetzungsvorgang gibt es eine Anleitung Dwarf's Guide to Debian GNU/Linux. Der Linux-Kernel (zum Beispiel Version 2.4.18) muß für die RAID-Unterstützung neu übersetzt werden, wofür das Konfigurationsmenü ("make menuconfig") ausreichende Hilfe bietet. Unter "Multi-device support" sind die RAID-Optionen zu finden; außerdem sollten Sie unter "File systems" das gewünschte auswählen.
Ein Journaling Filesystem wie Ext-3 oder Reiser ist zu empfehlen. Soll das Reiser-Filesystem zum Einsatz kommen, ist das entsprechende Quellarchiv zu den Linux-Quellen zu entpacken. Außerdem sollten die meist existierenden Patches mit dem patch-Kommando eingearbeitet werden.
Bei der Abfrage der Systemparameter (wie IP-Adresse, Rechnername, Root-Paßwort) wird auch nach der Zeitzone gefragt. Wie bei jedem Server sollte hier nur "UTC" verwendet werden. Beim Zugriff von anderen Systemen, zum Beispiel durch Windows über Samba, wird die Zeit automatisch auf die eingestellte Ortszeit des Zielsystems umgerechnet und Sommerzeitumstellungen korrekt berücksichtigt.
Einer der ersten Schritte nach Installation des Betriebssystems ist immer die Einrichtung des Shellzugangs. Die Verwendung von Telnet ist ungehörig, stattdessen sollte SSH benutzt werden.
Dazu richtet man einen nichtprivilegierten Nutzer ein, registriert dessen öffentlichen Schlüssel unter ~/.ssh/authorized_keys und achtet auf korrekte Zugriffsrechte für das Verzeichnis .ssh und die Datei authorized_keys. Das Unix-Manual zu ssh, sshd etc. erklärt die Details ausreichend genau.
Der SSH-Dämon wird so eingerichtet, daß später ein sicherer Zugang über das Netz möglich ist. Dazu wird in /etc/ssh/sshd_config die Protokollversion 2 erzwungen; paßwortbasierte Logins und Root-Logins werden verboten.
Wenn die korrekte Konfiguration von sshd getestet wurde, kann der Fileserver künftig ohne Bildschirm und Tastatur betrieben werden. Wird in der Firewall der SSH-Port des Fileservers freigeschaltet (Port Redirection), dann ist auch ein sicher verschlüsselter Zugriff über das Internet mit Secure FTP (SFTP) möglich. Man sollte aber öfter die OpenSSH-Seite auf Sicherheitslücken befragen.
Sie können sich an dem Howto von Jakob Østergaard orientieren.
Die Konfigurationsdatei /etc/raidtab könnte zum Beispiel so aussehen:
raiddev /dev/md0 raid-level 5 nr-raid-disks 4 nr-spare-disks 0 persistent-superblock 1 chunk-size 32 parity-algorithm left-symmetric device /dev/hde1 raid-disk 0 device /dev/hdg1 raid-disk 1 device /dev/hdi1 raid-disk 2 device /dev/hdk1 raid-disk 3
Durch Eingabe von
$ mkraid /dev/md0
werden die Paritätsinformationen automatisch initialisiert, was 2-3 Stunden dauern kann. Das sollte man noch abwarten; mit
$ cat /proc/mdstat
kann man feststellen, wann das fertig ist. Dann funktioniert /dev/md0 wie eine einzige große Festplatte, ist aber in diesem Moment noch unformatiert.
Für das Reiser-Filesystem wird mit
$ mkreiserfs /dev/md0
formatiert.
Als nächster Schritt sind NFS und Samba zu konfigurieren. NFS wird in den Unix-Manuals erläutert; die Samba-Webseite enthält Dokumentationen. Jeder Windows-Nutzer muß auch einen Account auf dem Fileserver besitzen.
Schließlich werden durch entsprechende Einträge in /etc/syslog.conf alle Logdaten auf einen Logserver im lokalen Netz umgeleitet. Ist das geschehen, ist der Fileserver fertig. Mehr Prozesse oder Dienste haben auf einem Fileserver nichts verloren, nichts, was die Stabilität oder Sicherheit beeinträchtigen kann. Der Server bekommt Bildschirm und Tastatur weggenommen (Maus hat er nie gehabt), kommt in eine Ecke und wird nicht mehr beachtet. Windows-Benutzer, die sich nach einem Vierteljahr eine Freude machen wollen, loggen sich über ssh ein und rufen
$ uptime
auf.
Wer Geld übrig hat, spendiert dem Fileserver später noch eine Unterbrechungsfreie Stromversorgung (USV) und richtet den Rechner so ein, daß er vor dem Ende der Batterielaufzeit automatisch heruntergefahren wird.
Fehler einzelner Platten bemerkt man nur durch eine gnädige Fehlermeldung des Systems. /proc/mdstat gibt Auskunft; im folgenden Beispiel ist hde1 defekt. Mit solch einem System kann man getrost wochenlang weiterarbeiten, es ist einfach redundanzfrei und damit so sicher wie (n-1) normale Festplatten. Man sollte aber das lange aufgeschobene Backup schnell nachholen.
Nach raidhotremove kann die Platte getauscht werden, aber unbedingt die richtige erwischen! Mit raidhotadd wird Linux angewiesen, die Platte zu rekonstruieren.
$ cat /proc/mdstat
Personalities : [raid5] read_ahead 1024 sectors md0 : active raid5 hdk1[3] hdi1[2] hdg1[1] hde1[0](F) 234444288 blocks level 5, 32k chunk, algorithm 2 [4/3] [_UUU] unused devices: <none>
$ raidhotremove /dev/md0 /dev/hde1 $ cat /proc/mdstat
Personalities : [raid5] read_ahead 1024 sectors md0 : active raid5 hdk1[3] hdi1[2] hdg1[1] 234444288 blocks level 5, 32k chunk, algorithm 2 [4/3] [_UUU] unused devices: <none>
$ raidhotadd /dev/md0 /dev/hde1 $ cat /proc/mdstat
Personalities : [raid5]
read_ahead 1024 sectors
md0 : active raid5 hde1[4] hdk1[3] hdi1[2] hdg1[1]
234444288 blocks level 5, 32k chunk, algorithm 2 [4/3] [_UUU]
[>....................] recovery = 0.0% (33872/78148096) finish=76.8min speed=16936K/sec
unused devices: <none>
Sehr "hot" geht es bei Austausch der Platten natürlich nicht zu. Das gibt die IDE-Schnittstelle grundsätzlich nicht her. Zum Austausch der Platte muß der Rechner also sehr wohl heruntergefahren werden, auch wenn Wechselrahmen eingebaut sind. Es soll bei den IDE-Controllern Ausnahmen geben, aber mit denen wird sich nur auseinandersetzen, wer sich bei begrenztem Budget keine 15 Minuten Server-Downtime erlauben kann. (Wie es mit S-ATA aussieht, weiß ich nicht.) Wer es wirklich ernsthaft "hot" brauch, benutzt SCSI und wird auf dieses Howto für Amateure nicht angewiesen sein.