Перспективы модернизации логов в Linux
В рассылке linux-api обсуждается амбициозное предложение (RFC) по замене устаревших бинарных форматов системных журналов lastlog, btmp, utmp и wtmp на современные решения на базе SQLite. Инициатива призвана устранить технический долг, включая критическую проблему переполнения 32-разрядных счетчиков времени в 2038 году, низкую производительность и отсутствие гибкости.
Проблематика текущих форматов
Сейчас Linux использует файлы с фиксированной структурой для хранения данных сеансов и аутентификации:
- /var/log/lastlog — время последнего входа (
struct lastlog); - /var/log/btmp — неудачные попытки входа;
- /var/run/utmp — активные сеансы;
- /var/log/wtmp — история входов и выходов.
Основные недостатки системы:
- Проблема 2038 года: Использование 32-битных полей
time_tв структуреutmpxделает неизбежным сбой 19 января 2038 года даже на 64-битных системах из-за требований ABI-совместимости. - Отсутствие масштабируемости: Невозможно добавить новые метаданные (IP-адреса, ID контейнеров) без разрушения структуры.
- Низкая скорость: Утилиты вынуждены сканировать файлы целиком, что неэффективно при больших объемах логов.
- Проблемы с атомарностью: Использование
flockчревато взаимоблокировками при одновременной записи процессами вродеsshdилиlogin.
Переход на SQLite: архитектура решения
Автор предложения рекомендует внедрить специализированные библиотеки liblastlog2, libbtmp2, libutmp2 и libwtmp2 с унифицированным C-интерфейсом. Переход на SQLite обеспечит:
- Использование 64-разрядного
INTEGERдля временных меток. - Эффективную индексацию для мгновенного поиска.
- Поддержку ACID-транзакций и режима WAL для параллельного доступа.
- Легкое расширение схемы через
ALTER TABLE.
План миграции
Предлагается стратегия поэтапного внедрения «двойной записи»:
- Адаптация софта: Системные утилиты (sudo, login, sshd) начнут писать данные одновременно в старые файлы и в новую SQLite-базу.
- Новые утилиты: Появятся
last2,who2и аналоги, работающие с БД. - Депрекация: По истечении нескольких лет поддержка старого бинарного формата будет прекращена.
Сейчас разработчики обсуждают детали: от расположения файлов баз данных до возможности создания «легкого» fallback-бэкенда для встраиваемых систем с ограниченными ресурсами.






