Wohin geht der Overhead für ZFS RAIDZ2 auf 4K-Sektorfestplatten?

8

Ich habe zunächst 16 leere Dateien mit genau 1 Milliarde Bytes erstellt:

for i in {1..16}; do dd if=/dev/zero of=/mnt/temp/block$i bs=1000000 count=1000 &> /dev/null; done

Dann habe ich immer größere RAIDZ2-Volumes über den Dateien erstellt und ashift = 12 gezwungen, ein 4K-Sektorlaufwerk zu simulieren, z

zpool create tank raidz2 -o ashift=12 /mnt/temp/block1 /mnt/temp/block2...

und dann mit verglichen df -B1, um die tatsächliche Größe zu sehen.

Filesystem  1B-blocks
tank        12787777536

Meine Ergebnisse:

+-------+-------------+-------------+------------+------------+
| disks |  expected   |   actual    |  overhead  | efficiency |
+-------+-------------+-------------+------------+------------+
|     3 |  1000000000 |   951975936 |   48024064 | 95.2       |
|     4 |  2000000000 |  1883766784 |  116233216 | 94.2       |
|     5 |  3000000000 |  2892234752 |  107765248 | 96.4       |
|     6 |  4000000000 |  3892969472 |  107030528 | 97.3       |
|     7 |  5000000000 |  4530896896 |  469103104 | 90.6       |
|     8 |  6000000000 |  5541068800 |  458931200 | 92.4       |
|     9 |  7000000000 |  6691618816 |  308381184 | 95.6       |
|    10 |  8000000000 |  7446331392 |  553668608 | 93.1       |
|    11 |  9000000000 |  8201175040 |  798824960 | 91.1       |
|    12 | 10000000000 |  8905555968 | 1094444032 | 89.1       |
|    13 | 11000000000 | 10403577856 |  596422144 | 94.6       |
|    14 | 12000000000 | 11162222592 |  837777408 | 93.0       |
|    15 | 13000000000 | 12029263872 |  970736128 | 92.5       |
|    16 | 14000000000 | 12787908608 | 1212091392 | 91.3       |
+-------+-------------+-------------+------------+------------+

Als Diagramm:

Effizienzdiagramm

  1. Sind meine Ergebnisse korrekt oder habe ich etwas ausgelassen?
  2. Wenn sie richtig sind, warum? Wohin geht der Raum?
  3. Kann ich etwas tun, um die Effizienz zu verbessern?
  4. Gibt es eine Formel zur Berechnung der Effizienz?
steveh7
quelle
Warum? Warum nur?!?
ewwhite
@ewwhite - Es gibt bis zu 11% weniger Speicherplatz als erwartet. Wenn Sie beispielsweise 12 x 1 TB Laufwerke hätten, würden Sie 10 TB erwarten, aber weniger als 9 TB.
steveh7
Nein, das ist eine gute Frage. Ich weiß die Antwort nicht. Ich habe große Unterschiede in der Zpool-Nutzung zwischen Ashift 9 und 12 und denselben Datensätzen.
ewwhite
Können Sie diese mit Ashift-Werten zwischen 0 und 12 erneut ausführen und in 3D zeichnen?
Andrew

Antworten:

3

Die glatte Antwort, weil RAIDZ (2) auf 4k-Laufwerken saugt.

  • Problem Nr. 548 : Sehr ineffiziente Raumnutzung bei Verwendung von raidz2 mit ashift = 12
  • Problem Nr. 1807 : zvol unter RAIDZ2 belegt doppelt so viel Speicherplatz wie erwartet # 1807

Dies hat mit den Paritätsberechnungen zu tun, die eine Schiffsladung zusätzlichen Speicherplatzes verschlingen, insbesondere bei kleineren Dateien. Versuchen Sie, denselben Test für Dateien mit weniger als 50 MB durchzuführen, wenn Sie echte Ineffizienzen feststellen möchten.

RobbieCrash
quelle
Diese Antwort ist nicht aktuell, die Fehler sind behoben ...
Arman
@Arman Wenn Sie die Kommentare zu 548 lesen, wird erklärt, warum dies der Fall ist. Der 'Fehler' in 548 ist nicht behoben, sondern nur geschlossen. Es wird nicht als Fehler angesehen.
RobbieCrash