ZFS Performance bei 2-Disk ZPool

Daemotron

Well-Known Member
Moin,

ich habe in den letzten Tagen ein wenig mit meiner neuen Pizzaschachtel herumgespielt. Drauf ist ein FreeBSD 7.2-STABLE (amd64) mit ZFS v.13 (aktuell das von gestern ;)), und drin sind zwei schöne 750GB SATAII-Platten an einem ICH10 (außerdem ein Xeon E3110 und 8 GB RAM).

Die Preisfrage: Was ist nun besser, um aus den beiden Platten einen zpool zu bauen - mirror oder raidz? Um das herauszufinden, hab ich beides mal versucht und jeweils iozone (benchmarks/iozone) drauf losgelassen (atime abgeschaltet). So habe ich iozone aufgerufen:
Code:
iozone -+A1 -i2 -s 1024m -r 8k -o -O
Dieser Aufruf soll das Lese-/Schreibverhalten eines Datenbankservers abbilden (wobei ich die Record Size an den Default des Dateisystems angepasst habe).

Und so sehen die Ergebnisse aus:
Code:
==> iozone-zfs-mirror.txt <==
                                                            random  random    bkwd   record   stride
              KB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
         1048576       8     115     115   206742   207132  149332      99  189352      116   156732    22094    18564  149961    41501

iozone test complete.

==> iozone-zfs-raidz.txt <==
                                                            random  random    bkwd   record   stride
              KB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
         1048576       8     115     115   206750   206838  148834      99  191044      116   156311    20237     3126   23207    16348

iozone test complete.
Meiner Einschätzung nach schenken sich die beiden also nichts; von daher habe ich mich erst mal entschieden, bei mirror zu bleiben (beim lesen großer Dateien, etwa per dd, wird bei mirror tatsächlich ein Durchsatz von ~130MB/sec erreicht).

Spaßeshalber habe ich auf demselben Blech mal gmirror und UFS2 mit Soft Updates durchgetestet (selber iozone-Aufruf, nur die Blockgröße habe ich UFS-gerecht auf 4k reduziert). Überraschenderweise schlägt gmirror+UFS ZFS bei den Writes um Längen; auch Reads sind schneller (bis auf random reads, hier behält ZFS die Nase vorn):
Code:
==> iozone-gmirror-split.txt <==
                                                            random  random    bkwd   record   stride                                   
              KB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
         1048576       4    1755    2087   391145   390148  140292     233  328843     2271   239136    18243    18217  326735   327317

iozone test complete.
Ist ZFS wirklich so viel langsamer, oder habe ich noch irgendetwas übersehen? In Sachen Performance Tuning habe ich leider nicht viel hilfreiches gefunden, was sich mit dem Durchsatz des Dateisystems befasst - kmem-Probleme habe ich dank amd64 und des angepassten kmem-Adressbereichs keine...
 
2 Platten sind imo ein sehr ungeeignetes Szenario für einen RaidZ da dieser ja ähnlich einem Raid5 aufgebaut ist. Sprich ein RaidZ auf 2 Platten ist fast identisch zu einem Mirror.

Zur Performance denke ich nicht dass du da etwas übersehen hast. UFS2 ist äußerst performant, du musst aber auch bedenken was für Zielgruppen du hast bzw wo der Entwicklungsfokus liegt. UFS2 läuft denke ich hauptsächlich auf kleineren Setups. ZFS ist von von Anfang an auf große Setups mit X Platten ausgelegt. Sieh es als Konkurrenz zu NetApp. In dem Bereich performt es sehr gut und skaliert toll. Dass es dabei auf kleinen Setups etwas schwächelt ist da imo normal wobei ich jetzt nicht finde dass es langsam wäre. Es ist halt im Rahmen.
 
Zurück
Oben