podłącz urządzenie blokowe jako / var / log podczas uruchamiania

0

Chciałbym użyć urządzenia bloku pamięci RAM do przechowywania zawartości /var/log teczka. Używany przeze mnie sterownik urządzenia z blokowaniem pamięci RAM jest taki sam jak w tym połączyć .

Ten tworzy urządzenie /dev/rb. Chciałbym wiedzieć, co muszę zrobić, aby: (1) sformatować go jako ext3fs i (2) zamontować go jako /var/log. Należy to zrobić podczas uruchamiania systemu.

Pomyślny test: różne pliki komunikatów jądra są przechowywane w utworzonym przeze mnie urządzeniu RAM.

Dzięki za pomoc!

hebbo
źródło

Odpowiedzi:

0

Wszystko powinno być wykonalne w /etc/rc.local plik startowy, który jest uruchamiany na końcu każdego poziomu pracy.

Aby zamontować w / var / log, musisz zatrzymać dowolny proces, który ma pliki otwarte w katalogu dziennika, zamontować je i ponownie uruchomić. Moją sugestią byłoby dodanie następującej linii do twojego rc.local skrypt, więc działa przy starcie:

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

lsof wyświetla wszystkie otwarte pliki. Następnie odfiltrowujemy wszystkie linie, które nie odwołują się do / var / log ( grep /var/log ). Drukujemy tylko pierwszą kolumnę (nazwę procesu) wyniku ( awk '{ print $1 }' ), zachowując tylko jedną kopię każdego ( uniq ) i wysłanie wyniku do pliku ( > /root/logs_open ). Będziesz musiał dodać coś do pliku startowego, aby zatrzymać te procesy przed zamontowaniem partycji i zrestartować je po słowach. Mając te informacje w ręku, usuń ten wiersz z rc.local i możemy zacząć.

Po pierwsze, musimy zrobić wszystko, aby utworzyć ramdysk. Może zrobisz skrypt, aby to zrobić.

/root/create_ramdisk.sh

Aby utworzyć system plików ext3, uruchamiasz:

mkfs.ext3 /dev/rb

Następnie zatrzymaj proces, który się loguje.

service apache2 stop

Teraz możemy zamontować na / var / log

mount /dev/rb /var/log

Rozpocznij tworzenie kopii zapasowej procesów, które zatrzymaliśmy wcześniej

service apache2 start

W końcu rc.local musi wyjść ze statusem 0 lub zdarzyć się Bad Things ™.

exit 0

rc.local scenariusz:

/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

Mam nadzieję, że to pomoże.

Peter Berbec
źródło