2026: исчерпание диска OpenClaw, ротация JSONL и purgeable‑место APFS на Mac mini ProxyMac
Команды, которые катают OpenClaw на арендованных Mac mini M4 в Гонконге, Японии, Корее, Сингапуре и США, иногда попадают в жестокий режим: инструменты MCP таймаутятся, агенты зацикливаются на рестарте, а top показывает простаивающий CPU. Причина зачастую бытовая — давление на диск. У Apple Silicon конечные квоты NVMe; бесконечные JSONL‑диагностики (см. гайд по логированию), слои контейнеров и хвосты Xcode DerivedData могут сжать эффективное свободное место ниже 5 ГБ, после чего APFS с трудом выделяет экстенты для мелких записей, а дочерние процессы возвращают ENOSPC без вежливого баннера. Здесь — как это всплывает внутри OpenClaw, как читать df против «Дисковой утилиты», как проектировать ротацию, дружественную launchd, и как повесить алерты рядом с health‑пробами и плейбуками восстановления шлюза.
Ночные инциденты проясняются, если в тикет положить четыре артефакта: скрин «Дисковой утилиты», вывод df -h по тому Data, размер самого жирного JSONL и график IOPS, если он есть. Без этого квадрата поддержка гадает между «капризной LLM» и «забитым SSD». Ниже — как превратить эти данные в решение: оставить, сжать, вынести в холодное хранилище или увеличить арендуемый объём.
Как ENOSPC проявляется внутри OpenClaw раньше, чем графики диска закричат
OpenClaw оркестрирует десятки короткоживущих процессов: MCP‑серверы дописывают JSON‑объекты, модели эмбеддинга кэшируют шард под ~/Library, а дампы падают в Console, если TCC не прошёл. Когда write(2) возвращает «нет места», Node может бросить исключение до сброса stderr — на дашборде «инструмент недоступен», а не «том полон». Всегда добавляйте дисковые проверки, если гоняете симптомы из деплой‑траблшутинга, которые всплывают только после многочасовых прогонов.
- Симптом A: подпроцесс MCP выходит с кодом 1 и пустыми логами.
- Симптом B: LaunchAgent шлюза перезапускается каждые 45–90 с без crash‑репортов.
- Симптом C: «Дисковая утилита» всё ещё показывает «50 ГБ свободно», а
df -hне согласен — снимки APFS врут вежливо.
Когда несколько агентов пишут в один каталог, гонки усиливают шум: файл растёт, пока другой процесс пытается ротировать, и оба на мгновение падают. Разводите пути по командам или средам, чтобы снизить коллизии.
Свободное место APFS, purgeable‑байты и почему Docker или Xcode взрываются тихо
APFS занимает свободное место у purgeable‑кэшей — деривативы фото, локальные снимки Time Machine, file provider placeholders. Под давлением ФС возвращает терабайты; до этого df может показывать 92 % заполнения, пока Finder дышит шире. Запустите tmutil listlocalsnapshots / и сравните с diskutil apfs listVolumeGroups. Рантаймы контейнеров кладут overlayFS на Data‑том; удаление неиспользуемых образов часто возвращает 18–40 ГБ на CI‑тяжёлых хостах. Закладывайте минимум 15 ГБ постоянного запаса под OpenClaw и кэши моделей — уже плотнее начинаются гонки при ночном уплотнении cron.
Команды с DLP иногда перехватывают крупные записи: симптом похож на ENOSPC, хотя это policy. Сверяйте endpoint‑логи, прежде чем сносить легитимные кэши.
Паттерн ротации JSONL, который дружит с launchd
Считайте JSONL как логи nginx: крутите, когда файлы пересекают 150 МБ, храните 7 дневных сжатых архивов и выгружайте холодные строки в объектное хранилище, если комплаенс позволяет. На macOS для простых путей хватает newsyslog; для per‑user агентов оберните логгер OpenClaw небольшим bash‑сторожем с mv app.log app-$(date +%s).log до порога. Не цепляйтесь за внешний logrotate без вендоринга — сдвиг Gatekeeper уже ломал команды, копировавшие Linux‑Ansible один в один. Согласуйте ротацию с git‑конфигами из версионирования конфигурации.
Таблица симптомов: с языка оператора к фактам диска
| Загадочный симптом | Дисковый сигнал | Немедленная команда |
|---|---|---|
| «Модель зависла через шесть часов» | Том пересёк 95 % заполнения | df -h /System/Volumes/Data |
| «Агент постоянно рестартит» | Нельзя дописать JSONL | ls -lh ~/Library/Logs/OpenClaw/*.jsonl |
| «Загрузки исчезли» | Purgeable резко вернули | Первая помощь «Дисковой утилиты» + прореживание снимков |
Шестишаговый дисковый triage до переустановки OpenClaw
- Снимок реальности: приложите
df,diskutil infoиtmutil listlocalsnapshotsв один тикет. - Найти тяжёлые деревья:
du -hd1 ~с фокусом на Logs, Library и рабочие каталоги. - Ротировать JSONL по схеме выше; убедитесь, что job launchd всё ещё стартует.
- Очистить старые снимки после подтверждения бэкапов вне коробки.
- Перезапустить OpenClaw последовательностью
launchctl kickstartиз восстановления шлюза. - Добавить дисковые алерты рядом с uptime‑пингами — срабатывать, если свободные байты падают ниже 20 ГБ пять минут подряд.
Планирование ёмкости: гигабайты в решения оператора
SSD на 512 ГБ кажется бесконечным, пока три команды не делят один мини: сорок гигабайт под цепочки Xcode, шестьдесят под кэш моделей, девяносто под ночные артефакты интеграции — и вдруг на выходных ноль свободных байт. Бюджетируйте каждую полосу нагрузки явно — минимум 80 ГБ под интерактивных разработчиков, 40 ГБ под CI‑перелив на APFS‑томах, которые можно снимать отдельно, и 25 ГБ нераспределённого буфера под рост метаданных APFS. Если 85 % заполнения держится больше шести часов, переводите трафик агентов по схемам из фейловера провайдера, пока чистите логи, а не после коллапса MCP.
SMB‑шары с того же мини наследуют тот же дисковый пул — не складывайте многомегабайтные PSD в общую папку, где лежит JSONL, без согласованной ретенции. Для регуляторных экспортов архивируйте на внешние тома только после security review; иначе оставайтесь на зашифрованных sparsebundle на внутреннем SSD с задокументированным TTL. Каждое решение про гигабайт живите рядом с GitOps‑репо из версионирования конфигурации, чтобы финансы видели, зачем нужен следующий тариф.
Снимки диска — как указатели веток: прекрасны, если понимаете их, катастрофичны, если игнорируете. Совмещайте тома Time Machine ежечасно / ежедневно / еженедельно с лёгкой ZFS‑подобной ретенцией только после того, как докажете малые дельты снимков на фоне churn JSONL; иначе опирайтесь на плоские ротируемые файлы плюс холодный экспорт. Документируйте, кто подписывает удаление архивов — без цепочки владения аудиторы решат, что вы уничтожили доказательства при первом росте давления. Печатайте хвост diskutil apfs list в журнал инцидента, чтобы ночная смена не гадала UUID контейнеров.
FAQ
Стоит ли отключать unified logging? Снижайте уровни подсистем вместо удаления /var/db/diagnostics.
Мешает ли оптимизация хранилища iCloud рабочим каталогам OpenClaw? Да — оптимизация «Рабочий стол / Документы» может тормозить записи; исключите каталоги агентов.
А RAM‑диск кэши? Полезны для эфемерных сборок на M4, но размеры должны быть ограничены — фиксируйте потолки в ранбуках рядом со статьями справки.
Почему арендованный Mac mini ProxyMac остаётся реалистичной платформой для дискоёмких агентов
Арендованные Mac mini M4 дают быстрые SSD с предсказуемым износом против перегруженных гипервизоров; вы поднимаете регионы HK / JP / KR / SG / US без отгрузки железа и держите APFS‑снимки в линии с комплаенс‑удержанием. Сочетайте дисциплину диска с прозрачными ценами, ведите операторов через справочный центр, а отладку GUI оставьте на VNC, когда очистка через Finder быстрее SSH.
Держите агентов онлайн с запасом
HK / JP / KR / SG / US · Mac mini под JSONL