MinIO quitte pi2 : son volume y avait perdu son journal ext4, et aucun redémarrage ne le démontait #50

Merged
arcodange merged 1 commits from arcodange/incident-minio into main 2026-09-15 10:35:01 +02:00
Owner

Cause (prouvée, voir tools#49)

  • Le 14/09, pi2 tourne à 109 % de mémoire, sans swap. Le moteur Longhorn du volume minio (il vit sur le nœud du pod) manque son délai de 8 s (R/W Timeout. No response received in 8s, 07:07 CEST).
  • Les écritures de MinIO restent bloquées ~23 s et reviennent au noyau en critical medium error. ext4 fait Aborting journal on device sdb-8 puis Remounting filesystem read-only (07:19:41). Le même incident avait eu lieu à 04:05.
  • Le montage mort n'a jamais été démonté : un redémarrage de conteneur rouvre le même montage. Le renommage .minio.sys/tmp → tmp-old/<uuid> échoue, MinIO dit « drive is faulty ». Résultat : 325 redémarrages en 27 h, aucune vidéo ne se sauvegarde ni ne se relit.

Preuve

  • Pod de débogage en lecture seule (créé puis supprimé) : volume à 16 %, inodes à 0 %, tout en 1000:1000, .minio.sys complet, tmp-old absent.
  • /sys/fs/ext4/sdb/errors_count = 2 sur pi2 ; Longhorn voit le volume healthy, trois répliques running (pi1, pi2, pi3).
  • Écartés, mesures à l'appui : volume plein, disque Longhorn plein (49 %), droits changés, changement Git/ArgoCD (aucun depuis le 02/09).

Ce que fait la PR

  • minio/templates/deployment.yaml : affinity.nodeAffinity requise kubernetes.io/hostname NotIn [pi2], préférence pi3 (59 % de mémoire, pi1 80 %, relevé kubectl top nodes du jour).
  • Rendu helm template minio/ comparé avant/après : seul le bloc affinity (et son commentaire) change. Stratégie Recreate confirmée dans le rendu.
  • Appliquée par ArgoCD (auto-sync) : l'ancien pod s'arrête, le volume se détache de pi2, se rattache sur pi3 (ou pi1), et ext4 rejoue son journal au remontage.

Ce qu'elle ne fait pas

  • Aucune suppression de volume, PVC, réplique ou objet ; aucun nettoyage de .minio.sys/tmp (il n'est pas en cause).
  • Aucun fsck : si le remontage échoue sur des erreurs ext4, on s'arrête et le fondateur décide.
  • Elle ne traite pas le terrain : pi2 sature en mémoire et d'autres volumes Longhorn y vivent (loki est tombé au même moment).
  • Aucune suspension d'ArgoCD.

Refs arcodange-org/tools#49

🤖 Generated with Claude Code

## Cause (prouvée, voir tools#49) - Le **14/09**, pi2 tourne à **109 % de mémoire, sans swap**. Le moteur Longhorn du volume `minio` (il vit sur le nœud du pod) manque son délai de 8 s (`R/W Timeout. No response received in 8s`, 07:07 CEST). - Les écritures de MinIO restent bloquées ~23 s et reviennent au noyau en `critical medium error`. ext4 fait `Aborting journal on device sdb-8` puis `Remounting filesystem read-only` (07:19:41). Le même incident avait eu lieu à 04:05. - **Le montage mort n'a jamais été démonté** : un redémarrage de conteneur rouvre le même montage. Le renommage `.minio.sys/tmp → tmp-old/<uuid>` échoue, MinIO dit « drive is faulty ». Résultat : **325 redémarrages en 27 h**, aucune vidéo ne se sauvegarde ni ne se relit. ## Preuve - Pod de débogage en lecture seule (créé puis supprimé) : volume à **16 %**, inodes à 0 %, tout en `1000:1000`, `.minio.sys` complet, `tmp-old` absent. - `/sys/fs/ext4/sdb/errors_count = 2` sur pi2 ; Longhorn voit le volume `healthy`, trois répliques `running` (pi1, pi2, pi3). - Écartés, mesures à l'appui : volume plein, disque Longhorn plein (49 %), droits changés, changement Git/ArgoCD (aucun depuis le 02/09). ## Ce que fait la PR - `minio/templates/deployment.yaml` : `affinity.nodeAffinity` **requise** `kubernetes.io/hostname NotIn [pi2]`, **préférence** pi3 (59 % de mémoire, pi1 80 %, relevé `kubectl top nodes` du jour). - Rendu `helm template minio/` comparé avant/après : **seul le bloc `affinity` (et son commentaire) change**. Stratégie `Recreate` confirmée dans le rendu. - Appliquée par ArgoCD (auto-sync) : l'ancien pod s'arrête, le volume se détache de pi2, se rattache sur pi3 (ou pi1), et ext4 **rejoue son journal** au remontage. ## Ce qu'elle ne fait pas - Aucune suppression de volume, PVC, réplique ou objet ; aucun nettoyage de `.minio.sys/tmp` (il n'est pas en cause). - Aucun `fsck` : si le remontage échoue sur des erreurs ext4, on s'arrête et le fondateur décide. - Elle ne traite pas le terrain : **pi2 sature en mémoire** et d'autres volumes Longhorn y vivent (loki est tombé au même moment). - Aucune suspension d'ArgoCD. Refs arcodange-org/tools#49 🤖 Generated with [Claude Code](https://claude.com/claude-code)
arcodange added 1 commit 2026-09-15 10:33:41 +02:00
MinIO quitte pi2 : son volume y avait perdu son journal ext4, et aucun redémarrage ne le démontait
Helm Charts / Detect changed charts (pull_request) Successful in 21s
Helm Charts / Library charts tool (pull_request) Skipped
Helm Charts / Application charts alloy (pull_request) Skipped
Helm Charts / Application charts chart (pull_request) Skipped
Helm Charts / Application charts crowdsec (pull_request) Skipped
Helm Charts / Application charts grafana (pull_request) Skipped
Helm Charts / Application charts hashicorp-vault (pull_request) Skipped
Helm Charts / Application charts loki (pull_request) Skipped
Helm Charts / Application charts pgbouncer (pull_request) Skipped
Helm Charts / Application charts pgcat (pull_request) Skipped
Helm Charts / Application charts prometheus (pull_request) Skipped
Helm Charts / Application charts redis (pull_request) Skipped
Helm Charts / Application charts minio (pull_request) Successful in 28s
3c3690a26b
Le 14/09, pi2 (109 % de mémoire, sans swap) a fait manquer au moteur
Longhorn son délai de 8 s. Les écritures sont revenues au noyau en
« critical medium error », ext4 a abandonné son journal et remonté le
système de fichiers en lecture seule. Ce montage mort n'a jamais été
démonté : MinIO échoue en boucle sur « drive is faulty » depuis 27 h.

Une affinité requise `kubernetes.io/hostname NotIn [pi2]` (préférence
pi3) : avec la stratégie Recreate, l'ancien pod s'arrête, le volume se
détache de pi2 et se rattache ailleurs, où ext4 rejoue son journal.

Refs arcodange-org/tools#49

Co-Authored-By: Claude Opus 5 <[email protected]>
arcodange merged commit 558521ee3f into main 2026-09-15 10:35:01 +02:00
arcodange deleted branch arcodange/incident-minio 2026-09-15 10:35:02 +02:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: arcodange-org/tools#50