Il se passe un certain nombre de choses ici.
Tout d'abord, toutes les technologies de disques modernes sont optimisées pour les transferts en masse. Si vous devez déplacer 100 Mo de données, ils le feront beaucoup plus rapidement s'ils sont dans un bloc contigu au lieu d'être dispersés partout. Les SSD aident beaucoup ici, mais même ils préfèrent les données dans des blocs contigus.
Deuxièmement, la réargenture est assez optimale en ce qui concerne les opérations sur disque. Vous lisez un énorme bloc contigu de données à partir d'un disque, effectuez des opérations de processeur rapides sur celui-ci, puis le réécrivez dans un autre gros bloc contigu sur un autre disque. Si l'alimentation est coupée à mi-chemin, ce n'est pas grave - vous ignorerez simplement toutes les données avec de mauvaises sommes de contrôle et continuerez comme d'habitude.
Troisièmement, la suppression d'un fichier est vraiment lente . ZFS est particulièrement mauvais, mais pratiquement tous les systèmes de fichiers sont lents à supprimer. Ils doivent modifier un grand nombre de blocs de données différents sur le disque et les chronométrer correctement (c'est-à-dire attendre) afin que le système de fichiers ne soit pas endommagé en cas de panne de courant.
Comment est-il possible que la réargenture de l'ensemble de la baie prenne une heure, mais que la suppression du disque prenne 4 jours?
La réargenture est quelque chose que les disques sont vraiment rapides, et la suppression est quelque chose que les disques sont lents. Par mégaoctet de disque, vous n'avez qu'à faire un peu de réargenture. Vous pourriez avoir mille fichiers dans cet espace qui doivent être supprimés.
70 suppressions / seconde semblent très très mauvaises performances
Ça dépend. Je ne serais pas surpris par cela. Vous n'avez pas mentionné le type de SSD que vous utilisez. Les SSD Intel et Samsung modernes sont plutôt bons dans ce type d'opération (lecture-modification-écriture) et fonctionnent mieux. Les SSD moins chers / plus anciens (par exemple Corsair) seront lents. Le nombre d'opérations d'E / S par seconde (IOPS) est ici le facteur déterminant.
ZFS est particulièrement lent à supprimer des éléments. Normalement, il effectuera des suppressions en arrière-plan afin que vous ne voyiez pas le retard. Si vous en faites un grand nombre, il ne peut pas le cacher et doit vous retarder.
Annexe: pourquoi les suppressions sont-elles lentes?
- La suppression d'un fichier nécessite plusieurs étapes. Les métadonnées du fichier doivent être marquées comme «supprimées», et finalement elles doivent être récupérées afin que l'espace puisse être réutilisé. ZFS est un «système de fichiers structuré de journaux» qui fonctionne mieux si vous ne créez que des choses, ne les supprimez jamais. La structure du journal signifie que si vous supprimez quelque chose, il y a un espace dans le journal et que d'autres données doivent donc être réorganisées (défragmentées) pour combler l'espace. Ceci est invisible pour l'utilisateur mais généralement lent.
- Les modifications doivent être apportées de manière à ce que, en cas de panne de courant à mi-parcours, le système de fichiers reste cohérent. Souvent, cela signifie attendre que le disque confirme que les données se trouvent réellement sur le support; pour un SSD, cela peut prendre du temps (centaines de millisecondes). L'effet net de ceci est qu'il y a beaucoup plus de comptabilité (c'est-à-dire des opérations d'E / S sur disque).
- Tous les changements sont mineurs. Au lieu de lire, d'écrire et d'effacer des blocs flash entiers (ou des cylindres pour un disque magnétique), vous devez en modifier un peu. Pour ce faire, le matériel doit lire dans un bloc ou un cylindre entier, le modifier en mémoire, puis l'écrire à nouveau sur le support. Cela prend beaucoup de temps.