zfs Datenpools - Festplatten mit oder ohne Partitionierung?

H

holgerw

Guest
Hallo,

ich habe mein Daten-NAS mittlerweile wie folgt bestückt:
- eine kleine SSD (AutoZFS Konfiguration des Installers) nur für das Betriebsystem ohne Redundanz
- pool1 mit zwei 2 TB HDDs als zfs Mirror (mit GPT, swap und zfs-Partition)
- pool2 mit zwei 1 TB HDDs als zfs Mirror (ohne Partitionierung)

Ich würde gerne beide Poole nach gleichem Schema haben. Ist es besser, den 2. Pool dem ersten anzupassen oder umgekehrt? Und wenn man partitioniert, bringt es dann Vorteile, auf den Datenpool-Platten Swap Partitionen einzurichten? Ich vermute mal, eher nicht, zumal der PC 8GB Ram hat, aber vielleicht gibt es doch Argumente dafür.
 
Prinzipiell ist es Geschmackssache, dennoch halte ich gewisse Sachen gerne so simpel wie möglich.
Dh. ZFS direkt nur das device geben, also so:
pool2 mit zwei 1 TB HDDs als zfs Mirror (ohne Partitionierung)

Hat damit zu tun, wenn dann mal der Fehlerfall eintritt, dass ZFS mir die gesamte Platte rauswirft und nicht noch Partitionen halbgar drinhängen, mit denen ich dann eh nichts anfangen kann, wenn die Platte hinüber ist. Bei zwei Platten ist das ja noch übersichtlich, bei vielen dann nicht mehr so. Thin provisioning auf SSD wäre da noch ein Spezialfall oder wenn man in Zukunft Platten tauschen wird, die wenige KB kleinere Kapazität als die Ursprungsplatte aufweisen.

Swap sollte auf der jeweils schnellsten Platte laufen, hast du somit schon auf der SSD. ZFS cached und verteilt die Zugriffe für sich schon sehr gut.

aber vielleicht gibt es doch Argumente dafür.
Wenn du auf der Kiste Dinge tust, denen die 8G-Ram + der Swap auf der SSD nicht ausreichen. Selbst das wär kein echtes Pro-Argument, denn dann solltest du eher noch ein paar Riegel hinzustecken und den Swap vergrößern. :)
 
Hallo @mr44er

danke Dir für die Erläuterung.

Dann werde ich mit den gesamten Platten ohne Partitionierung arbeiten.
 
hi

ich arbeite immer mit gpt partition .


grund , wenn du , aus welchen gründen auch immer , die platten wechseln musst und dann die physikalische
reihenfolge , device nummer , nicht wieder herstellst ist der pool nicht verfügbar.

das kannst du mit gpt umgehen.


mir ist das aufgefallen als ich mein nas eingerichtet habe und dort , mal ausversehen , die platten nicht
in gleicher reihenfolge wieder in ihre einschübe des nas gehäuse reungeschoben habe.

holger
 
Dann werde ich mit den gesamten Platten ohne Partitionierung arbeiten.
Falsch! Ganz klar nur mit Partitionen verwenden. Ich kenne auf die schnelle 4 Gründe dafür:
  1. 4k Alignment
  2. Steckst du so eine HDD an einen Windows Rechner, will er sie immer formatieren. Ist ein GPT Layout darauf, passiert das nicht
  3. Wenn dir eine HDD kaputt geht, und du eine neue eines anderen Herstellers verwenden musst, kann es sein, dass diese ein paar Sektoren zu klein ist. Dann hast du Pech gehabt. Mit einer Partitionierung, kannst du am Ende + - 10MB frei lassen und wirst dieses Problem niemals haben.
  4. Punkt von @mark05
 
Zuletzt bearbeitet:
ich sehe das unterschiedlich.
Auf externen Platten, die ich also von PC zu PC schleppe, da nehme ich Partitionen, also auch bei ZFS.
Auf internen Platten, auf denen mein System liegt, nehme ich Partitionen.
Auf internen Platten, die nur Daten in einem NAS tragen (in Mirror oder RaidZ), lasse ich die Partitionen weg, habe hier aber immer Platten gleichen Typs auf Reserve. Die Gefahr, kleinere Platten zu bekommen, ist im Laufe der Zeit stetig gesunken. Im Gegenteil, nach einigen Monaten hatte ich eher schon Probleme, noch 1TB Platten im Shop um die Ecke auf die Schnelle zu besorgen. So laufen bei mir einige 1.5TB Platten auf 1TB im NAS.
Die Gefahr des Vertauschens ist gering. Zum Einen, weil die Platten alle markiert und beschriftet sind, zum Anderen, weil ich immer nur die defekte ersetze und dazu nicht alle oder mehrere ausbauen muss.
 
Eine Partition, ich meine immer GPT. MBR mit ZFS geht, ist für's Booten aber echt schmerzhaft.
 
Also ich füge auch immer das komplette device dem zfs-Pool hinzu ... das war ja ursprünglich auch mal die Idee bei zfs ... Als man zfs entwickelt hat, dachte man sicher auch nicht daran, dass man Jahrzehnt(e) später bei Unix-ähnlichen - Systemen ms-dos Partitionen für Efi braucht ;-)
 
Das FreeBSD Handbook und auch die zpool(8) manpage empfehlen durchweg "whole disks":

"ZFS can use individual slices or partitions, though the recommended mode of operation is to use whole disks." (aus man zpool(8))
 
Hallo,

Das FreeBSD Handbook und auch die zpool(8) manpage empfehlen durchweg "whole disks":
"ZFS can use individual slices or partitions, though the recommended mode of operation is to use whole disks." (aus man zpool(8))

im Handbuch (deutsche Ausgabe), Kapitel 19.3.1. heißt es aber auch:
Pools lassen sich auch durch die Angabe von Partitionen anstatt von ganzen Platten erzeugen. Durch die Verwendung von ZFS in einer separaten Partition ist es möglich, dass die gleiche Platte andere Partitionen für andere Zwecke besitzen kann. Dies ist besonders von Interesse, wenn Partitionen mit Bootcode und Dateisysteme, die zum starten benötigt werden, hinzugefügt werden können. Das erlaubt es, von Platten zu booten, die auch Teil eines Pools sind. Es gibt keinen Geschwindigkeitsnachteil unter FreeBSD wenn eine Partition anstatt einer ganzen Platte verwendet wird. Durch den Einsatz von Partitionen kann der Administrator die Platten unter provisionieren, indem weniger als die volle Kapazität Verwendung findet. Wenn in Zukunft eine Ersatzfestplatte mit der gleichen Größe als die Originalplatte eine kleinere Kapazität aufweist, passt die kleinere Partition immer noch und die Ersatzplatte kann immer noch verwendet werden.

Mit anderen Worten ist man mit Partitionen flexibler, darauf haben ja auch schon @mark05 und @foxit hingewiesen.
 
Hallo,

ich habe es nun wie folgt:
Code:
zpool status
  pool: pool1
state: ONLINE
  scan: none requested
config:

        NAME            STATE     READ WRITE CKSUM
        pool1           ONLINE       0     0     0
          mirror-0      ONLINE       0     0     0
            gpt/pool1a  ONLINE       0     0     0
            gpt/pool1b  ONLINE       0     0     0

errors: No known data errors

  pool: pool2
state: ONLINE
  scan: none requested
config:

        NAME            STATE     READ WRITE CKSUM
        pool2           ONLINE       0     0     0
          mirror-0      ONLINE       0     0     0
            gpt/pool2a  ONLINE       0     0     0
            gpt/pool2b  ONLINE       0     0     0

errors: No known data errors

  pool: zigel
state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zigel       ONLINE       0     0     0
          ada0p3    ONLINE       0     0     0

errors: No known data errors

Die Mirror Poole 1 und 2 sind für Nutzerdaten, auf zigel (also dem Zpool ohne Redundanz von Rechner igel) ist das Betriebssystem.

Am Ende jeder Platte ist noch etwas Platz. Ich hoffe, so ist das in Ordnung.

Danke für Eure Beteiligung.

Viele Grüße
Holger
 
Hi ,

ist es nicht so das gpart das 4k Thema , mittlerweile, automatisch behandelt ?
Ich meine mich zu erinnern daß es Mal einen release Wechsel gab wo gpart entsprechend angepasst wurde.

Holger
 
Hallo,

kann die von @foxit gewünschte Ausgabe erst heute Abend liefern.

Dein Parameter -b 1m verwende ich nie und kenne ich auch nicht.
Das habe ich aus einem Partitionierungs-Howto von Warren Block.
Wieso? mit -b verschiebe ist den Beginn der Partition um die angegebene blocksize -
lasse also Platz für efi-boot-partition oder ähnliches.
So wie ich es bei Warren verstanden habe - und ich kann es auch bei meiner Platte sehen - sorgt das -b 1m dafür, dass die Partition am Beginn des nächsten 1024er Blocks beginnt. In meinem Fall beginnen alle zfs-Partitionen bei Sektor 2048.

Und von @Yamagi habe ich gelernt, auf der zfs-Partition dann erst einen Pool anzulegen, nachdem ich per sysctl das min_ashift auf 12 gesetzt habe.
 
Zurück
Oben