Blockieren Sie das Gerät beim Start als / var / log

530
hebbo

Ich möchte das RAM-Blockgerät verwenden, um den Inhalt des /var/logOrdners zu speichern . Der ram-backed-Blockgerätetreiber, den ich verwendet habe, ist der gleiche wie in diesem Link .

Dieser erstellt das Gerät /dev/rb. Ich würde gerne wissen, was ich tun muss, um: (1) es als ext3fs zu formatieren und (2) als zu mounten /var/log. Dies muss während des Systemstarts erfolgen.

Erfolgreicher Test: Verschiedene Kernel-Meldungsdateien werden in dem von mir erstellten RAM-Gerät gespeichert.

Danke für die Hilfe!

0

1 Antwort auf die Frage

0
Peter Berbec

Dies sollte in der /etc/rc.localStartdatei möglich sein, die am Ende jedes Runlevels ausgeführt wird.

Um in / var / log zu mounten, müssen Sie jeden Prozess stoppen, der Dateien im Protokollverzeichnis geöffnet hat, mounten und dann neu starten. Mein Vorschlag wäre, Ihrem rc.localSkript die folgende Zeile hinzuzufügen, damit es beim Booten ausgeführt wird:

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

lsoflistet alle geöffneten Dateien auf. Dann filtern wir alle Zeilen heraus, die nicht auf / var / log ( grep /var/log) verweisen . Wir drucken nur die erste Spalte (Prozessname) des Ergebnisses ( awk '{ print $1 }'), behalten nur jeweils eine Kopie ( uniq) und senden die Ausgabe in eine Datei ( > /root/logs_open). Sie müssen der Startdatei etwas hinzufügen, um diese Prozesse zu stoppen, bevor Sie die Partition mounten, und starten Sie sie anschließend neu. Entfernen Sie mit diesen Informationen die Zeile von rc.local und wir können beginnen.

Zuerst müssen wir alles tun, um die Ramdisk zu erstellen. Vielleicht machen Sie ein Skript, um dies zu tun.

/root/create_ramdisk.sh 

Um ein ext3-Dateisystem zu erstellen, führen Sie Folgendes aus:

mkfs.ext3 /dev/rb 

Stoppen Sie anschließend jeden Prozess, der protokolliert.

service apache2 stop 

Jetzt können wir auf / var / log einbinden

mount /dev/rb /var/log 

Starten Sie die zuvor gestoppten Prozesse erneut

service apache2 start 

Schließlich muss rc.local mit dem Status 0 oder Bad Things ™ beendet werden.

exit 0 

rc.local Skript:

/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 

Ich hoffe das hilft.