2017-08-09 1 views
1

J'ai un zpool qui a été autorisé à devenir très complet, et lourdement écrit alors qu'il est très plein. Il est maintenant de moins de 80%, mais certains systèmes de fichiers sont encore très lents.Combien de défragmentation peut-on obtenir sans zpool?

Je comprends que pour zfs receive ces systèmes de fichiers dans un nouveau pool les défragmenteraient efficacement. Disons qu'il n'y a pas assez de stockage autour pour un nouveau pool, mais je pourrais diriger zfs send flux de plusieurs systèmes de fichiers sur une bande, détruire ces systèmes de fichiers dans le pool, puis les retourner dans le pool. Donc ma question est, serait le même zpool une fois-mal fragmenté, si un assez grand pourcentage d'espace (mais pas tout cela) a été libéré en déplaçant les systèmes de fichiers, puis avoir son espace libre assez bien fusionné que les mêmes systèmes de fichiers seraient mieux alloués lorsqu'ils sont réintégrés dans le pool? Cela pourrait-il permettre une défragmentation suffisante pour en valoir la peine?

Répondre

2

C'est difficile à savoir. Si vous êtes en mesure de libérer suffisamment de pools pour qu'il y ait de grandes régions contiguës (disons 50%), alors vous pourriez probablement utiliser la méthode que vous avez décrite. Cependant, même avec 50% du disque libre, vous pouvez théoriquement affecter tous les autres blocs, ce qui entraîne le même niveau de fragmentation après l'envoi. La seule façon de garantir cela est de migrer toutes les données vers un nouveau pool. Si vous manquez de stockage, vous pouvez également installer une machine ZFS intermédiaire dans le cloud uniquement pour ce transfert, afin d'éviter d'acheter vous-même les disques. Cela a l'avantage supplémentaire que si votre flux d'envoi est corrompu en quelque sorte, vous pouvez le renvoyer plutôt que d'être SOL.