Un équilibrage Btrfs peut sembler bloqué après l’ajout d’un disque plus volumineux, car la relocalisation a encore besoin d’un espace libre de travail pour les blocs et peut déplacer l’ensemble du système de fichiers.
Remplacer un périphérique ou copier des données vers un périphérique plus grand ne rend pas automatiquement tous les groupes de blocs Btrfs compacts, répartis uniformément ou éligibles à la relocalisation. Un équilibrage fonctionne au niveau des groupes de blocs, crée un espace de travail temporaire, met à jour les métadonnées et peut être limité par le périphérique le plus lent, les instantanés, les sommes de contrôle ou une autre opération exclusive. La première tâche consiste à distinguer une relocalisation réellement bloquée d’un équilibrage complet lent qui progresse toujours.
Vérifier si l’équilibrage est en cours, en pause ou en attente
Vérifiez l’état de l’équilibrage, le nombre de blocs traités, le journal du noyau, le débit des disques et la latence de chaque périphérique. Notez si la commande s’exécute au premier plan, en arrière-plan, en pause, a été annulée ou a été reprise automatiquement après un redémarrage.
Un équilibrage peut passer beaucoup de temps à relocaliser un groupe de blocs fortement utilisé avant que le compteur visible ne change. Les recommandations d’ArchWiki concernant Btrfs montrent comment utiliser l’état de l’équilibrage et l’utilisation du système de fichiers pour distinguer une opération qui se poursuit d’une commande déjà arrêtée.
En l’absence d’E/S, de changement d’état et si le journal du noyau signale une erreur, considérez l’opération comme arrêtée plutôt que lente. Conservez le premier message d’erreur avant de relancer l’équilibrage avec d’autres filtres.
Vérifier que le périphérique plus grand et le système de fichiers ont été redimensionnés
Comparez la taille physique du périphérique, la taille de la partition, la taille du périphérique Btrfs et l’allocation du système de fichiers. Un disque de remplacement plus grand peut encore exposer l’ancienne limite de partition ou l’ancienne taille du périphérique Btrfs.
Confirmez chaque couche dans l’ordre : capacité matérielle, table de partitions, périphérique bloc, inventaire des périphériques Btrfs et allocation du système de fichiers. SUSE précise que le périphérique doit être agrandi avant le système de fichiers ; un équilibrage ne peut donc pas utiliser une capacité que Btrfs ne voit pas encore.
L’article de ZimaSpace sur la capacité qui n’augmente pas après le remplacement d’un disque fournit la vérification complémentaire des différentes couches avant d’accuser une relocalisation.
Distinguer les octets libres de l’espace de travail libre pour les groupes de blocs
Comparez la taille totale du périphérique avec la quantité déjà attribuée aux groupes de blocs Btrfs. Un système de fichiers peut afficher des octets libres aux utilisateurs tout en ne disposant d’aucune région entièrement non allouée suffisamment grande pour créer le groupe de blocs temporaire nécessaire à la relocalisation.
La documentation sur l’équilibrage Btrfs explique que la relocalisation nécessite un espace de travail de groupe de blocs complètement inutilisé ; cela diffère de l’espace libre ordinaire au niveau des fichiers et peut provoquer une erreur ENOSPC pendant l’équilibrage.
Si l’espace de travail est limité, commencez par récupérer les groupes de blocs complètement inutilisés à l’aide d’un filtre d’utilisation restrictif, plutôt que de lancer un nouvel équilibrage complet. Ne supprimez pas les instantanés sans discernement avant d’avoir mesuré leur contribution à l’allocation des blocs.
Vérifier si un équilibrage complet a été lancé sans filtres
Examinez la commande d’origine. Un équilibrage sans filtre de données ni de métadonnées tente de relocaliser l’ensemble du système de fichiers, même lorsque l’objectif réel est seulement de compacter des blocs peu utilisés ou de déplacer les allocations depuis un périphérique.
Un équilibrage complet peut durer plusieurs heures ou plusieurs jours, car chaque groupe de blocs sélectionné est réécrit. Le manuel Linux btrfs-balance avertit qu’une exécution sans filtres déplace les données et les métadonnées dans l’ensemble du système de fichiers et met à jour tous les pointeurs de blocs.
Utilisez la sortie d’état et l’historique précédent du shell pour identifier les filtres actifs. N’annulez pas puis ne relancez pas l’opération à répétition, car les équilibrages interrompus peuvent laisser des groupes de blocs partiellement remplis qui continuent de consommer de l’espace de travail.
Vérifier les périphériques lents, les erreurs et les opérations exclusives concurrentes
Examinez les données SMART, les erreurs de transport, les réinitialisations de liaison et les délais d’attente USB ou SATA, ainsi que la latence de chaque périphérique. La vitesse de l’équilibrage est limitée par les lectures depuis les anciens emplacements, les écritures vers les nouveaux emplacements, la vérification des sommes de contrôle et les mises à jour des métadonnées.
Vérifiez également la présence d’un scrub, de l’ajout ou de la suppression d’un périphérique, du redimensionnement du système de fichiers, de la suppression d’instantanés, d’un envoi ou d’une réception, ou d’une autre opération de stockage. Le guide d’administration Btrfs de Red Hat décrit les changements de périphériques et l’équilibrage comme des opérations de relocalisation ; une maintenance simultanée peut donc créer une forte concurrence, même si aucun disque n’est défaillant.
Si un périphérique présente des réinitialisations répétées ou une latence extrême, mettez l’équilibrage en pause et diagnostiquez cette liaison avant de forcer davantage de relocalisations. Poursuivre avec un périphérique instable peut transformer un problème de performances en problème de récupération.
Utiliser des filtres restrictifs et des limites pour un redémarrage contrôlé
Après avoir préservé l’état actuel, commencez par le filtre le moins risqué, ciblant les groupes de blocs vides ou peu utilisés. Limitez le nombre de blocs par exécution afin de pouvoir observer chaque résultat avant d’élargir la portée.
Augmentez progressivement le seuil d’utilisation et traitez séparément les données et les métadonnées. La relocalisation des métadonnées peut générer de nombreuses mises à jour supplémentaires ; il n’est pas nécessaire de la compacter agressivement simplement parce que l’utilisation moyenne semble faible.
Mettez en pause, reprenez ou annulez l’opération au moyen des commandes d’équilibrage prévues à cet effet plutôt que de tuer le processus. Vérifiez que le groupe de blocs actuel est terminé et que l’état d’équilibrage enregistré correspond à l’action suivante.
Vérifier la répartition et la capacité après l’équilibrage
Comparez l’allocation de chaque périphérique, les profils de données et de métadonnées, l’espace de travail non alloué, l’utilisation du système de fichiers et le nombre de blocs relocalisés avant et après l’équilibrage contrôlé.
Un résultat réussi ne signifie pas nécessairement une utilisation parfaitement égale en octets sur chaque disque. La présentation du noyau Linux répertorie la prise en charge intégrée de plusieurs périphériques et le redimensionnement en ligne ; le test final doit donc se concentrer sur des profils valides, une allocation utilisable, des périphériques sains et un espace de travail suffisant pour les écritures futures.
Le problème est résolu lorsque l’équilibrage se termine ou atteint la portée filtrée souhaitée, que le périphérique plus grand reçoit de nouvelles allocations, que l’espace de travail libre pour les blocs est rétabli et que les écritures normales, les instantanés, le scrub et les redémarrages fonctionnent sans que l’équilibrage ne redémarre inopinément.
Assistance et conseils
Plus à lire

Plex peut-il partager un GPU avec un autre conteneur Docker ?
Plex et un autre conteneur peuvent souvent accéder au même GPU, mais vous devez tester la prise en charge des pilotes, le mappage des...

Comment déterminer si une erreur Plex vient du client ou du serveur
Reproduisez le même élément sur un autre client, comparez le chemin de session, puis recueillez les preuves côté serveur uniquement après que la portée...

Comment configurer le cache de Plex et le stockage temporaire du transcodage
Protégez l’état persistant de Plex en plaçant les fichiers temporaires de transcodage sur un stockage local adapté, puis vérifiez le nettoyage, l’espace libre et...

