ZFS-Pool ab 6.12.0

Änderungsstand: 2023-05-19

Einige Änderungen sind nur möglich, wenn das Array gestoppt wurde!

Nun ist es endlich soweit. Ich richte ein Unraid-Test-System mit ZFS ein. Dafür verwende ich vorerst einen neuen, leeren Server mit 4x 250GB SSDs und einen extra USB-Stick. Doch warum eigentlich ein weiterer ein USB-Stick?

Nun, dieser USB-Stick wird als Array-Laufwerk eingebunden. Momentan ist es leider immer noch so, dass Unraid hier und da nervt, wenn kein Array angelegt wurde. Da ich das Array in diesem Fall sowieso nicht verwenden möchte, macht es ein USB-Stick als Pseudo-Array.

Zur Erklärung: Das ZFS-System wird als Pool eingebunden. Im Pool befinden sich die Cache-SSDs, die das System enorm beschleunigen. Und in diesem Pool erstelle ich nun zusätzlich mein eigentliches ZFS-System. Es wäre natürlich eleganter, wenn man direkt im Array das ZFS mit SSDs anlegen könnte aber das ist hier noch nicht so vorgesehen. Das Problem liegt nicht am Array in Verbindung mit ZFS sondern im allgemeinen an Array in Verbindung mit SSDs. Es würde zwar funktionieren aber man hat keine Garantie, wenn da etwas abstürzt oder defekt geht.

  1. Array anlegen:
  • MAIN
    • Disk 1: USB-Stick (bei mir eine SanDisk)

.

„Start“ klicken (ziemlich weit unten)

Das Array wird gestartet. Gegebenenfalls diese noch Formatieren:

.

Fertig. Das Array wurde erstellt.

.

Nun erstelle ich einen ZFS-Pool. Dafür installiere ich zuerst einige Plugins. Zuerst unbedingt die Community-Apps installieren. Ohne die geht zur Zeit noch nicht viel los in Unraid. Hier steht beschrieben, wie das geht. Wurde das erledigt, dann installiere ich als erstes folgende Apps.

App“ öffnen und folgende Apps installieren:

  • Unassigned Devices
  • Unassigned Devices Plus
  • Unassigned Devices Preclear

Jetzt den Destructive-Mode aktivieren:

  • „Settings“
    • „Unassigned Devices“
      • Destructive Mode: Enabled
      • Apply

Man könnte nun im Interface von Unraid das Auslöschen der einzelnen Disks erledigen, indem man auf das rote Kreuz (Clear Disk), bei jeder einzelnen SSD, klickt.

.

Falls es Probleme gibt, habe ich noch einen optionalen Weg:

Optional Start:

Dieser Weg ist nur bestimmt, falls aus irgendwelchen Gründen sie SSDs nicht angezeigt werden.

Nun formatiere ich zuerst die SSDs. Ich verwende in diesem Beispiel die Kommandozeile. Dazu setze ich SSh auf aktiv:

  • Use SSH: Yes
  • SSH port: 60684 (Beispielport – alles an unvergebenen Ports ist möglich)
  • Apply

Im Terminal eingeloggt, verwende ich folgende Befehle:

lsblk

Wichtig sind für mich nun die SSDs, welche ich später formatieren möchte:

sda      8:0    1  29.9G  0 disk
└─sda1   8:1    1  29.9G  0 part /boot
sdb      8:16   0 111.8G  0 disk
├─sdb1   8:17   0   500M  0 part
├─sdb2   8:18   0 110.3G  0 part
└─sdb3   8:19   0   529M  0 part
sdc      8:32   0 111.8G  0 disk
sdd      8:48   0 111.8G  0 disk
├─sdd1   8:49   0   256M  0 part
└─sdd2   8:50   0 111.5G  0 part
sde      8:64   0 111.8G  0 disk
└─sde1   8:65   0 111.8G  0 part

Es handelt sich um sdb, sdc sdd und sde. Nun schreibe ich das Label neu:

Label neu schreiben (ich muss das ebenfalls für sdc, sdd und sde wiederholen):

parted /dev/sdb "mklabel gpt"
yes

Optional Ende.

Das reicht mir schon. Wenn fertig, erstelle ich endlich mein ZFS. Dafür schaue ich im Unraid-UI, ob die Laufwerke soweit verfügbar sind:

.

Ist das erledigt, stoppe ich das Array.

Anschließend erstelle ich einen „Pool Device“ mit 3 Slots (Die Anzahl der Slots ist in diesem Beispiel 3 – – Am Ende so viele Slots wählen, wie man für diesen Pool benötigt – – Es können später auch weitere Pools angelegt werden!):

  • ADD POOL
    • Name: pool-one
      • Slots: 3

Nur Kleinbuchstaben und einige Sonderzeichen sind erlaubt.

.

Achtung! Das hier Pool großgeschrieben ist, ist definitiv ein Übersetzungsfehler!

Anschließend weise ich die Laufwerke den freien Slots zu:

.

Nun klicke ich auf das blaue „Pool-one“. Dort wähle ich als Dateisystem ZFS und bestimme meinen gewünschten Raid. Ich verwende hierbei „raidz“ und „1 group of 3 devices“. Komprimierung setze ich auf „An“.

.

Wenn fertig eingestellt, dann auf „ANWENDEN“ klicken und dann auf „FERTIG“. Nun das Array starten.

Es erscheint die Nachricht, dass dieser erstellte Pool noch formatiert werden muss:

.

Häkchen rein und Formatieren. Wenn fertig, wurde mein Pool erstellt und ist Ready.

.

Das Verzeichnis liegt nun unter:

/mnt/pool-one/

Nun noch eine Testfreigabe:

  • „Freigaben“

.

Das wars soweit. Mehr gibt es nicht zu beachten. Nach einer erstellten SMB-Freigabe testete ich die Geschwindigkeit. Da ich mich mit meinem Testsystem an einem Gbit-Netzwerk befinde, kann ich hier leider keine Wunder erwarten. Aber immerhin die volle Geschwindigkeit, die ich erwarten darf:

Hierbei ist das Ergebnis in beiden Richtungen identisch.

.

Wofür das verwenden? Nun, da fallen mir sofort 2 Sachen ein. Ich könnte mit großen SSDs einfach mein Array auslagern und im Cache-Pool auf ZFS betreiben. Ich könnte des Weiteren meine 2 Cache-Pools (jeweils Raid1) zu einem Cache-Pool mit 4 SSDs zusammenlegen und als ZFS betreiben. Somit wären meine Docker und VMs ebenfalls auf ZFS verfügbar.

Was würde ich persönlich keinesfalls machen? Ich würde keine HDDs im Array zu einem ZFS-Raid zusammenlegen. Das wäre so etwas am System vorbei und nicht mehr Unraid im eigentlichen Sinne. Den Vorteil von Unraid und die Verwendung des Arrays behalte ich natürlich immer im Auge.

Wie arbeite ich in Zukunft am Produktivsystem? Ich werde wahrscheinlich gar nichts ändern. ZFS benötigt immer noch viel Ram und ZFS benötigt im Idealfall ECC-Ram. Snapshots kann auch BTRFS und ich möchte ungern am Produktivsystem basteln. Irgendwann wird einmal ein Server zusammengebaut, der weniger Strom frisst. Dann könnte ZFS für die Cache-SSDs in Erwägung gezogen werden.

Erstelle eine Website wie diese mit WordPress.com
Jetzt starten