IPCop MKFlash
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! ![]()
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: $ERROR\n" 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.downDies 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. ![]()
Jetzt fragt Ihr Euch sicherlich, warum das soviel ausmacht...
Beide Einträge erzeugen reichlich Schreibzugriffe auf der CF-Karte.

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:
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:
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:
Schreibzugriffe auf CF-Karte minimieren
Modifiziertes mkflash
Vorgefertigte Images für Compact Flash Karten
Modifiziertes mkflash von zisoft
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. ![]()
...to be continued...
Nach oben
