Rufen Sie uns an: +49 341 242 502 10

Ich war hier: FreeNAS

Version [4253]

Dies ist eine alte Version von FreeNAS erstellt von ErdaxoAdmin am 2022-08-20 11:07:58.

 

FreeNAS

das auf FreeBSD basierende NAS-Betriebssystem


Die individuellen Konfigurationen für unsere Einsatzbereiche werden hier zusammengefasst.
Offizielle Dokumentation zu freeBSD ist hier zur finden.


A. Installation FreeNAS / TrueNAS

1. USB-Stick erstellen
Von dem man TrueNAS installieren kann:

unter macOS:
Stick einstecken und im Terminal (als root / sudo)
diskutil list => schauen, welches Laufwerk es ist
diskutil unmountDisk /dev/diskX
dd if=/Pfad/Dateiname.iso of=/dev/diskX bs=64k


B. Links allgemein

C. Update von 11.2 U.7 auf 11.3

1. Vorgehensweise
Folgende Schritte durchführen:
  • auf 11.2 U7 aktualisieren
  • Backup der Konfiguration (siehe unten)
  • Backup durchführen (11.3-Train auswählen)

2. Backup
Was ist zu sichern im Backup:
  • System => General => Save Config
  • bei Bedarf auch "Export Password Secret Seed" (falls iSCSI / AD / Cloud Services vorhanden)
  • für Replication auch /usr/local/etc/ssh/ sowie /root/.ssh sichern

3. Zu beachten:


D. IOCAGE: "Working with jails"
"Jails" sind unter FreeBSD eine Möglichkeit, Funktionen vom Restsystem abzukapseln. Diese Art zu arbeiten wird auch operating-system-level-virtualization genannt.
Auf einem leistungsfähigen FreeNAS-System können für viele Aufgaben separate jails definiert werden. Resultat ist klare Abgrenzung, Ordnung und zusätzliche Sicherheit - ohne große Leistungseinbußen.

1. Allgemeine Dokumentation
Auch wenn jails in FreeNAS/TrueNAS mit dem Web-GUI erstellt werden, kann manchmal die Bedienung mit "iocage" nützlich sein. Eine Dokumentation zu iocage (das Management-System für jails) ist hier zu finden.

2. Export und Import
Übertragung von jails zwischen Systemen ist mit den iocage-Befehlen export und import sehr einfach. Eine ausführliche Anleitung wurde hier veröffentlicht (Linux-Freunde beim Begrüßungsbild lieber Augen zumachen...).

Die wichtigsten Befehle in diesem Zusammenhang sind:
iocage export <jailname>

Artikel als PDF: hier.

3. Netzwerkprobleme
Wenn mehrere jails oder auch VMs (mit bhyve) auf einem FreeBSD-System laufen, kann bei einem Neustart das System der virtuellen Netzwerkschnittstellen durcheinander geraten. Bitte dann Folgendes bedenken:
  • die virtuellen Schnittstellen heißen i.d.R. vnet0 oder so ähnlich
  • zum jeweiligen jail (auch zur VM unter bhyve? dessen bin ich mir nicht sicher...) führt dann eine Brücke:
  • bridge0, bridge1# etc.
  • welche bridges bereit stehen, kann im Host mit ifconfig ersehen werden
  • ich habe schon mal erlebt, dass nach dem Neustart die Zuweisung im jail unter
  • Network properties => interfaces mit vnet0:bridge0 nicht funktionierte (belegt durch VM?)
  • dann hat geholfen, die nächste bridge zu nehmen (dass es bridge0 und bridge1 gab, konnte man eben mit ifconfig herausfinden:
  • vnet0:bridge1
  • nachdem das jail gestartet wurde, hatte der Host dann (ifconfig wieder) nicht nur vnet0 sondern auch vnet0.5;

4. Einige weitere Befehle mit iocage

=> in ein jail per Terminal reingehen: iocage console [jailname]

=> komplette Erstellung eines jails mit passenden Parametern (funktioniert mitunter viel besser, als mit dem Web-GUI):
iocage create -n <jailname> -r 11.3-RELEASE <= release benennen!> ip4_addr="vnet0|192.168.0.10/24" defaultrouter="192.168.0.1" vnet="on" allow_raw_sockets="1" boot="on"

=> jails auflisten und ihren Zustand zeigen
iocage list

E. Virtuelle Maschinen mit bhyve
Siehe folgenden Artikel.

F. FreeNAS virtuell - unter VMware
Dieser Konstellation ist eine ganze Seite gewidmet: siehe hier.


G. ownCloud / nextCloud in a jail
Siehe NextCloud.


H. Freigaben mit Samba / SMB-Protokoll
Windows und Mac nutzen SMB. Die Berechtigungen laufen dabei über ACL, was nicht immer einfach ist. Folgende Hinweise können helfen:

I. ZFS: pools, datasets und der Umgang mit ihnen
Eines der wesentlichen Bestandteile von FreeNAS ist das Dateisystem ZFS. Mit den unten genannten Befehlen können wichtige Funktionen dieses fortschrittlichen Systems genutzt werden.

1. Scrubs und Snapshots
Einige Befehle zum Anlegen und Verwalten von Snapshots:

a. Anzeige von Parametern
Anzeigen von Speicherplatz, der von einem Snapshot belegt ist in der Konsole:
zfs list -t snapshot

b. Eigenschaften eines dataset
zfs get all pfad/zum/dataset

2. Moving datasets (and complete pools)
Siehe hier: https://www.ixsystems.com/community/threads/copy-move-dataset.28876/#post-190178
Im Einzelnen geht dies so:

1. Create final source snapshot:
zfs snapshot -r Datasource/Storage@copy

2. Copy the data:
zfs send -Rv Datasource/Storage@copy | zfs receive -F Datatarget/Storage
an ein anderes System per ssh:
zfs send -Rv Datasource/Storage@copy | ssh host2 zfs receive -F Datatarget/Storage

3. Delete created snapshots:
zfs destroy -r Datatarget/Storage@copy ; zfs destroy -r Datasource/Storage@copy

Vgl. dazu auch ein komplettes Backup-Konzept mit ZFS-Platten hier:
https://esc-now.de/_/zfs-offsite-backup-auf-eine-externe-festplatte/?lang=en
Sowie andere Infos:
https://www.kirgus.net/cms_homepage8/zfs-datasetzvol-auf-anderen-pool-umziehen

3. Encryption / Verschlüsselung (nativ on ZFS)
Wenn man nachträglich verschlüsseln möchte (zum Beispiel ein dataset) ist dies nicht so einfach möglich. Wenn man Daten nicht auf dateiebene in ein verschlüsseltes Verzeichnis kopieren will, kann man mit den datasets so arbeiten:
(siehe auch folgende Seite mit ausführlicher Beschreibung)

Zielsetzung: snapshots beibehalten... Möglich ist es wie folgt:

a. Das älteste snapshot senden
zfs send -v pool/dataset@snapshot-01-05-2020 | zfs recv -x encryption pool2/dataset

b. Neuere snapshots incrementell senden
zfs send -v -I pool/dataset@snapshot-01-05-2020 pool/dataset/@snapshot-01-10-2020 | zfs recv -F -x encryption pool2/dataset

c. Testen, ob alle snapshots gesendet wurden
zfs list -t snapshot | grep pool2/dataset


4. Probleme mit SMR-Festplatten
SMR-Festplatten sind problematisch für xNAS. Einige Hinweise, wie man dem Problem (wenn man die Dinger nicht austauschen kann) begegnen kann, sind hier zu finden.

In Kürze sind die Lösungsansätze wie folgt zusammenzufassen:
  • disable TRIM on pools with the DM-SMR drives,
  • kleinere VDEVs nutzen => am besten mirror, raidz mit weniger als 4 Laufwerken sind besser,
  • große ZFS dataset record size / ZVOL block size nutzen:
    • auf jeden Fall sollte auf jede HDD größer als 64K geschrieben werden, also
    • RaidZ VDEV <5 => 256K oder größer,
    • RaidZ VDEV >5 => 512K oder größer.
ABER: am besten die SMR-Dinger meiden!

J. Operationen im Terminal in den Hintergrund verschieben
Auf diese Weise lassen sich Vorgänge, die sehr lange dauern, in den Hintergrund verschieben, so dass eine Unterbrechung durch verlorene Netzwerkverbindung oder Ausschalten des Rechners, von dem aus per SSH zugegriffen wird, nicht schadet...

Die bevorzugte Methode soll tmux sein:

1. Start
Terminal so starten, dass das Verlassen nach Start der Aktion problemlos möglich ist:
tmux

2. Terminal verlassen (detach)

Ctrl+b then d

3. Den Zustand des Terminals aus dem Hintergrund wieder hervorholen

tmux attach

K. Hardware
Insbesondere SAS/SATA Controller:

1. Datenträger
Gesundheit von Datenträgern / Festplatten testen:
smartctl -a /dev/nvme0

2. SLOG-Benchmark-Test durchführen:
diskinfo -wS /dev/nvd2

3. Einfacher Geschwindigkeitstest
Nicht ganz reale Bedingungen, aber gibt einige Anhaltspunkte für die Feststellung, ob Datenträger schnell schreiben / lesen können:
dd if=/dev/zero of=/mnt/test/ddfile bs=2048k count=10000

L. SLOG etc.
An sich wird empfohlen, dass SLOG-Laufwerke dediziert und jeweils für nur eine Aufgabe zugewiesen werden. Intel Optane Laufwerke sind aber so gut, dass sie sogar partitioniert werden und so als SLOG dienen können. Denn ein SLOG benötigt nur eine recht kleine Größe...
Vgl. dazu folgende Diskussion mit Hinweisen:
=> https://www.truenas.com/community/threads/sharing-slog-devices-striped-ssds-partitioned-for-two-pools.62787/

Wie Partitionen als SLOG eingerichtet werden können kann in Kürze so beschrieben werden:

1. die betroffenen Laufwerke partitionieren
Am Beispiel von 2 Laufwerken die als mirror für zwei Pools eingesetzt werden:

gpart create -s GPT nvdX
gpart create -s GPT nvdY
gpart add -t freebsd-zfs -a 1m -l slogA -s 16G nvdX
gpart add -t freebsd-zfs -a 1m -l slogA -s 16G nvdY
gpart add -t freebsd-zfs -a 1m -l slogB -s 16G nvdX
gpart add -t freebsd-zfs -a 1m -l slogB -s 16G nvdY


2. SLOGs einrichten

zpool add A-pool log mirror nvdXp1 nvdYp1
zpool add B-pool log mirror nvdXp2 nvdYp2


3. Kontrollieren
Ob die Mirror in der Auflistung erscheinen (im Web-GUI aber auch sichtbar, unter Status).
zpool status

M. UPS von APC (USV)
Siehe hier:
https://www.ixsystems.com/community/resources/configuring-ups-support-for-single-or-multiple-freenas-servers.30/
Auf dieser Seite sind keine Kommentare vorhanden