Kaskadierung von md

suiyuan

Well-Known Member
Morgen,

habe folgendes Problem: Auf einem raspberry werden die Verzeichnisse für die log-Dateien in Form von Ram-Disks geführt, um die SD-Karte nicht allzuschnell abzunutzen.

Ursprünglich war es so:

md /tmp mfs rw,noatime,-s50m 0 0
md /var/log mfs rw,noatime,-s15m 0 0
md /var/tmp mfs rw,noatime,-s12m 0 0


Dies hatte die unschöne Folge, daß webmin nicht mehr startet weil /var/log/webmin nicht existiert. Wenn /var/log neu angelegt wird beim Neustart fehlt das Unterverzeichnis webmin...

Also machte ich

md /tmp mfs rw,noatime,-s50m 0 0
# md /var/log mfs rw,noatime,-s15m 0 0
md /var/tmp mfs rw,noatime,-s12m 0 0

und legte in /var/log ein Verzeichnis webmin an. Jetzt sind allerdings alle logs auf der Karte drauf, was mir nicht gefällt.

Warum also nicht /var/log/webmin als vierte Ramdisk machen? Pustekuchen. Die folgende Konfiguration bootet gar nicht:

md /tmp mfs rw,noatime,-s50m 0 0
md /var/log mfs rw,noatime,-s15m 0 0
md /var/log/webmin mfs rw,noatime,-s15m 0 0
md /var/tmp mfs rw,noatime,-s12m 0 0

Wie kann ich dennoch alle Logs im RAM speichern?
 
Problem hat sich erledigt.

Lösung:

/etc/rc.conf:

[cce_bash]
mdconfig_md0="-t swap -s 32m"
mdconfig_md1="-t swap -s 32m"
mdconfig_md1_cmd="mkdir -p /var/log/webmin"
mdconfig_md2="-t swap -s 32m"
[/cce_bash]

/etc/fstab:

/dev/md0 /tmp ufs rw 0 0
/dev/md1 /var/log ufs rw 0 0
/dev/md2 /var/tmp ufs rw 0 0
 
welchen Vorteil hat es denn, statt tmpfs immer noch md-Geräte zu benutzen und diese in UFS anzulegen?
Bei mir läuft tmpfs seit Jahren vollkommen stabil und ich finde es einfacher zu handhaben.

Das hier geschilderte Problem hätte es nicht vermieden.
Ich hätte da ein Startup-Script genommen und nach erstellen von /var/log erst /var/log/webmin angelegt. Auf dem md-Device (bzw im tmpfs) landet das dann ja automatisch auf der Ram-Disk.
Statt statischer Größen lasse ich auch dynamische Nutzung zu. Das ist natürlich riskant, wenn mal was aus dem Ruder läuft und meinen RAM zukleistert. Auf meinen Systemen habe ich damit aber absolut noch nie Probleme gehabt.
 
Das war nur schnell hingesaut und ich wußte es auch nicht besser... Wenn es eine andere Lösung gibt die weniger Gefrickel ist probier ich das gerne aus.

@pit234a wie ginge das denn alternativ?

Also wo genau müsste das Startup-Script hin damit es mit tmpfs funktioniert?
 
Wie tmpfs geht, kannst du in der man-page nachlesen. Das Modul muss nicht mehr separat geladen werden, FreeBSD macht das automatisch. Die Einträge in meiner fstab sehen so aus:
Code:
tmpfs        /tmp            tmpfs    rw,mode=1777    0    0
tmpfs           /var/log            tmpfs   rw,mode=1777    0       0
tmpfs           /var/run            tmpfs   rw,mode=1777    0       0
tmpfs           /var/tmp            tmpfs   rw,mode=1777    0       0
Ich nutze noch nach alter Sitte ein Script in /usr/local/etc/rc.d, um beim Systemstart einige Dinge zu setzen und auszuführen (alle ausführbaren Dateien in diesem Verzeichnis werden beim Systemstart ausgeführt). Wenn das startet, ist das tmpfs schon lange aktiv, aber trotzdem würde ich vor einem mkdir noch nachsehen, ob dem tatsächlich so ist (etwa mount abfragen oder einfach nachsehen, ob das übergeordnete Verzeichnis bereits existiert).
Heute würde man so etwas eher in der /etc/rc.local machen, aber, das habe ich selbst noch nie getan.

Man kann mit tmpfs auch maximale Größen vorgeben und weitere Optionen setzen. Am Besten mal die man-page überfliegen.
 
lass mich nur ein sehr simples Beispiel für eine entsprechende Zeile in einem Script noch mitgeben:
Code:
[ -d /var/log ] && mkdir -p /var/log/weblog
oder in der Art. Ich bin kein erfahrener Schreiber von Scripts und muss immer wieder nachlesen, wenn es was zu schreiben gibt. Aber mit der Zeile oben dürftest du schon nicht so verkehrt liegen.
 
mdconfig_md1="-t swap -s 32m"
mdconfig_md1_cmd="mkdir -p /var/log/webmin"

Damit legst du das Verzeichnis /var/log/webmin an, du brauchst also nicht noch eine weitere Ramdisk angelegen und die dort mounten. Das Problem war ja, dass Webmin nicht startet, wenn das Verzeichnis fehlt.

Ich würde auf so einem kleinen Gerät überhaupt nicht loggen. Also Webmin stumm schalten und syslog für alles andere nach /dev/null.

Rob
 
Zurück
Oben