Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Настройка системы

Ускоряем систему: лог-файлы в ОЗУ

Оригинал: Improve system performance by moving your log files to RAM
Автор: Ben Martin
Дата: 16 июля 2008
Перевод: Александр Тарасов aka oioki
Дата перевода: 25 июля 2008

Проект Ramlog позволяет вам хранить свои логи в памяти при работе компьютера и сохранять их на диск при его выключении. Если у вас ноутбук или мобильное устройство с работающим syslog, Ramlog может увеличить время работы батарей или флеш-памяти мобильного устройства. Полезным здесь является то, что даже если какой-нибудь демон будет посылать сообщение в syslog каждые 30 секунд, винчестер не будет включаться. Таким образом, будет экономиться энергия ноутбука.

Если диск, на котором установлена ваша система, представляет из себя флеш-память, в этом случае также будет польза от использования Ramlog, ведь как известно долговечность флешки зависит от числа операций записи. Скорее всего, ваш раздел /usr нечасто изменяется, в отличие от /var и /tmp, на которые приходится львиная доля операций записи - намного чаще, чем вы пересохраняете свои рабочие документы в домашнем каталоге. Хранение системных логов в памяти будет приводить к тому, что жесткий диск будет совершать меньше операций записи, что уменьшает темп появления сбойных секторов и увеличвает срок службы диска. Минусом такого подхода является то, что если ноутбук будет выключен некорректно, тогда логи, находящиеся в оперативной памяти, будут потеряны. Однако, справедливости ради нужно сказать, что на ноутбуке логи не так важны (как, к примеру, на сервере).

Пакета Ramlog нет в репозиториях openSUSE, Ubuntu и Fedora. На домашней страничке проекта есть rpm-пакеты для Fedora, deb-пакет Ubuntu и архив с исходным кодом. Для этой статьи я собрал Ramlog версии 1.1.0 в 64-битной Fedora.

Ниже указаны первые шаги по установке. Обратите внимание, что tarball-архив Ramlog 1.1.0 распаковывается в текущий каталог, а не создает подкаталог, как это обычно принято. Приведенные ниже команды поместят установочные файлы куда следует. Если у вас дистрибутив Ubuntu, прочитайте файлик INSTALL. Там написано, какие команды следует вводить вместо показанных ниже chkconfig (это для моей Fedora).

Параметр getlogsize, переданный команде ramlog, выводит текущий размер каталога /var/log. Далее необходимо должным образом выбрать размер виртуального диска в ОЗУ, чтобы на него поместились логи. Если ротация лог-файлов в вашей ситеме производится с помощью средства logrotate, тогда следует прибавить ориентировочно 30-50% к текущему размеру логов - и этого наверняка будет достаточно. Если вы не укажете размер диска сами, тогда программа создаст диск размера, который был заложен в вашем дистрибутиве. Для явного указания размера диска откройте файл grub.conf и добавьте параметр ramdisk_size=n, где n - количество килобайт виртуального диска. Мои логи занимают объем чуть больше 50 Мб, поэтому я создал виртуальный диск на 80 Мб.

Чтобы начать пользоваться Ramlog можно или перезагрузить компьютер, или остановить все программы, использующие каталог /var/log, запустить ramlog и перезапустить остановленные программы. Рекомендуется перезагрузка, ведь в этом случае будет учтен и изменившийся размер виртуального диска; если запускать Ramlog на рабочей машине, может получиться так, что на виртуальный диск не поместятся все логи. Следующая команда показывает, какие процессы используют каталог /var/log. В моем случае было запущено много демонов и система X Window, поэтому я предпочел перезагрузку. Если при загрузке ядра, использующего виртуальный диск, окажется, что он слишком мал, тогда Ramlog не запустится, каталог /var/log так и останется на жестком диске, и все будет работать так же, как и до установки Ramlog.

Если места хватает и служба ramlog включена, тогда при загрузке ядра каталог /var/log будет скопирован на этот виртуальный диск, а сам диск смонтирован в точку монтирования /var/log. Содержимое лог-файлов с жесткого диска все еще будут доступны в каталоге /var/log.hdd, так что в случае чего можно видеть их оба. К примеру, если вы хотите удалить файл, следует удалить его из /var/log.hdd, тогда при следующей загрузке он не будет загружен в виртуальный диск. Как показано ниже, каталог log.hdd расположен на LogVol LVM, а сам /var/log - на виртуальном диске в оперативной памяти - ram9.

Если хотите сохранить логи с виртуального диска на жесткий именно в данный момент, нужно выполнить команду service ramlog restart, от имени админстратора root.

Было бы неплохо, если бы ramlog использовал преимущества средства logrotate и оставлял старые logrotate-файлы на жестком диске, перенося на виртуальный диск лишь символьные ссылки на них. Таким образом был бы задействован меньший виртуальный диск - ведь пришлось бы сохранять лишь текущие активные логи. Надеюсь, разработчики Ramlog реализуют это в следующих версиях.

Заключение

Имея небольшой участок в оперативной памяти, занятый виртуальным диском, хранящим все ваши логи, вы будете уверены в том, что винчестер вашего ноутбука будет раскручиваться только по делу, а не подскакивать при каждом желании какого-либо демона записать что-либо в лог. Если у вас жесткий диск или флешка на ноутбуке и несколько гигабайт памяти, вполне можно пожертвовать 50-80 Мб оперативной памяти во имя спасения циклов записи диска.