Ceci est une "continuation" de la réponse d'ewwhite:
Vous devrez réécrire vos données dans le zpool étendu afin de le rééquilibrer
J'ai écrit un script PHP ( disponible sur github ) pour automatiser cela sur mon hôte Ubuntu 14.04.
Il suffit d'installer l'outil PHP CLI avec sudo apt-get install php5-cli
et d'exécuter le script, en passant le chemin d'accès aux données de votre pool comme premier argument. Par exemple
php main.php /path/to/my/files
Idéalement, vous devez exécuter le script deux fois sur toutes les données du pool. La première exécution équilibrera l'utilisation du lecteur, mais les fichiers individuels seront trop alloués aux lecteurs ajoutés en dernier. La deuxième exécution garantira que chaque fichier est "équitablement" distribué sur les disques. Je dis assez au lieu de même car il ne sera réparti uniformément que si vous ne mélangez pas les capacités du lecteur comme je le suis avec mon raid 10 de paires de tailles différentes (miroir 4 To + miroir 3 To + miroir 3 To).
Raisons d'utiliser un script
- Je dois résoudre le problème "sur place". Par exemple, je ne peux pas écrire les données sur un autre système, supprimez-les ici et tout réécrire.
- J'ai rempli mon pool à plus de 50%, donc je ne pouvais pas simplement copier tout le système de fichiers à la fois avant de supprimer l'original.
- S'il n'y a que certains fichiers qui doivent bien fonctionner, alors on pourrait simplement exécuter le script deux fois sur ces fichiers. Cependant, la deuxième exécution n'est efficace que si la première exécution a réussi à équilibrer l'utilisation des lecteurs.
- J'ai beaucoup de données et je veux pouvoir voir une indication des progrès réalisés.
Comment savoir si une utilisation régulière du lecteur est atteinte?
Utilisez l'outil iostat sur une période de temps (par exemple iostat -m 5
) et vérifiez les écritures. S'ils sont identiques, alors vous avez atteint une répartition uniforme. Ils ne sont pas parfaitement même dans la capture d'écran ci-dessous car j'utilise une paire de 4 To avec 2 paires de disques de 3 To en RAID 10, donc les deux 4 seront écrits un peu plus.
Si l'utilisation de votre disque est "déséquilibrée", iostat affichera quelque chose de plus comme la capture d'écran ci-dessous où les nouveaux disques sont écrits de manière disproportionnée. Vous pouvez également dire que ce sont les nouveaux lecteurs car les lectures sont à 0 car ils ne contiennent aucune donnée.
Le script n'est pas parfait, seulement une solution de contournement, mais il fonctionne pour moi en attendant jusqu'à ce que ZFS implémente un jour une fonctionnalité de rééquilibrage comme BTRFS (doigts croisés).