ZFS RAIDz2 Speed fällt ins Bodenlose

Status
Not open for further replies.

DaVo

Cadet
Joined
Jun 4, 2013
Messages
9
Hallo zusammen,

ich habe jetzt schon extrem viel Zeit in meine FreeNAS gesteckt und nach ein paar Jahren entschieden, von meiner Temp-Lösung in ein "richtiges" System zu investieren, mit dem ich lange Zeit keinen Ärger mehr habe (ich höre schon die Leser lachen..:p)

Aber nach dem Vorgeplänkel nun zu meinem abstrusen Problem, welches mich jetzt auch schon Tage gekostet hat:

Bei starker Last auf dem RAIDz2 (6x 2TB WD Red) bricht die Performance auf quasi 0 ein. Derzeitiges Beispiel ist der dump eines ca. 1,2TB großen Snapshots auf das gleiche Array. Am Anfang läuft der Transfer mit ca. 100-130MB/s, geht dann aber langsam runter bis er bei ca. 700GB zum Erliegen kommt (noch ca. 500KB/s).
Folgendes habe ich bisher herausgefunden:

top:
Code:
CPU:  0.0% user,  0.0% nice,  1.1% system,  0.2% interrupt, 98.7% idle
Mem: 145M Active, 43M Inact, 3836M Wired, 2236K Cache, 200M Buf, 3610M Free
Swap: 12G Total, 12G Free

  PID USERNAME    THR PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
 6380 root          1  44    0 19904K  4824K tx->tx  0  24:21  0.00% zfs


Prefetch habe ich aktiviert und deaktiviert - keine Auswirkung
atime habe ich aktiviert und deaktiviert - keine Auswirkung

zpool iostat -v: Zeigt das schon bekannte - die Platten machen so gut wie nichts...

Code:
                                            capacity     operations    bandwidth
pool                                    alloc   free   read  write   read  write
--------------------------------------  -----  -----  -----  -----  -----  -----
ZFSVolume                               3.36T  7.51T      7     20   554K  88.8K
  raidz2                                3.36T  7.51T      7     20   554K  88.8K
    gptid/31217152-69ac-11e2-afa4-002522d24888      -      -      0      4      0  44.0K
    gptid/31775612-69ac-11e2-afa4-002522d24888      -      -      0      4    818  44.8K
    gptid/31d25957-69ac-11e2-afa4-002522d24888      -      -      2      4  93.6K  42.4K
    gptid/32227a3f-69ac-11e2-afa4-002522d24888      -      -      1      4   140K  46.4K
    gptid/327c7a9d-69ac-11e2-afa4-002522d24888      -      -      0      4    818  46.4K
    gptid/32d9a99c-69ac-11e2-afa4-002522d24888      -      -      0      5    818  46.4K
--------------------------------------  -----  -----  -----  -----  -----  -----



Aber nun mein Hauptaufhängungspunkt:

gstat zeigt sehr merkwürdiges (RAIDz2 geht über ada0-5!!)
Code:
dT: 0.501s  w: 0.500s
 L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w   %busy Name
    0      0      0      0    0.0      0      0    0.0    0.0| da0
    0      0      0      0    0.0      0      0    0.0    0.0| PART/da0/da0
    0      0      0      0    0.0      0      0    0.0    0.0| da0s1
    0      0      0      0    0.0      0      0    0.0    0.0| da0s2
    0      0      0      0    0.0      0      0    0.0    0.0| da0s3
    0      0      0      0    0.0      0      0    0.0    0.0| da0s4
    0      0      0      0    0.0      0      0    0.0    0.0| DEV/da0/da0
    0     20      0      0    0.0     20    248    0.7    0.5| ada0
    0     20      0      0    0.0     20    248    0.8    0.5| ada1
    5      8      6    104  850.2      2      8   57.9  131.5| ada2
    5      6      4     40  865.9      2      8   67.3   90.1| ada3
    0     20      0      0    0.0     20    256    0.4    0.3| ada4
    0     20      0      0    0.0     20    256    0.5    0.3| ada5
    0      0      0      0    0.0      0      0    0.0    0.0| PART/da0s1/da0s1
    0      0      0      0    0.0      0      0    0.0    0.0| da0s1a



Was ist das denn? Ein RAID-Verbund, bei dem zwei Platten mehr als 100% belastet sind, und die anderen 3 sich vollkommen langweilen?

Der Test mit diskinfo bestätigt dies:

Code:
# diskinfo -t /dev/ada0
/dev/ada0
        512             # sectorsize
        2000398934016   # mediasize in bytes (1.8T)
        3907029168      # mediasize in sectors
        4096            # stripesize
        0               # stripeoffset
        3876021         # Cylinders according to firmware.
        16              # Heads according to firmware.
        63              # Sectors according to firmware.
        WD-WMC1T1145155 # Disk ident.

Seek times:
        Full stroke:      250 iter in   7.422452 sec =   29.690 msec
        Half stroke:      250 iter in   5.734184 sec =   22.937 msec
        Quarter stroke:   500 iter in  10.370803 sec =   20.742 msec
        Short forward:    400 iter in   4.416506 sec =   11.041 msec
        Short backward:   400 iter in   4.062218 sec =   10.156 msec
        Seq outer:       2048 iter in   0.220960 sec =    0.108 msec
        Seq inner:       2048 iter in   0.240262 sec =    0.117 msec
Transfer rates:
        outside:       102400 kbytes in   0.726358 sec =   140977 kbytes/sec
        middle:        102400 kbytes in   1.339899 sec =    76424 kbytes/sec
        inside:        102400 kbytes in   1.306055 sec =    78404 kbytes/sec



Code:
# diskinfo -t /dev/ada2
/dev/ada2
        512             # sectorsize
        2000398934016   # mediasize in bytes (1.8T)
        3907029168      # mediasize in sectors
        4096            # stripesize
        0               # stripeoffset
        3876021         # Cylinders according to firmware.
        16              # Heads according to firmware.
        63              # Sectors according to firmware.
        WD-WMC1T0808671 # Disk ident.

Seek times:
        Full stroke:      250 iter in  81.578938 sec =  326.316 msec
        Half stroke:      250 iter in  92.438778 sec =  369.755 msec
        Quarter stroke:   500 iter in 143.993772 sec =  287.988 msec
        Short forward:    400 iter in  30.611477 sec =   76.529 msec
        Short backward:   400 iter in 226.135501 sec =  565.339 msec
        Seq outer:       2048 iter in  79.753435 sec =   38.942 msec
        Seq inner:       2048 iter in 157.290149 sec =   76.802 msec
Transfer rates:
        outside:       102400 kbytes in  74.059309 sec =     1383 kbytes/sec
        middle:        102400 kbytes in  77.287864 sec =     1325 kbytes/sec
        inside:        102400 kbytes in  81.052819 sec =     1263 kbytes/sec


Nächster Blick war dann in die SMART-Hilfe:

Code:
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0027   191   177   021    Pre-fail  Always       -       5416
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       67
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       421
 10 Spin_Retry_Count        0x0032   100   253   000    Old_age   Always       -       0
 11 Calibration_Retry_Count 0x0032   100   253   000    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       43
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       7
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       59
194 Temperature_Celsius     0x0022   109   108   000    Old_age   Always       -       41
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   253   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   100   253   000    Old_age   Offline      -       0

SMART Error Log Version: 1
No Errors Logged


..Ergebnisse bei allen quasi gleich - keine Fehler, keine UDMA-CRC-Fehler, Keine fehlerhaften Sektoren.

Ich bin schon viele Foren durch, bei dem es um den "tx->tx-Fehler ging". Meistens hat sich jedoch rausgestellt, dass SMART-Fehler auftauchten und Hardware im Eimer war. Die Auslastung mit gstat war in den Fällen aber eher so, dass die betroffenen Disks eher bei 0% lagen, und daher kaum noch Daten durchkamen.

Ich bin mit meinem Latein am Ende und richte mich daher an euch Profis. Hat irgendjemand eine Idee, wie so eine Asynchronität bei RAID-Arrays auftreten kann? Was kann Überhaupt eine 100% Laufwerksauslastung erzeugen, wenn die Interfaces drumrum sich langweilen? Irgendwelche Self-Tests sollten ja von smartctl angezeigt werden, oder?! Außerdem sollten die wohl nicht über viele Stunden hinweg ein Laufwerk so belasten, dass es faktisch nicht mehr nutzbar ist (ls -l geht nicht mehr, Web-Interface wirft zum Teil Timeouts).

Als Anmerkung sollte ich vielleicht noch sagen, dass dieses Verhalten tatsächlich nur auftritt, wenn viele Daten über die Platten laufen. Bei "normaler" Auslastung läuft die Kiste seit Monaten stabil. Jedoch wird die auch spätestens alle 2 Tage neugestartet. Wenn ich jetzt in den Produktivbetrieb gehe und andere Systeme durch FreeNAS ersetze ist das aber nicht mehr tragbar.

Was kann ich tun? Außer natürlich die vielen Hinweise zu befolgen auf FreeNAS und ZFS zu verzichten - das ist mir klar und ist (noch) keine Alternative. Ich hoffe irgendjemand kann mir helfen.

Vielen Dank schonmal und beste Grüße,

DaVo

P.S.: Ich habe so viele wichtige Informationen in diesen Post gesteckt, wie möglich (wobei ich "wichtig" aus den Standardfragen aus den anderen vielen Threads entnommen habe, die ich schon durch habe). Entschuldigt bitte wenn noch was fehlt - ich verliere langsam den Überblick was ich schon alles probiert habe.

P.P.S.: System: AMD A3400, 8GB RAM, 6x2TB WD Red, FreeNAS 8.3.0
 

Kentsfield

Dabbler
Joined
Jun 17, 2013
Messages
10
Hast du mittlerweile eine Lösung gefunden? Ich habe mir diesen Thread nun schon mal ein paar Mal angesehen,
und denke jedes Mal ich habe eine Lösung. Aber dann kommt ein anderes Symtom welches diese Lösung verwirft.
 
Status
Not open for further replies.
Top