Sollte ich ZFS-Zpools mit ganzen Festplatten oder Partitionen erstellen?

14

Ich mache Zpools auf einem FreeBSD-Computer. Beim Erstellen von Zpools beobachte ich diese beiden Fälle:

  1. Wenn ich nehme raw disksund erstelle, kann zpoolich Zpools bilden und sie funktionieren perfekt.

  2. Wenn ich Datenträger gpartim freebsd-zfsFormat formatiere und dann zpool mache, funktionieren sie auch einwandfrei.

Was mich verwirrt, ist, welcher Ansatz für die Erstellung von Zpools besser ist?

Shivams
quelle

Antworten:

8

Wenn möglich, ist es besser, ganze Festplatten mit ZFS zu verwenden.
In Ihrem Anwendungsfall ist keine Partitionierung erforderlich.

ewwhite
quelle
Was meinst du mit your use case. Können Sie einen Fall nennen, in dem eine Partitionierung nützlich sein könnte?
Shivams
Partitionierung ist in ZFS nur dann sinnvoll, wenn Sie eine esoterische Konfiguration haben oder bestimmte SSD-Lösungen verwenden oder mit ZIL- und L2ARC-Geräten etwas Seltsames tun . Und selbst dann ist es am besten, nur ganze Geräte / Festplatten zu verwenden.
ewwhite
Aber warum ist es besser, ganze Festplatten zu verwenden?
leetNightshade
1
@leetNightshade Da es bei der Verwendung von ZFS nicht viel Sinn macht, Festplatten zu partitionieren, benötigen Dateisysteme keine eigenen Partitionen. Wenn ZFS die Festplatte "besitzt", kann der Schreibcache der Festplatte eine bessere Leistung erzielen. Siehe solarisinternals.com/wiki/index.php/…
jlliagre
1
@ Grogi Gibt es gute Beweise dafür?
leetNightshade
5

Verwenden Sie ein Slice / eine Partition für ZFS pro physischer Disc und lassen Sie etwas Speicherplatz unpartitioniert. Auf diese Weise können Sie dies immer noch tun, wenn Sie jemals ein Laufwerk ersetzen müssen und der Austausch 10 Sektoren kleiner ist ( http://www.freebsddiary.org/zfs-with-gpart.php ).

Das macht Solaris automatisch, das macht FreeNAS ( https://forums.freenas.org/index.php?threads/zfs-on-partitioned-disks.37079/ ) und das macht ZoL, wenn Sie ihm eine ganze Festplatte geben - es wird es partitionieren ...

Der Aufwand für die Übersetzung der Position auf der Partition in die Position auf dem tatsächlichen Gerät ist vernachlässigbar. Sobald die Partition korrekt an der Grenze des physischen Sektors ausgerichtet ist, gibt es keinen Grund dafür, dass sie sich anders verhält als das gesamte Blockgerät.

Bei ZoL ist mir nur bekannt, dass ZoL den Festplattenplaner noopauf den Zeitpunkt umschaltet, an dem die gesamte Festplatte an vdev übergeben wurde. Nichts hindert Sie daran, es manuell einzustellen.

Einige tun dies jedoch nicht ... Erstellen Sie keine weiteren Partitionen für ZFS pro Festplatte. Wenn Sie die obigen Hinweise ignorieren möchten, erstellen Sie niemals vdevs daraus in demselben zpool. Dies wird im Grunde die Leistung beeinträchtigen, da ZFS die Daten zwischen den vdevs aufteilt und sequentielle iops sich in einen Such-Albtraum verwandeln ...

Grogi
quelle
Können Sie das Verhalten von zfs in Bezug auf Suchalptraum mit gemeinsam genutzten / verwendeten Festplatten-Slices näher erläutern?
satch_boogie
Einfachstes Szenario: Sie erstellen einen Pool aus zwei vdevs, jeweils einer Partition auf derselben Festplatte. Jetzt möchten Sie einen Datenblock schreiben, der groß genug ist und sich über beide vdevs erstreckt. Trotz des sequentiellen Schreibens von Daten muss das Laufwerk zwischen zwei verschiedenen Speicherorten suchen, um sie zu speichern.
Grogi
Ist dieses Verhalten dasselbe, wenn Pool_A (sda1, sdb1, sdc3) und Pool_B (sda2, sdb2, sdc3) verwendet
satch_boogie
Sie müssen nicht gleichzeitig an sie schreiben ... Wenn Sie die vdevs in einem Pool haben, können Sie nichts tun ...
Grogi
0

In meinem Kopf stellt sich diese Frage aus Zweifel, ob ich spät bestimmen kann, was sich auf dieser Festplatte befindet. Wenn Sie also einen Pool auf dem gesamten Laufwerk erstellen (ja, bei Bedarf mit der Option -f), erstellt zpool praktisch eine gpt-Partitionstabelle und Partitionen von Solaris wie folgt:

(fdisk -l ...)
...
Disklabel type: gpt
Disk identifier: 4CBE587E-23AF-8E4B-A7F0-B44AD6083171

Device          Start        End    Sectors  Size Type
/dev/sdd1        2048 3907010559 3907008512  1,8T Solaris /usr & Apple ZFS
/dev/sdd9  3907010560 3907026943      16384    8M Solaris reserved 1

Es ist also wirklich nicht nötig, Partitionen manuell zu erstellen ...

Taras Filatov
quelle
Ich denke nicht darüber nach, was Solaris am besten für freebsd macht. Bei Spiegeln können Sie beispielsweise Festplatten durch größere ersetzen und die Poolgröße im Handumdrehen mit einem Befehl oder sogar automatisch erweitern, wenn Sie als solche konfiguriert sind.
cstamas