zfs Datenpools - Festplatten mit oder ohne Partitionierung?

Eine GPT-Partitionstabelle ist in 10 Sekunden angelegt
das will mir hier eher nicht so erscheinen, wenn ich all diese Fallstricke bedenke und vorher noch jeweils nachlesen muss, mit welcher Version denn nun was und wie geht und was vielleicht schon automatisch gemacht wird und was man noch bedenken sollte.

Wenn ich die man von gpart richtig erinnere, wird da sogar von einem Allignement von 256K gesprochen und ich meine auch gelesen zu haben, dass 1M der "sicherere" Wert sei.
Dann lässt man zuvor was weg und danach ein wenig Platz. Also, da muss man schon anfangen zu rechnen, ganz wie früher. Und dann ist das ja nur die Partition, worauf ja nun das Dateisystem kommen soll, an dem es ebenfalls Stellschrauben gibt.
 
Offensichtlich ist das hinzufügen eines kompletten Devices zu einem ZPool - ohne vorher Partitions einzurichten - vielleicht auch der bessere Weg.
Denn wenn das Anlegen von Partitionen mit gpart derart magisch und undurchsichtig ist und scheinbar jeder irgendwas anderes macht und glaubt - aber irgendwie letztendlich nur ganz wenige scheinbar wissen, was Sie denn überhaupt tun ... dann ist das irgendwie problematisch und für die, die wenig wissen sehr schwer einzuordnen.
 
Hallo,

hier kommt die gewünschte Ausgabe:
Code:
gpart show -lp
=>       40  117231328    ada0  GPT  (56G)
         40       1024  ada0p1  gptboot0  (512K)
       1064        984          - free -  (492K)
       2048   16777216  ada0p2  swap0  (8.0G)
   16779264  100450304  ada0p3  zfs0  (48G)
  117229568       1800          - free -  (900K)

=>        40  3907029088    ada1  GPT  (1.8T)
          40        2008          - free -  (1.0M)
        2048  3900702720  ada1p1  pool1a  (1.8T)
  3900704768     6324360          - free -  (3.0G)

=>        40  3907029088    ada2  GPT  (1.8T)
          40        2008          - free -  (1.0M)
        2048  3900702720  ada2p1  pool1b  (1.8T)
  3900704768     6324360          - free -  (3.0G)

=>        40  1953525088    ada3  GPT  (932G)
          40        2008          - free -  (1.0M)
        2048  1950351360  ada3p1  pool2a  (930G)
  1950353408     3171720          - free -  (1.5G)

=>        40  1953525088    ada4  GPT  (932G)
          40        2008          - free -  (1.0M)
        2048  1950351360  ada4p1  pool2b  (930G)
  1950353408     3171720          - free -  (1.5G)

ada0 wurde vom Installer mit der automatischen zfs-Partitionierung verhacksückt, dort habe ich FreeBSD 12 installiert.
ada1 und ada2 bilden einen Mirror mit pool1, ada3 und ada4 einen Mirror mit pool2.

Auf allen Mirrorplatten habe ich per
Code:
gpart create -s gpt <devicename>
eine GPT angelegt.
Dann habe ich wie folgt partitioniert:
Code:
gpart add -t freebsd-zfs -l <label> -b 1m -s <größe> <devicename>

Also sehr unverständlich oder "automagisch" finde ich daran nun nichts, zumal, wenn man sich an entsprechende Partitionierungs-Howtos von Warren Block hält, die den Umgang mit gpart meines Erachtens gut für Einsteiger erklären.
 
...
Also sehr unverständlich oder "automagisch" finde ich daran nun nichts, zumal, wenn man sich an entsprechende Partitionierungs-Howtos von Warren Block hält, die den Umgang mit gpart meines Erachtens gut für Einsteiger erklären.

Ja - das dachte ich im Verlauf des Threads auch, dass Du nicht nur ein Howto abtippst - sondern genau weißt was dieser oder jener Switch bewirkt
 
Zuletzt bearbeitet:
Also sehr unverständlich oder "automagisch" finde ich daran nun nichts, zumal, wenn man sich an entsprechende Partitionierungs-Howtos von Warren Block hält,
Ich kenne den nicht und habe auch nie nach solchen Erklärungen gesucht. Vielleicht, weil ich zu oft auf gut gemeinte Ratschläge hereingefallen bin, die dann nicht genau auf meine Bedürfnisse oder Versionen passten oder wo ich einfach später von anderen Experten wieder eine ganz abweichende Meinung hörte.
Deshalb bleibe ich da ziemlich streng bei der Man-Page, in diesem Fall zunächst bei gpart(8), wenn ich etwas partitionieren möchte.
Und dann lege ich mir einfach ein MD-Device an und sehe mir an, was ich wie bewirke:
Code:
pit@Celsius ~:- > dd if=/dev/zero of=testplatte bs=10m count=200
200+0 records in
200+0 records out
2097152000 bytes transferred in 0.700532 secs (2993657656 bytes/sec)
pit@Celsius ~:- > mdconfig -a -t vnode -f testplatte -u 0
pit@Celsius ~:- > ls /dev | grep md
md0
mdctl
Die ist nun nur 2G groß, etwas größer wäre vielleicht schöner, aber es soll hier mal reichen.
Dann lege ich ein GPT Schema an und Partitioniere mal wild:
Code:
root@Celsius:/home/pit # gpart create -s GPT md0
md0 created
root@Celsius:/home/pit # gpart add -b 1m -a 1m -t freebsd-zfs md0
md0p1 added
root@Celsius:/home/pit # gpart show -lp md0
=>     40  4095920    md0  GPT  (2.0G)
       40     2008         - free -  (1.0M)
     2048  4091904  md0p1  (null)  (2.0G)
  4093952     2008         - free -  (1.0M)
Das zeigt mir, dass die -b 1m gewirkt hat und die -a 1m ebenfalls und zwar so, wie ich mir das vorgestellt hatte.
Weil ich selbst die Darstellung in mmls gewohnt bin, schwenke ich für die folgenden Beispiel dazu um, hier zunächst nochmal das von eben:
Code:
root@Celsius:/home/pit # mmls -B /dev/md0
GUID Partition Table (EFI)
Offset Sector: 0
Units are in 512-byte sectors

      Slot      Start        End          Length       Size    Description
000:  Meta      0000000000   0000000000   0000000001   0512B   Safety Table
001:  -------   0000000000   0000002047   0000002048   1024K   Unallocated
002:  Meta      0000000001   0000000001   0000000001   0512B   GPT Header
003:  Meta      0000000002   0000000033   0000000032   0016K   Partition Table
004:  000       0000002048   0004093951   0004091904   0001G   
005:  -------   0004093952   0004095999   0000002048   1024K   Unallocated
root@Celsius:/home/pit # gpart destroy -F md0
md0 destroyed

Code:
root@Celsius:/home/pit # gpart add -a 256k -t freebsd-zfs md0
md0p1 added
root@Celsius:/home/pit # mmls -B /dev/md0
GUID Partition Table (EFI)
Offset Sector: 0
Units are in 512-byte sectors

      Slot      Start        End          Length       Size    Description
000:  Meta      0000000000   0000000000   0000000001   0512B   Safety Table
001:  -------   0000000000   0000000511   0000000512   0256K   Unallocated
002:  Meta      0000000001   0000000001   0000000001   0512B   GPT Header
003:  Meta      0000000002   0000000033   0000000032   0016K   Partition Table
004:  000       0000000512   0004095487   0004094976   0001G   
005:  -------   0004095488   0004095999   0000000512   0256K   Unallocated
root@Celsius:/home/pit # gpart destroy -F md0
md0 destroyed
Und so weiter. Kostet nichts und man kann die einzelnen Schalter leicht ausprobieren.

Code:
# mdconfig -d -u0
# rm testplatte
räumt dann auf.

Soweit ich das hier gezeigt habe, ist das nur die Partitionierung. Man kann die neue Partition natürlich auch formatieren oder mit einem ZFS belegen und man kann natürlich auch mehrere md-Geräte erstellen und beliebige Pools damit basteln.

Natürlich kostst das auch Zeit und ja, wenn ich nächstes mal wieder so ein Problem habe, ist alles vergessen und ich fange vom Anfang an. Das erspart sicher nicht wirklich Zeit, gibt mir aber ein besseres Gefühl, weil ich mich selbst an eine Lösung herangearbeitet habe, die mir zusagt und dabei nur Bordmittel einsetzte.
Ich bin da sicher ziemlich verschroben, aber ich fürchte eher Gurus, als dass ich ihren Rat suche.
Das ist ein Punkt, der FreeBSD für mich so anziehend macht, weil ich das Gefühl größerer Freiheit habe.
 
das will mir hier eher nicht so erscheinen, wenn ich all diese Fallstricke bedenke und vorher noch jeweils nachlesen muss, mit welcher Version denn nun was und wie geht und was vielleicht schon automatisch gemacht wird und was man noch bedenken sollte.

Offensichtlich ist das hinzufügen eines kompletten Devices zu einem ZPool - ohne vorher Partitions einzurichten - vielleicht auch der bessere Weg.
Denn wenn das Anlegen von Partitionen mit gpart derart magisch und undurchsichtig ist und scheinbar jeder irgendwas anderes macht und glaubt - aber irgendwie letztendlich nur ganz wenige scheinbar wissen, was Sie denn überhaupt tun ... dann ist das irgendwie problematisch und für die, die wenig wissen sehr schwer einzuordnen.

Also die Argumente 'pro GPT' sind definitiv nicht falsch. Beim Lesen hatte ich fast den Eindruck, als hätte ich holgerw unwissentlich 'falsch beraten'.
Es ist gut, dass hier unterschiedliche Wege zielführend sind und hilfreich ist es in der Tat, wenn man weiß, was man tut und warum.
Darum: Wissen aneignen, mal hier und da was aufschnappen, selber ausprobieren und erfahren. Wenn man die Möglichkeiten kennt, kann man dann die beste Lösung für sich einrichten. Allem voran aber bitte immer zuerst das Kaltbackup! ;)

Dann teile ich mal detailliert mein wie/was/warum. :D

Die Sache mit dem 4k Alignment -> ...das kam rüber, als wäre es nur mit einer GPT-Partition möglich. Geht auch so:
Code:
zpool create -o ashift=12 meinpool mirror ada0 ada1
Der Befehl forciert die 4k, aber 4k an sich ist kein Pflichtprogramm und auch keine Eigenart von ZFS, das gibts auch bei anderen. Es ist eine Optimierung für bessere Speicherausnutzung und besseren Durchsatz. Unforciert befragt ZFS die Platte sogar automatisch nach ihrer Sektorengröße, viele Platten geben dann jedoch aus Gründen der Abwärtskompatibilität ihre emulierte Sektorengröße (ashift=9, 512 bytes) aus. Selbst wenn man heute einen pool erstellt und 'alte' Platten (solche mit native 512 bytes) hat, forciert man 4k, davon ausgehend, dass es in Zukunft nur noch 4k-Platten zu kaufen gibt, damit bei einem Plattenwechsel dann die neue Platte nicht mit zugeknallter Handbremse betrieben wird.
Wenn man weiß, was es damit auf sich hat, will man es auch.

ZFS ohne GPT an Windows anschließen. -> Ich käme nicht auf die Idee, dass es funktioniert und falls doch, zu welchem Zweck? Zugegeben ist es blöd, dass Windows formatieren möchte, aber Windows fragt zumindest und reißt kein vollautomatisches Formatier-Desaster vom Stapel.
Ich meine auch, dass derjenige, der ZFS einsetzen möchte kein solcher DAU sein kann und sich diesem 'Liebes Windows, bitte formatiere meine gerade eben angeschlossene Platte mit meinen Daten drauf, deshalb bestätige ich deine Frage zum Formatieren'-Szenario hingibt.

Austausch einer defekten Platte gegen eine vom anderen Hersteller, die jedoch ein paar Sektoren weniger hat. -> Das passiert, wenn es dieses Modell nicht mehr zu kaufen gibt. Wie bei allen anderen Technikdingen eben auch...entweder man verzichtet (:p) oder kauft das neuere, größere Modell (in dem Fall ist der Hersteller sogar wurscht). Zudem wächst die Speicherkapazität des pools (wenn alle Platten gegen größere getauscht wurden und autogrow aktiviert ist). Sollte man doch unbedingt eine Platte gleicher Größe eines anderen Hersteller haben wollen (schlechte Charge, Platten sterben wie die Fliegen in kurzer Zeit), schaut man in die detaillierten Specs zu dem jeweiligen Modell, da steht die Sektorenanzahl genau drin und man vergleicht.
Man muss es nur wissen. Vergleich mit humpelndem Bein: Der Joghurtbecher von Müller macht optisch was her, weil er 10cm hoch ist und 148g Inhalt hat. Der Becher von Hüttenthal wirkt mickrig trotz 150g Inhalt, weil nur 8cm hoch, aber größerer Radius. ;)

Es passiert vllt. auch, wenn man strategisch das Risiko schlechter Produktionschargen zu umgehen versucht, indem man absichtlich verschiedene Plattenmodelle/-hersteller in den pool setzt. Da unterstelle ich auch, dass derjenige kein DAU sein kann und weiß, was er macht.

Wenn ich eine Platte beim anderen Hersteller für 5€ weniger bekomme, hastig mit Schnappatmung bestelle, dann auf die Schnauze fliege (weil 28 Sektoren weniger), muss ich mich fragen, ob mir meine Daten wirklich nur 5€ wert sind.

Die Sache mit der Reihenfolge, wenn man wild umsteckt. -> Jup, labels schaden nicht. Ich hab simpel glabels verwendet (die letzten 8 Ziffern der Seriennummer). Falls ich mal Zauberwürfel spiele und wild umstecke, habe ich alles mit einem physikalischen Label (ebenfalls die 8 Ziffern) zusätzlich beklebt.
 
Windows 7, 8 und 10 fragen nur bei unpartitionierten Datenträger nach Formatierung. Unbekannte Partitionen fasst Windows schon seit vielen Jahren nicht mehr an.
 
Ich kenne den nicht und habe auch nie nach solchen Erklärungen gesucht.
Hmm, ich gehe davon aus, dass Warren Block schon genau weiß, was er da so zu FreeBSD schreibt :)
http://freebsdfoundation.blogspot.com/2014/05/bsdcan-trip-report-warren-block.html
http://www.wonkity.com/~wblock/docs/
Beim Lesen hatte ich fast den Eindruck, als hätte ich holgerw unwissentlich 'falsch beraten'.
Es ist gut, dass hier unterschiedliche Wege zielführend sind und hilfreich ist es in der Tat, wenn man weiß, was man tut und warum.
Darum: Wissen aneignen, mal hier und da was aufschnappen, selber ausprobieren und erfahren. Wenn man die Möglichkeiten kennt, kann man dann die beste Lösung für sich einrichten. Allem voran aber bitte immer zuerst das Kaltbackup!
Das ist bei mir aber gar nicht als Falschberatung angekommen, mir ist im Verlauf des Threads klar geworden, dass bei diesem Thema manche Straßen nach Rom führen. Ich gehe weiterhin davon aus, dass mir gpt plus Partitionieren etwas mehr Flexibilität bietet.
 
Hmm, ich gehe davon aus, dass Warren Block schon genau weiß, was er da so zu FreeBSD schreibt
Sicher, das wollte ich nicht anzweifeln. Wenn ich mir dies ansehe:
http://www.wonkity.com/~wblock/docs/html/disksetup.html#_the_new_standard_gpt
finde ich das quasi identisch und noch etwas ausgiebiger erläutert auch in der man zu gpart, nur habe ich da die passende Version zu meinem FreeBSD, während dieser Artikel von oben aus 2016 ist.
Das ist auch nicht entscheidend für mich. Ich denke, jeder muss für sich seinen Weg finden und das geht eben für mich immer noch am Besten, wenn ich selbst was mache und mir ansehe.
Wie du schon sagtest: ist ja kein Hexenwerk, alles nachvollziehbar und klar beschrieben.
 
Hallo @pit234a

Warren Block gehört zum Dokumentationsteam von FreeBSD. Daher ist es nicht verwunderlich, dass seine Ausführungen zu gpart mit der manpage zu gpart kompatibel sind.
Er gehört außerdem zum Admin Team der FreeBSD Foren.
Meine Erfahrungen sind, dass er sehr gut komplex technische IT-Sachen auch Anwendern vermitteln kann.
 
Zurück
Oben