ZFS-NAS mit FreeBSD selbst gebaut

© © FH.J.-Bielke_pixelio.de

Heim-Datensilo

FreeBSD bringt interessante Features für den Einsatz als NAS-System mit. Benutzt man dabei das von Solaris bekannte ZFS, sind nachträgliche Erweiterungen des Speicherplatzes ein Kinderspiel. Durch die Verwendung der FreeBSD Jails lassen sich virtuelle NAS-Server im lokalen Netzwerk aufbauen.
Beinahe enzyklopädisch behandelt unser Schwerpunkt-Artikel über IPSEC verschlüsselte Verbindungen zwischen Linux, Windows, BSD, Solaris, Cisco- sowie ... (mehr)

Auf dem Mustersystem für diesen Beitrag wurde das aktuelle FreeBSD 8.2 (amd64) installiert. Es befanden sich vier Festplatten im Rechner. Eine davon ( »/dev/ad4« ) wurde als Systemplatte angelegt. Die weiteren ( »/dev/ad5 - /dev/ad7« ) dienen zur Aufnahme der Daten. Die Grundinstallation erfolgt nach dem offiziellen Handbuch, sodass die notwendigen Schritte dort nachlesbar sind. Wichtig ist, dass die Ports-Collection mit installiert wird.

Bei dem für das vorliegende Beispiel eingesetzten Rechner handelte es sich um ein Modell mit Doppelkernprozessor und 2 GByte Arbeitsspeicher. Das stellt wegen der Verwendung des ZFS das Minimum dar.

Bei der Grundinstallation mit »sysinstall« wird für die Systemplatte noch UFS als Dateisystem verwendet. Zwar gibt es bereits einige Anleitungen, die den vollständigen Einsatz von ZFS ermöglichen, doch ist das hier nicht notwendig. Interessierte lesen unter [1] nach. Ferner verfügt der Rechner über weitere Netzwerkschnittstellen. Gegenüber diversen Linux-Derivaten hat FreeBSD eine abweichende Verzeichnisstruktur ( Tabelle 1 ). Gerätenamen sind zuweilen abhängig von der Hardware. Unter Linux wird die erste Netzwerkkarte als »eth0« bezeichnet, egal wer ihr Hersteller ist.

Unter FreeBSD hingegen wird mit »ae0« eine Attansic/Atheros L2 Fast-Ethernet-Netzwerkkarte und mit »rl0« die bekannte RealTek 8129/8139 PCI Ethernet-Baugruppe bezeichnet. Das Loopback-Gerät trägt stets die Bezeichnung »lo0« . Die Namen von SATA- und IDE-Platten beginnen mit »ad« , bei SCSI-Platten mit »da« .

Die zentrale Konfigurationsdatei »/etc/rc.conf« enthält wichtige Parameter für den Systemstart. Man kann ihren Inhalt als Benutzer »root« mit dem Programm »sysinstall« im Menü »configure« bearbeiten. Aber auch per Text-Editor sind Änderungen möglich. Man legt sich dabei stets eine Sicherungskopie des vorherigen Zustandes an, damit Tippfehler oder andere Irrtümer nicht den nächsten Systemstart blockieren.

Die »rc.conf« des Mustersystems zeigt Listing 1 . In ihr sind alle notwendigen Einträge enthalten, damit eine Netzwerkschnittstelle konfiguriert wird (die letzten vier Zeilen) und der Fernzugriff über »ssh« (Zeile 7) für die weiteren Konfigurationsarbeiten aktiv ist. Alle Einträge wurden über »sysinstall« im Laufe der Installation vorgenommen. Über »sysinstall« wird während der Grundinstallation auch ein normaler Benutzer angelegt ( Abbildung 1 ). Er muss zwingend der Gruppe wheel zugewiesen werden. »root« darf sich nur lokal, jedoch nicht beispielsweise mittels »ssh« über das Netzwerk anmelden. Benutzer, die nicht wheel angehören, können nicht die Identität von »root« annehmen.

Listing 1

rc.conf des Mustersystems

 

Abbildung 1: Aufnahme eines Benutzers für die Gruppe wheel.

Damit die Unterstützung für die deutsche Tastaturbelegung und deutschsprachige Programm-Menüs klappt, bearbeitet der Benutzer die Datei ».login_conf« in seinem Homeverzeichnis und entfernt einige Kommentarzeichen:

# $FreeBSD: src/share/skel/dot.login_conf,
# v 1.3.36.1.6.1 2010/12/21 17:09:25 kensmit

Diese Datei fehlt allerdings im Verzeichnis »/root« . Wenn der Systemverwalter diese Einstellungen übernehmen möchte, kopiert er sie sich dorthin.

Ursprünglich vom Unternehmen Sun Microsystems für das Betriebssystem Solaris entwickelt, wurde ZFS später nach FreeBSD portiert. Eine direkte Umsetzung für Linux scheiterte (bisher) aus Lizenzgründen.

Besonderheiten von ZFS

Mit der derzeit erhältlichen Hardware wird man nicht an die Grenzen von ZFS stoßen. Die maximale Größe eines ZFS-Pools beträgt 16 ExaByte, was auch die maximale Größe einer Datei darstellt. ZFS umfasst die Funktionen eines klassischen Dateisystems, eines LVM und teilweise sogar eines RDBMS. Es verfügt über eigene RAID-Mechanismen. Es kann Daten komprimiert ablegen, Snapshots erstellen und Dateisystemoperationen rückgängig machen. Quotas und erweiterte ACLs gehören ebenfalls zum Leistungsumfang.

ZFS-Grundkonfiguration

Die beiden wichtigsten Kommandos im Umgang mit ZFS lauten »zpool« und »zfs« , deren wichtigsten Optionen in den Tabellen 2 und 3 erklärt werden.

Damit das FreeBSD-System beim Start die ZFS-Unterstützung aktiviert, muss die Datei »/etc/rc.conf« um diese Zeile ergänzt werden:

zfs_enable="YES"

Bei einem laufenden System startet »root« anschließend die Unterstützung mit

/etc/rc.d/zfs start

Damit lässt sich anschließend ein ZFS-Pool anlegen. Der Einsatz einer einzigen Datenplatte stellt die Minimallösung dar. Für kleine Büros und Heimanwendungen kann dies vollkommen ausreichen. Allerdings verzichtet man hier auf jede Ausfallsicherheit. Das Vorgehen zeigt die Abbildung 2 .

Abbildung 2: Anlegen eines ZFS-Pools mit nur einer Platte.

Auf den Rechner sind bisher keine ZFS-Pools angelegt, was die Abfrage »zpool list« zu Anfang der Arbeiten bestätigt. Anschließend wird der Pool »daten« angelegt und das Ergebnis mit »zpool list« angezeigt. Man erhält dabei eine knappe Information über die wichtigsten Angaben: Poolname, Größe des Datenträgers, Belegung und verfügbarer Speicherplatz sowie den Betriebszustand, hier »online« . ZFS-Pools lassen sich offline setzen und so etwa für Reservezwecke vorhalten. Nach dem Absetzen des »zpool create« -Kommandos wird der neu geschaffene Pool automatisch in den Verzeichnisbaum eingehängt. Der »df« -Befehl zeigt die Belegungswerte des Pools sogleich an.

Ähnliche Artikel

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023