IPCop MKFlash v1.4.x

Im deutschen IPCop-Forum treten immer wieder viele Fragen rund um das Thema MKFlash auf…

Aber erst mal vorne weg: „Was ist eigentlich MKFlash?“

Mit Hilfe von MKFlash bekommt man eine optimierte IPCop-Installation für die Verwendung auf einer CF-Karte. Ohne dieses nützliche kleine Helferlein gäbe es sehr viele Schreibzugriffe auf die CF-Karte und diese wäre aufgrund beschränkter Schreibzugriffe recht schnell hinüber.

Im Forum gibt es dazu einen Thread, der aber mittlerweile sehr sehr lang und unübersichtlich geworden ist. Deshalb habe ich hier mal versucht, alles Wissenswerte zusammenzufassen.

Diese FAQ setzt eine vollständige Installation auf CF-Karte vorraus!

Siehe dazu auch die Links unter Punkt 5.

Weiterhin sei gesagt, dass dies hier zum einen der Fehlersuche und zum anderen dafür gedacht ist, die CF-Karteninstallation noch zu „verfeinern“ und auf seine speziellen Bedürfnisse anzupassen!

 

1. Grafik für Schreibzugriffe anpassen

Um CF-Karten taugliche Grafiken für die Schreibzugriffe zu bekommen, muß man in der Datei /usr/local/bin/makegraphs folgende Modifikationen vornehmen. Diese putzen erstmal die Lesezugriffe aus der Grafik, welche nicht wirklich interessant sind! icon_wink.gif

sub updatediskgraph {
   my $period    = $_[0];

   RRDs::graph ("$graphs/disk-$period.png",
	  "--start", "-1$period", "-aPNG", "-i", "-z",
	  "--alt-y-grid", "-w 600", "-h 100", "-l 0", "-r",
	  "--color", "SHADEA#EAE9EE",
	  "--color", "SHADEB#EAE9EE",
	  "--color", "BACK#EAE9EE",
	  "-t $tr{'disk access per'} $tr{$period}",
#      "DEF:read=$rrdlog/disk.rrd:readsect:AVERAGE",
      "DEF:write=$rrdlog/disk.rrd:writesect:AVERAGE",
#      "AREA:read#0000FF:$tr{'sectors read from disk per second'}\j",
      "STACK:write#00FF00:$tr{'sectors written to disk per second'}\j",
      "AREA:write#00FF00:$tr{'sectors written to disk per second'}\j",
#      "GPRINT:read:MAX:$tr{'maximal'} $tr{'read sectors'}\:%8.0lf",
#      "GPRINT:read:AVERAGE:$tr{'average'} $tr{'read sectors'}\:%8.0lf",
#      "GPRINT:read:LAST:$tr{'current'} $tr{'read sectors'}\:%8.0lf\j",
      "GPRINT:write:MAX:$tr{'maximal'} $tr{'written sectors'}\:%8.0lf",
      "GPRINT:write:AVERAGE:$tr{'average'} $tr{'written sectors'}\:%8.0lf",
      "GPRINT:write:LAST:$tr{'current'} $tr{'written sectors'}\:%8.0lf\j");         
   $ERROR = RRDs::error;
   print "Error in RRD::graph for disk: $ERRORn" if $ERROR;
}

Wenn man jetzt noch die „Spitzen“ aus der Grafik entfernen will, muß man noch die folgende Zeile

"--alt-y-grid", "-w 600", "-h 100", "-l 0", "-r",

abändern in

"--alt-y-grid", "-w 600", "-h 100", "-l 0", "-u 0.5", "-r",

 

2. Wie findet man heraus, wer oder was auf meine CF-Karte schreibt?

Um nun herauszufinden wer oder was die Schreibzugriffe auf der CF-Karte verursacht, bietet sich z.B. der folgende Befehl an:

find / -mmin -100 | grep -v "/ram" | grep -v "/proc"

Wobei hier das -100 die Zeit in Minuten ab dem aktuellen Zeitpunkt zurück bedeutet.

 

3. Die F(crontab) / Anpassungen

Die beiden Einträge, die in Zusammenhang mit MKFlash von Bedeutung sind, sind Folgende: (anzuzeigen mit fcrontab -l, zu ändern mit fcrontab -e)

# Log rotation
22 2 * * *      /usr/sbin/logrotate /etc/logrotate.conf

# Backup logs to flashdisk
32 2 * * 0      [ -f "/etc/FLASH" ] && /etc/rc.d/rc.flash.down

Dies ist ein Auszug aus meiner (F)Crontabelle!

Der erste Eintrag bewirkt, dass täglich um 2.22 Uhr die Logdateien rotiert werden. Näheres dazu dann im nächsten Abschnitt dieser FAQ.

Der zweite Eintrag bewirkt, dass jeden Sonntag um 2.32 Uhr der Inhalt der Ramdisk (also Log-Dateien, Grafiken…) in komprimierter Form auf die CF-Karte zurückgeschrieben werden.

Wie oft und wann das jeweils geschehen soll, muß jeder selbst entscheiden. Das kommt auf die individuellen Bedürfnisse und auf die „Wichtigkeit“ der LOG-Dateien an!
Wem es also „egal“ ist, dass die Log-Dateien von z.B. einer Woche durch einen Stromausfall verloren gehen, der kommt mit meiner Einstellung ganz gut zurecht. icon_wink.gif

Jetzt fragt Ihr Euch sicherlich, warum das soviel ausmacht…
Beide Einträge erzeugen reichlich Schreibzugriffe auf der CF-Karte.

FAQ MKFlash

Um das zu verhindern/zu minimieren sind die Anpassungen an dieser Stelle sehr entscheidend!

Näheres zur Funktion der (F)crontab findet sich z.B. hier:

Pfeil rechts Fcron Dokumentation

 

4. Logrotate / Anpassungen

Hier als Beispiel mal meine logrotate.conf: (Anzuzeigen mit cat /etc/logrotate.conf, anzupassen mit z.B. vi /etc/logrotate.conf)

Hilfe zu vi findet sich z.B. hier: Pfeil rechts Gute, deutsche Kurzanleitung für den Editor „vi“

# rotate log files daily
daily

# keep 3 days worth of backlogs
rotate 3

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
compress

size=2M

# wtmp
/var/log/wtmp {
	weekly
	create 0664 root utmp
	rotate 1
}

/var/log/httpd/access_log /var/log/httpd/error_log /var/log/httpd/ssl_request_log /var/log/httpd/ssl_engine_log {
	missingok
	sharedscripts
	size=2M
	postrotate
		/bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
	endscript
}

/var/log/snort/alert  {
	weekly
	copytruncate
	compress
	ifempty
	missingok
	postrotate
		/usr/bin/find /var/log/snort -path '/var/log/snort/[0-9]*' -prune -exec /bin/rm -rf {} ;
		/usr/bin/find /var/log/snort -name 'snort.log.*' -mtime +28 -exec /bin/rm -rf {} ;
		/usr/local/bin/restartsnort
	endscript
}

/var/log/squid/access.log /var/log/squid/user_agent.log /var/log/squid/referer.log {
	weekly
	copytruncate
	ifempty
	missingok
}

/var/log/squid/cache.log {
	weekly
	rotate 3
	copytruncate
	compress
	missingok
}

/var/log/squid/store.log {
	weekly
	rotate 3
	copytruncate
	compress
	missingok
	postrotate
		/bin/chmod -R ugo+rX /var/log/squid
		/usr/sbin/squid -k rotate
	endscript
}

/var/log/messages /var/log/boot.log /var/log/dhcpcd.log {
	create 664 root syslogd
	sharedscripts
	size=2M
	missingok
	ifempty
	postrotate
		/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
	endscript
}

Entscheidend sind hier mehrere Dinge:

1. Die Häufigkeit der Rotation:
in meinem Beispiel daily.

2. Wie lange sollen die LOG-Files aufgehoben werden?
In meinem Beispiel 3 Tage (rotate 3)

3. Maximale Größe der LOG-Files:
in meinem Beispiel 2 MB (size=2M).
Dies findet sich an mehreren Stellen in der /etc/logrotate.conf.

Auch hier gilt wieder, dass diese Einstellungen jeder für sich anpassen muß.

Dies ist abhängig von der Größe des RAMs (Ramdisk) und davon, wie lange die LOG-Files aufgehoben werden sollen!

 

5. Links zum Thema

Hier noch ein paar Links, die zum Thema passen:

Pfeil rechts Schreibzugriffe auf CF-Karte minimieren
Pfeil rechts Modifiziertes mkflash
Pfeil rechts Vorgefertigte Images für Compact Flash Karten
Pfeil rechts Modifiziertes mkflash von zisoft
Pfeil rechts Cop2CF von zisoft

 

Dies ist noch lange nicht alles, und ich werde es nach Bedarf auch noch erweitern. Aber mit diesen Hilfen sollte man zum größten Teil erstmal selbst auf Fehlersuche gehen können. icon_wink.gif
nach oben