Re: mfs, memory file system

From: Oliver Fromme <olli(at)dorifer.heim3.tu-clausthal.de>
Date: Thu, 10 Sep 1998 18:17:05 +0200 (CEST)

Stefan Huerter wrote in list.de-bsd-questions:
> Ich habe mal angefangen mit dem mfs rumzuspielen, als Test dient mir
> folgender Eintrag in der /etc/fstab:
> /dev/sd1s2b /tmp mfs rw,-s40000,-Tminimum,-b4096,-f512,-i20000 0 0
>
> in den Anmerkungen steht, daß das swap-device entsprechend umlegt, und der
> Standardeintrag mit swap als mount-option (??) austrägt.

Ähm, das mußt Du mißverstanden haben. MFS benutzt lediglich
swap, aber es ersetzt ihn in keinster Weise. (Übrigens sollte
Dein MFS nicht größer sein als der vorhandene Swap-Space,
sonst wird es Ärger geben, sobald der Swap zur Neige geht.
Hingegen kann das MFS problemlos größer sein als der vorhandene
physikalische RAM.)

"mount_mfs" ist mehr oder weniger ein ganz normaler Prozeß,
der den Inhalt des MFS als Prozeßdaten hält; daher zeigt ihn
top auch mit der entsprechenden Größe an. Dies hat auch den
Nachteil, daß der Prozeß niemals kleiner wird, auch wenn Du
Sachen aus dem MFS löschst; im Notfall hilft dann nur das
unmounten (wobei mount_mfs terminiert).

Hier sind die relevanten fstab-Zeilen von einer Kiste hier:

/dev/sd0s1b none swap sw 0 0
/dev/sd0s1e none swap sw 0 0
/dev/sd0s1b /tmp mfs rw,nosuid,-s=204800 0 0

Das sind zwei Swap-Partitionen zu je 100 Mb, und ein MFS von
100 Mb. Das MFS nutzt _beide_ swap-Partitionen, obwohl nur
eine angegeben ist (Erklärung folgt weiter unten). "mount_mfs"
hat keinerlei Einfluß darauf, wann und wohin es geswappt wird.
(Die e-Partition war früher mal ein UFS-/tmp. Seit der Umstel-
lung auf MFS gehen einige Dinge erheblich flotter. ;-)

Ein anderes Beispiel. Dies ist von einer "diskless" Kiste,
die auf NFS swappt. Hat etwas gedauert, bis ich herausgefunden
habe, wie man in dem Fall ein MFS anwirft...

/dev/zero /tmp mfs rw,nosuid,-s100000,-Tminimum 0 0

Hier steht kein swap in der fstab (darum kümmert sich der
Kenel schon beim diskless-Booten). Da es kein swap-Device
gibt, gibt man halt irgendein Device an, und teilt per
-Tminimum den Disktyp mit, damit er nicht versucht, ihn aus
dem Device zu lesen. Dies ist ein Überbleibsel der Tatsache,
daß das MFS eigentlich nur ein vergurktes UFS ist, denn eigent-
lich wäre der Disktyp für ein "richtiges" MFS nicht notwendig
(schließlich sagt man ihm mit -s, wie groß das ganze sein
soll, und mehr muß er nicht wissen).

Auch bei einem Rechner mit normalem (lokalem) swap kann man
diesen Trick benutzen (/dev/zero und -Tminimum). Wäre viel-
leicht sogar eine gute Idee, denn es vermeidet den (falschen)
Eindruck, mount_mfs würde irgendetwas mit dem swap-Device tun.

> - Das mfs-fs ist eine statische Größe, gibt es Bestrebungen, like Solaris,
> daß das /tmp nicht nur den Speicher nutzt (falls allozierbar), sondern
> auch das swap-device?

Genau das tut mount_mfs. Da es ein normaler Prozeß ist, wird
er rausgeswappt (bzw. -gepaged), sobald es erforderlich ist.

> - wo ist mein swap-device geblieben?

Weg. :-) Wie gesagt, das solltest Du unbedingt wieder in die
fstab aufnehmen.

> - wie mache ich das mit mehreren swap-devices?

Das erfordert keine weiteren Maßnahmen, da es mount_mfs ziem-
lich egal ist, wo er hingeswappt wird. Siehe auch das erste
Beispiel -- dort könnte das MFS auch ohne weiteres 150 Mb groß
sein. Welches swap-Device man in der ersten Spalte angibt, ist
völlig egal, da mount_mfs ohnehin keinen Einfluß darauf hat, wo
es hingeswappt wird. Für den Swapper/Pager ist es ein Prozeß
wie jeder andere. "mount_mfs" benutzt die Angabe des Devices
lediglich, um den Disktyp festzustellen (sofern man nicht -T
benutzt) und gleich wieder zu vergessen. ;-)

Noch ein Hinweis (hat mich einige Stunden Kopfzerbrechen ge-
kostet): Das MFS wird durch /etc/rc angeworfen, und für dieses
gelten die Limits des Abschnitts "daemon" in /etc/login.conf.
Wenn Du also ein 100 Mb MFS anlegen möchtest, daemon aber nur
eine "datasize" von 64 Mb hat, dann wird das MFS nu ca. 60 Mb
groß (64 Mb minus Verwaltungsdaten). Blöderweise passiert das
stillschweigend, ohne Fehlermeldung oder Log-Eintrag...

Gruß
   Oliver

PS: Ja, MFS müßte mal komplett neu geschrieben werden. :-]

-- 
Oliver Fromme, Leibnizstr. 18/61, 38678 Clausthal, Germany
(Info: finger userinfo:olli(at)dorifer.heim3.tu-clausthal.de)
"In jedem Stück Kohle wartet ein Diamant auf seine Geburt"
                                         (Terry Pratchett)
Received on Thu 10 Sep 1998 - 18:17:32 CEST

search this site