actimeo, montage dur/souple, débit rsync, jalons 1 To / 2 To), sept étapes, FAQ stale file handle. Prolongements : Flux & OpenClaw, AnalysisRun.
1. Tempête d’attributs NFS. Des workers Xcode massifs sur un export unique multiplient les getattr ; sans actimeo ni préfixes par équipe, la latence masque la vraie cause sur les graphes locaux.
2. rsync sans gouvernail. Concurrence élevée sans --bwlimit sature inodes et réseau ; une coupure courte laisse des fichiers partiels relus comme caches sains.
3. Sondes isolées. Des webhooks hétérogènes empêchent OpenClaw de séparer disque, NFS et CPU ; alignez-vous sur SeaweedFS & rsync et fusionnez le JSON.
Matrice décisionnelle : actimeo, montage, rsync et jalons 1 To / 2 To
Cible : CI partagée sur Mac physiques homogènes ; adaptez les chiffres au contrat WAN. Ordre : attributs, débit rsync, puis disque. Montage dur = panne serveur visible vite ; souple = latence masquée mais blocages plus longs. Documentez pour chaque tenant le couple fenêtre rsync / fenêtre build afin qu’OpenClaw puisse corréler sans ambiguïté les pics réseau aux pics disque observés sur les volumes de 1 To ou 2 To.
--bwlimit et à une file unique par export pour conserver des marges sur les seuils 70 / 80 / 90 %.| Profil de charge | actimeo / noac | Montage dur / souple | rsync (débit · concurrence) | Jalons 1 To / 2 To |
|---|---|---|---|---|
| Builds Xcode parallèles | actimeo=3, éviter noac sauf debug | dur si SLA strict sur vérité serveur | --bwlimit 6000–12000, 1 flux actif | 70 % : réduire workers ; 80 % : couper promotions ; 90 % : stopper sync & auditer inodes |
| Caches dépendances partagés | actimeo=30 à 60 si contenu versionné | souple acceptable avec watchdog I/O | limite basse 3000–8000, 2 files sérialisées | 70 % : décaler fenêtre ; 2 To : surveiller doubles écritures cross-tenant |
| Promotion d’artefacts lourds | rafraîchir attributs après rsync | dur recommandé pour détecter export invalide | 8000–16000 + --partial, jamais >2 rsync simultanés | 80 % : backoff exponentiel minutes ; 90 % : file unique + ionice idle |
| Lecture analytique / doctor | actimeo=0 sur chemins témoins uniquement | dur pour sondes OpenClaw | sonde rsync dry-run hebdo, 1 job | 70 % : alerter digest ; 1 To : prioriser purge locale |
Démarche reproductible : multi-location, OpenClaw, webhook fusionné
Chaque étape laisse une preuve (ticket, commit ou capture OpenClaw) pour rejouer le scénario sur d’autres Mac mini M4. Les équipes distantes doivent pouvoir relire le même ordre d’opérations sans dépendre d’un accès console implicite ; joignez donc les extraits de configuration export et les extraits fstab ou équivalent launchd au ticket racine.
- Partitionnement multi-nœuds. Préfixe par tenant (
/exports/ci/tenantA), pas de croisement ; notez UUID volume contre montages fantômes. - Exports NFSv4.1.
fsidstables, version mineure fixe ; validez avec un client témoin. - Clients macOS.
vers=4.1, rsize/wsize explicites, options d’attributs selon matrice ; log rotatif desgetattr. - ionice. Script rsync avec
ionice -c2 -n7ou-c3si Xcode domine ;launchdavec délai minimal entre promotions. - OpenClaw & jetons. Agent sur chaque Mac, secrets chiffrés, rotation courte, second jeton pour fusions sans coupure.
- Webhook fusionné. JSON minimal (
node,nfs_latency_ms,disk_pct,rsync_state) + sondes type AnalysisRun ; revue hebdo des digests. - Contrôle final. Coupure réseau ~30 s pendant rsync, relever OpenClaw, remonter client, archiver traces.
OpenClaw : corrélation ionice, NFS et disque
Sonde = statvfs + stat témoin NFS + état rsync ; OpenClaw émet un digest par nœud. Au-delà du jalon disque, passez la file rsync en slow lane et pointez l’astreinte vers l’achat public si extension SSD. Ajoutez un compteur de tentatives rsync avortées : trois échecs consécutifs doivent déclencher une alerte spécifique distincte du simple dépassement de latence, car elles précèdent souvent les erreurs « stale handle » sur les clients macOS.
FAQ : « Stale NFS file handle » et reprises
Symptôme. Stale NFS file handle malgré serveur UP : inode côté serveur ne matche plus le cache client (rename massif, export recréé, snapshot).
Procédure. Stop rsync, umount propre, vérifier export + fsid, remonter identique ; si tempête d’attributs, baissez concurrence CI et montez actimeo seulement sur chemins froids.
Informations réutilisables et jalons disque
| Seuil | SSD 1 To | SSD 2 To |
|---|---|---|
| 70 % | réduire parallélisme rsync et ionice plus strict | auditer espaces réservés APFS + doubles promotions |
| 80 % | couper promotions non essentielles, conserver sondes OpenClaw | décaler fenêtres NFS hors heures de pointe CI |
| 90 % | stopper nouveaux montages, purger caches locaux | évacuer artefacts + vérifier df -i avant toute remontée |
- Règle chiffrée : conserver au moins 15 % d’espace libre sur le volume hébergeant l’export avant toute campagne rsync nocturne ; en dessous, refusez automatiquement les nouvelles promotions depuis OpenClaw.
- Règle opérationnelle : toute modification d’export doit déclencher un test
statautomatisé et une entrée OpenClaw dans les deux minutes. - Règle documentaire : versionnez dans Git la matrice NFS et le gabarit JSON du webhook fusionné ; toute dérive de schéma doit être traitée comme un changement d’API.