2026 Аренда Mac Mini 7×24: матрица ротации логов — уровни lz4 и zstd, IO nice, пороги inode и срезы для долгих батчей

Чтение: 9 минут

Команды, которые держат на арендованной Mac Mini режим 7×24 с потоковыми JSONL и syslog, упираются не в «ещё один гигабайт», а в связку ротации, сжатия и inode на одном APFS томе. Здесь — компактная матрица: lz4 против zstd, полосы частоты срезов, обёртка nice и действия по водоразделу диска и inode; ниже — готовые фрагменты newsyslog, logrotate и bash.

Связанные материалы: syslog, logrotate и inode, launchd, ThrottleInterval и приоритеты IO, водораздел APFS, очереди 7×24.

Три узких места лог-интенсивных батчей

  1. Пик CPU на postrotate. Сжатие всего среза в момент переименования бьёт по интерактивным сессиям SSH на малом узле.
  2. Рост inode быстрее гигабайтов. Мелкие файлы на минуту и временные shard-ы заполняют каталог быстрее, чем растёт счётчик свободных блоков.
  3. Коллизия с ночным окном. Ротация без календаря накладывается на бэкап или компактификацию, если не развести метки launchd.

Уровни сжатия lz4 и zstd против загрузки CPU

Для одной Mac Mini трактуйте кодек как регулятор конкуренции с вашими воркерами. lz4 почти линейно дёшев по CPU; zstd повышает плотность, но цена растёт нелинейно после уровня девять на длинных корпусах текста.

Кодек Типичный уровень CPU на гигабайт сырья Когда выбирать
lz4 по умолчанию низкий, почти плоский живой SSH, частые ночные срезы, мало свободного времени CPU
zstd 3–6 умеренный, хороший компромисс плотности узкий диск, широкое окно батча, постrotate под nice
zstd 9–15 высокий на длинных логах архив перед выгрузкой наружу, только в тихом слоте

Частота ротации: размер, время, поколения

Сочетайте триггер по размеру и календарь: размер держит хвост читаемым для tail -f, календарь ловит демонов с низким объёмом строк.

Полоса Размер среза Время Поколения на узле
агрессивная 50–100 МБ каждый час 3–5 активных + холод в архив
сбалансированная 100–200 МБ каждые 6 ч 5–8, наружный слив при жёлтом диске
щадящая 200–512 МБ раз в сутки 8–14 только если inode стабилен

Связка с launchd: LowPriorityIO и nice

Поместите тяжёлый postrotate в отдельный агент с LowPriorityIO и обёрткой nice -n 15, чтобы основной батч не делился диском с интерактивом. Согласуйте StartCalendarInterval с окнами из матрицы питания и стабильности.

Диск APFS и inode: жёлтая и красная зона

Сигнал Жёлтая зона Красная зона
свободное место APFS ≤ 15% тома — уведомление, ужесточить ротацию ≤ 10% — пауза новых мелких писателей; ≤ 5% — только критичные логи
утилизация inode ≥ 70% — план архивации и слияния shard ≥ 85% — стоп генераторам файлов в минуту, внешний перенос срезов
IO wait рост очереди > 20 мс средне — сместить сжатие устойчиво > 40 мс — отключить zstd высоких уровней до конца окна

Фрагменты newsyslog, logrotate и bash

newsyslog.d (режим, число архивов, порог в килобайтах, флаг Z — gzip; lz4/zstd — через внешний postrotate):

# /etc/newsyslog.d/app.conf — поля: log mode keep_kb size_kb when flags [pid_path]
/var/log/app/jsonl.log 640 7 204800 * Z /var/run/app.pid
/var/log/app/syslog.log 640 14 102400 * Z /var/run/syslog.pid

logrotate с zstd и nice:

/var/log/app/*.log {
  daily
  rotate 14
  compress
  compresscmd /usr/bin/zstd
  compressoptions -3
  compressext .zst
  postrotate
    /usr/bin/nice -n 15 /usr/bin/true
  endscript
}

Bash срез с lz4 без смены inode-агрессии:

ts=$(date +%Y%m%d%H%M%S)
mv /var/log/app/stream.log /var/log/app/stream.log.$ts
: >/var/log/app/stream.log
nice -n 15 lz4 -9 /var/log/app/stream.log.$ts /var/log/app/stream.log.$ts.lz4 && rm -f /var/log/app/stream.log.$ts

Пять шагов runbook перед продом

  1. Зафиксируйте каталог логов на томе с запасом inode и измерьте базовую скорость роста мегабайт и файлов в час.
  2. Выберите кодек по таблице CPU и включите nice в postrotate.
  3. Настройте размер и календарь ротации, ограничьте поколения на SSD арендного узла.
  4. Пропишите жёлтые и красные действия в мониторинге и свяжите их с паузой воркеров.
  5. Проведите сухой прогон ночью с искусственным срезом и замером задержки SSH.

Три опорных факта для отчётности

  • Полоса ротации 100–200 МБ на файл обычно держит задержку хвоста в комфортной зоне для операторов.
  • zstd -3 часто даёт заметную экономию диска при умеренной цене CPU на текстовых логах.
  • Порог inode 70/85% на малых томах — практичный триггер до деградации метаданных APFS.

FAQ: быстрые ответы

Нужен ли logrotate на macOS?
Часто достаточно newsyslog; logrotate уместен, если вы унифицируете конфиги с Linux CI.
Совместимы ли сжатые срезы с централизованным сбором?
Да, если агент читает архивы или выгружает сырьё до сжатия; см. Fluent Bit и Loki.
Как не убить inode мелкими трейсами?
Батчировать в один файл на воркер, ротация по размеру, внешний cold tier для старых срезов.

Покупка и аренда — коротко

Собственный узел фиксирует CAPEX и обслуживание; аренда Mac Mini переносит риск диска и обновлений в операционный платёж и позволяет быстро сменить объём SSD под лог-шторм. Для сравнения пулов см. корпоративный пул против одного узла.

Узел, тарифы и помощь

Подберите конфигурацию под ночные срезы и inode, затем откройте тарифы, оформите аренду и закрепите runbook в центре помощи; оглавление блога — здесь.

RunMini для лог-интенсивных 7×24

Понятные спецификации Apple Silicon, SSH и политики диска для долгих батчей.

Страница аренды

Mac Mini под ротацию логов 7×24

RunMini: узел под срезы и сжатие. Главная, тарифы, помощь, аренда.

Ещё по теме 7×24: питание и стабильность, дашборд и ночной батч.

Аренда Mac Mini под логи 7×24