Домой Новости Железо Системные логи Linux могут перейти на SQLite для решения проблем с 2038...

Системные логи Linux могут перейти на SQLite для решения проблем с 2038 годом

Переход на реляционные базы данных должен устранить ограничения, заложенные еще десятилетия назад.

Перспективы модернизации логов в 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-бэкенда для встраиваемых систем с ограниченными ресурсами.

Источник: http://www.opennet.ru