Comencé creando 16 archivos vacíos de exactamente mil millones de bytes:
for i in {1..16}; do dd if=/dev/zero of=/mnt/temp/block$i bs=1000000 count=1000 &> /dev/null; done
Luego creé volúmenes RAIDZ2 cada vez más grandes sobre los archivos, forzando ashift = 12 para simular una unidad de sector 4K, por ejemplo
zpool create tank raidz2 -o ashift=12 /mnt/temp/block1 /mnt/temp/block2...
y luego se compara usando df -B1
para ver el tamaño real.
Filesystem 1B-blocks
tank 12787777536
Mis resultados:
+-------+-------------+-------------+------------+------------+
| 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 |
+-------+-------------+-------------+------------+------------+
Como un cuadro:
- ¿Son correctos mis resultados o he dejado algo fuera?
- Si son correctos, ¿por qué? ¿A dónde va el espacio?
- ¿Puedo hacer algo para mejorar la eficiencia?
- ¿Existe una fórmula para calcular la eficiencia?
linux
zfs
raidz
advanced-format
steveh7
fuente
fuente
Respuestas:
La respuesta simplista, porque RAIDZ (2) apesta en unidades de 4k.
Tiene que ver con los cálculos de paridad que consumen una gran cantidad de espacio adicional, especialmente con archivos más pequeños. Intente hacer la misma prueba con archivos de menos de 50 MB si desea ver algunas ineficiencias reales.
fuente