Монтировать блочное устройство как /var/log во время запуска

Я хотел бы использовать блочное устройство для хранения содержимого /var/log папка. Драйвер блочного устройства с поддержкой оперативной памяти, который я использовал, тот же, что и в этой ссылке.

Этот создает устройство /dev/rb, Я хотел бы знать, что мне нужно сделать, чтобы: (1) отформатировать его как ext3fs и (2) смонтировать как /var/log, Это необходимо сделать во время запуска системы.

Успешный тест: различные файлы сообщений ядра хранятся на устройстве памяти, которое я создал.

Спасибо за помощь!

1 ответ

Все это должно быть выполнимо в /etc/rc.local файл запуска, который запускается в конце каждого уровня запуска.

Чтобы смонтировать в /var/log, вам нужно остановить любой процесс, у которого есть файлы, открытые в каталоге log, смонтировать и затем перезапустить их. Мое предложение было бы добавить следующую строку к вашему rc.local скрипт, поэтому он запускается при загрузке:

    lsof | grep /var/log | awk '{ print $1 }' | uniq > /root/logs_open

lsof перечисляет все открытые файлы. Затем мы отфильтровываем все строки, которые не ссылаются на / var / log (grep /var/log). Мы печатаем только первый столбец (имя процесса) результата (awk '{ print $1 }'), сохраняя только одну копию каждого (uniq) и отправка вывода в файл (> /root/logs_open). Вам нужно будет что-то добавить в файл запуска, чтобы остановить эти процессы перед монтированием раздела и перезапустить их после слов. Получив эту информацию, удалите эту строку из rc.local, и мы можем начать.

Во-первых, нам нужно сделать все, что вам нужно, чтобы создать виртуальный диск. Может быть, вы делаете сценарий для этого.

/root/create_ramdisk.sh

Чтобы создать файловую систему ext3, вы запускаете:

mkfs.ext3 /dev/rb

Затем остановите любой процесс, который регистрирует.

service apache2 stop

Теперь мы можем смонтировать на / var / log

mount /dev/rb /var/log

Запустите обратно процессы, которые мы остановили ранее

service apache2 start

Наконец, rc.local должен выйти со статусом 0, иначе произойдут плохие вещи.

exit 0

rc.local сценарий:

/root/create_ramdisk.sh # example purposes only
mkfs.ext3 /dev/rb # create the filesystem
system apache2 stop # stop processes with open log files
mount /dev/rb /var/log # mount
system apache2 start # restart anything we stopped before
exit 0 # important!!! rc.local must exit successfully or Bad Things (tm) happen

Надеюсь, это поможет.

Другие вопросы по тегам