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:
- Sind meine Ergebnisse korrekt oder habe ich etwas ausgelassen?
- Wenn sie richtig sind, warum? Wohin geht der Raum?
- Kann ich etwas tun, um die Effizienz zu verbessern?
- Gibt es eine Formel zur Berechnung der Effizienz?
linux
zfs
raidz
advanced-format
steveh7
quelle
quelle
Antworten:
Die glatte Antwort, weil RAIDZ (2) auf 4k-Laufwerken saugt.
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.
quelle