2026 : saturation disque OpenClaw, rotation JSONL et espace purgeable APFS sur un Mac mini ProxyMac
Les équipes qui livrent OpenClaw sur des nœuds Mac mini M4 loués à Hong Kong, au Japon, en Corée, à Singapour et aux États-Unis tombent parfois sur un mode d’échec cruel : les outils MCP expirent, les agents bouclent sur redémarrage, pourtant top montre un CPU oisif. La cause est souvent banale—pression disque. Les postes Apple Silicon gardent des quotas NVMe finis ; des diagnostics JSONL incessants (voir le guide journalisation), des couches conteneur et des restes Xcode DerivedData peuvent réduire l’espace libre effectif sous 5 Go, seuil où APFS peine à allouer des extents pour de petites écritures et où les processus enfants renvoient ENOSPC sans bannière polie. Cet article explique comment cela se manifeste dans OpenClaw, comment lire df contre Utilitaire de disque, comment concevoir une rotation compatible avec launchd, et comment câbler des alertes à côté des sondes de santé et des playbooks récupération passerelle.
Les incidents nocturnes gagnent en clarté quand vous imposez un gabarit de ticket : captures d’écran de l’Utilitaire de disque, sortie df -h sur le volume Data, taille du plus gros fichier JSONL, et graphique d’IOPS si disponible. Sans ce quadruor, le support devine entre « modèle LLM capricieux » et « SSD saturé ». La suite de ce guide transforme ces artefacts en décisions : conserver, compresser, archiver hors machine ou augmenter la taille louée.
Comment ENOSPC apparaît dans OpenClaw avant que les graphiques disque ne crient
OpenClaw orchestre des dizaines de processus éphémères : les serveurs MCP ajoutent des objets JSON en fin de fichier, les modèles d’embedding mettent en cache des fragments sous ~/Library, et les crash dumps atterrissent dans Console si les invites TCC échouent. Quand write(2) signale plus d’espace, Node peut lever avant de vider stderr—votre tableau de bord affiche « outil indisponible » plutôt que « volume plein ». Associez toujours des contrôles disque lorsque vous poursuivez des symptômes du dépannage déploiement qui n’apparaissent qu’après des tests de trempage multi-heures.
- Symptôme A : sous-processus MCP quitte avec le code 1 et des journaux vides.
- Symptôme B : LaunchAgent passerelle relance toutes les 45–90 s sans rapport de crash.
- Symptôme C : Utilitaire de disque affiche encore « 50 Go disponibles » alors que
df -hcontredit—les clichés APFS mentent poliment.
Quand plusieurs agents écrivent dans le même répertoire, les courses d’écriture amplifient le bruit : un fichier qui grossit pendant qu’un autre processus tente une rotation provoque des fenêtres où les deux échouent. Séparez les chemins par équipe ou par environnement pour réduire ces collisions.
Espace libre APFS, octets purgeables, et pourquoi Docker ou Xcode explosent en silence
APFS emprunte de l’espace libre aux caches purgeables—dérivés Photos, clichés locaux Time Machine, placeholders fournisseurs de fichiers. Sous pression le système de fichiers réclame des téraoctets ; jusque-là df peut afficher 92 % d’utilisation alors que le Finder affiche de la marge. Lancez tmutil listlocalsnapshots / et comparez à diskutil apfs listVolumeGroups. Les runtimes conteneurs mappent overlayFS sur le volume Data ; supprimer des images inutilisées rend souvent 18–40 Go sur des hôtes CI intensifs. Budgétisez au moins 15 Go de marge stationnaire pour OpenClaw plus les caches modèle—tout plus serré invite des courses lors des compactages cron nocturnes.
Les équipes conformité doivent aussi noter que certaines politiques DLP interceptent les écritures volumineuses : le symptôme ressemble à ENOSPC alors que le blocage est policy-driven. Croisez les journaux endpoint avant de raser des caches légitimes.
Schéma de rotation JSONL qui coopère avec launchd
Traitez JSONL comme les journaux nginx : faites tourner quand les fichiers dépassent 150 Mo, conservez 7 archives journalières compressées, et expédiez les lignes froides vers l’objet stockage si la conformité l’autorise. Sur macOS, newsyslog suffit pour des chemins simples ; pour les agents par utilisateur, enveloppez le journal OpenClaw dans un petit garde bash qui appelle mv app.log app-$(date +%s).log avant de franchir votre seuil. Évitez de dépendre de binaires logrotate externes sauf si vous les embarquez—le décalage Gatekeeper a blessé des équipes qui copiaient des rôles Ansible Linux à l’identique. Alignez les réglages de rotation sur les configs suivies dans Git décrites dans versionnement de configuration.
Table de symptômes : traduire le langage opérateur en faits disque
| Symptôme cryptique | Signal disque | Commande immédiate |
|---|---|---|
| « Le modèle s’est bloqué après six heures » | Volume franchissant 95 % d’utilisation | df -h /System/Volumes/Data |
| « L’agent redémarre en boucle » | Impossible d’ajouter en JSONL | ls -lh ~/Library/Logs/OpenClaw/*.jsonl |
| « Les téléchargements ont disparu » | Caches purgeables réclamés brutalement | Premiers secours Utilitaire de disque + amincissement des clichés |
Triage disque en six étapes avant de réinstaller OpenClaw
- Photographier la réalité cliché : joindre
df,diskutil infoettmutil listlocalsnapshotsdans un même ticket. - Repérer les arbres lourds :
du -hd1 ~en ciblant Logs, Library et espaces de travail projet. - Faire tourner JSONL selon le schéma ci-dessus ; vérifier que le job launchd démarre encore.
- Purger les clichés obsolètes après confirmation de sauvegardes hors machine.
- Redémarrer OpenClaw via la séquence
launchctl kickstartdu guide récupération passerelle. - Ajouter des alertes disque à côté des pings de disponibilité—déclencher quand l’espace disponible passe sous 20 Go pendant cinq minutes consécutives.
Plan de capacité : traduire les gigaoctets en décisions opérateur
Un SSD 512 Go semble infini jusqu’à ce que trois équipes partagent un mini : quarante gigaoctets pour les chaînes Xcode, soixante pour les modèles cachés, quatre-vingt-dix pour les artefacts d’intégration nocturne, et soudain vous n’avez plus un octet libre le week-end. Budgétisez chaque bande de charge explicitement—80 Go minimum pour les développeurs interactifs, 40 Go pour le débordement CI sur des volumes APFS que vous pouvez clichoter séparément, et 25 Go non attribués comme tampon d’urgence pour la croissance des métadonnées APFS. Quand vous dépassez 85 % d’utilisation soutenue plus de six heures, basculez le trafic agent avec les motifs du guide bascule fournisseur pendant que vous taillez les journaux, pas après l’effondrement MCP.
Les partages SMB montés depuis le mini héritent du même pool disque—n’autorisez pas des PSD multi-centaines de mégaoctets dans un dossier partagé qui stocke aussi du JSONL sans politiques de rétention alignées. Pour les exports réglementaires, compressez les archives sur volumes externes seulement si votre revue sécurité l’autorise ; sinon restez sur des sparsebundles chiffrés sur le SSD interne avec des durées de vie documentées. Chaque décision gigaoctet doit vivre à côté du dépôt GitOps évoqué dans versionnement de configuration pour que la finance trace pourquoi vous demandez l’échelon supérieur.
Traitez les clichés disque comme des pointeurs de branche : magnifiques quand on les comprend, catastrophiques quand on les ignore. Combinez des volumes Time Machine horaire / quotidien / hebdomadaire avec une rétention façon ZFS seulement après avoir prouvé que les deltas de clichés restent petits face au churn JSONL ; sinon reposez-vous sur des fichiers plats tournés plus des exports stockage froid. Documentez qui signe avant suppression d’archives—sans cette chaîne de possession, les auditeurs supposeront que vous avez jeté des preuves dès que la pression disque a grimpé. Imprimez le pied de diskutil apfs list dans votre journal d’incident pour que la garde de nuit ne devine jamais les UUID de conteneur.
FAQ
Dois-je désactiver la journalisation unifiée ? Baissez la verbosité des sous-systèmes plutôt que de supprimer /var/db/diagnostics.
iCloud optimise-t-il l’espace et perturbe-t-il les espaces de travail OpenClaw ? Oui—l’optimisation Bureau/Documents peut bloquer les écritures ; excluez les répertoires agents.
Et les caches RAM disk ? Utiles pour des builds éphémères sur M4, mais les tailles doivent rester bornées—documentez les plafonds dans les runbooks à côté des articles d’aide.
Pourquoi le Mac mini ProxyMac reste la plateforme réaliste pour les agents gourmands en disque
Les hôtes Mac mini M4 loués livrent des SSD rapides avec une usure prévisible comparée aux hyperviseurs sur-souscrits ; vous provisionnez les régions HK / JP / KR / SG / US sans expédier de matériel tout en alignant les clichés APFS sur la rétention conformité. Couplez l’hygiène disque à des tarifs transparents, routez les opérateurs via le centre d’aide, et réservez le débogage GUI via la VNC quand un nettoyage Finder bat SSH sur la rapidité.
Gardez les agents en ligne avec de la marge
HK / JP / KR / SG / US · Mac mini prêt JSONL