Où est la surcharge pour ZFS RAIDZ2 sur les disques de secteur 4K?

8

J'ai commencé par créer 16 fichiers vides d'exactement 1 milliard d'octets:

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

Ensuite, j'ai créé des volumes RAIDZ2 de plus en plus grands sur les fichiers, forçant ashift = 12 à simuler un lecteur de secteur 4K, par exemple

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

puis comparé en utilisant df -B1pour voir la taille réelle.

Filesystem  1B-blocks
tank        12787777536

Mes résultats:

+-------+-------------+-------------+------------+------------+
| 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       |
+-------+-------------+-------------+------------+------------+

Comme un graphique:

tableau d'efficacité

  1. Mes résultats sont-ils corrects ou ai-je oublié quelque chose?
  2. S'ils ont raison, pourquoi? Où va l'espace?
  3. Puis-je faire quelque chose pour améliorer l'efficacité?
  4. Existe-t-il une formule pour calculer l'efficacité?
steveh7
la source
Pourquoi? Juste pourquoi?!?
ewwhite
@ewwhite - Il y a jusqu'à 11% d'espace en moins que ce à quoi je m'attendais. Si vous aviez, disons, des disques 12x1 To, vous vous attendriez à avoir 10 To, mais moins de 9 To.
steveh7
Non, c'est une bonne question. Je ne connais pas la réponse. J'ai de grandes différences dans l'utilisation de zpool entre ashift 9 et 12 et les mêmes ensembles de données.
ewwhite
Pouvez-vous les réexécuter avec des valeurs de décalage allant de 0 à 12 et tracer en 3D?
Andrew

Réponses:

3

La réponse glib, car RAIDZ (2) aspire les lecteurs 4k.

  • Problème # 548 : Utilisation très inefficace de l'espace observée lors de l'utilisation de raidz2 avec ashift = 12
  • Problème # 1807 : zvol sur RAIDZ2 occupe le double de l'espace attendu # 1807

Cela a à voir avec les calculs de parité engloutissant une cargaison d'espace supplémentaire, en particulier avec des fichiers plus petits. Essayez de faire le même test avec des fichiers de moins de 50 Mo si vous voulez voir de réelles inefficacités.

RobbieCrash
la source
Cette réponse n'est pas réelle, les bugs sont corrigés ...
Arman
@Arman Si vous lisez les commentaires sur 548, cela explique pourquoi c'est le cas. Le «bug» de 548 n'est pas corrigé, il est juste fermé; ce n'est pas considéré comme un bug.
RobbieCrash