Dateisystem UFS tunen

R

ralli

Guest
Seit Anfang des Jahres habe ich ja eine neue 1 TB Festplatte verbaut. Zur Zeit verwende ich das Dateisystem UFS. Nun fällt mir schon seit einiger Zeit auf, das die Festplatte öfters arbeitet, obwohl kein Tracking oder sonstige temporäre Indexierung sie ausbremst. Installiert ist der Mate Desktop. Nun habe ich mich ein wenig informiert, ob ich das Filesystem noch tunen kann, deshalb habe ich folgende Fragen:

Kann ich nachträglich soft-updates anlegen?

Und wenn, wie bitte?

Welcher Wert ist für

Code:
vfs.ufs.dirhash_maxmem

in der sysctl sinnvoll?
 
das macht man mit tunefs(8)
Erst ansehen, was man hat. Dabei sieht man exakt die Namen, die man dann auch per copy_and_paste einfügen kann, um neue Werte zuzuweisen.

Ich werde mal nachher meinen kleinen Asus anwerfen und eine Kopie meiner Settings für eine UFS SSD liefern, mit denen ich ganz zufrieden bin.
 
Danke @pit234a , natürlich habe ich mich auch selbst bemüht und im Netz recherchiert zu diesem Thema. Aber es gibt zu viele unterschiedlichen Aussagen, und ich kann nicht beurteilen, was richtig und was falsch ist.

Probehalber habe ich mal:

Code:
kern.maxfiles=16384
kern.maxfilesperproc=8192

in die /boot/loader.conf geschrieben und

Code:
vfs.ufs.dirhash_maxmem=67108864
vfs.read_max=32

in die /etc/sysctl.conf geschrieben.

Zumindest hab ich beobachtet, das gefühlt alles etwas schneller geht und die HD ruhig ist. Ob das so richtig ist, weiß ich nicht wirklich. Und mit tunefs muß ich mich erst mal einarbeiten. Gibt es da ein gutes Howto?
 
Hier mal aus meinem kleinen EEE, was ich damals nach einiger Probiererei und Lektüre für mich als gut empfunden habe, eine SSD, wie schon gesagt.
Code:
pit@eee ~:-> tunefs -p /dev/ada0s1a
tunefs: POSIX.1e ACLs: (-a)                                disabled
tunefs: NFSv4 ACLs: (-N)                                   disabled
tunefs: MAC multilabel: (-l)                               disabled
tunefs: soft updates: (-n)                                 enabled
tunefs: soft update journaling: (-j)                       disabled
tunefs: gjournal: (-J)                                     disabled
tunefs: trim: (-t)                                         enabled
tunefs: maximum blocks per file in a cylinder group: (-e)  2048
tunefs: average file size: (-f)                            16384
tunefs: average number of files in a directory: (-s)       64
tunefs: minimum percentage of free space: (-m)             8%
tunefs: space to hold for metadata blocks: (-k)            6408
tunefs: optimization preference: (-o)                      time
tunefs: volume label: (-L)                                 FreeBSD

meine komplette sysctl.conf auf diesem PC (32 Bit-System):
Code:
vfs.usermount=1
vfs.ufs.dirhash_maxmem=134217728
vfs.read_max=64

vm.swap_enabled=0

kern.ipc.shmmax=67108864
kern.ipc.shmall=32768
kern.ipc.shm_allow_removed=1
und
Code:
pit@eee ~:-> cat /boot/loader.conf 
autoboot_delay="4"
loader_logo="beastie"

kern.maxfiles="50000"
kern.vty=vt

fuse_load="YES"

pit@eee ~:-> cat /etc/fstab
# Device	Mountpoint	FStype	Options	Dump		Pass#
/dev/ada0s1a	/		ufs	rw,noatime		1	1
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
Es ist die einzige Platte im Gerät, das System liegt also dort und mein Augenmerk lag darauf, Zugriffe möglichst gering zu halten. Die Platte ist im gebooteten System quasi nicht mehr aktiv, wenn nicht ein Browser oder E-Mail-Programm von Zeit zu Zeit was erledigen.
 
Code:
tunefs -p /dev/ada0s1a

ergibt bei mir:
Code:
tunefs: POSIX.1e ACLs: (-a)                                disabled
tunefs: NFSv4 ACLs: (-N)                                   disabled
tunefs: MAC multilabel: (-l)                               disabled
tunefs: soft updates: (-n)                                 enabled
tunefs: soft update journaling: (-j)                       enabled
tunefs: gjournal: (-J)                                     disabled
tunefs: trim: (-t)                                         disabled
tunefs: maximum blocks per file in a cylinder group: (-e)  4096
tunefs: average file size: (-f)                            16384
tunefs: average number of files in a directory: (-s)       64
tunefs: minimum percentage of free space: (-m)             8%
tunefs: space to hold for metadata blocks: (-k)            6408
tunefs: optimization preference: (-o)                      time
tunefs: volume label: (-L)

Soft update und Journaling sind demnach bereits durch die Grundinstallation aktiviert. Die Werte in loader.conf und sysctl.conf habe ich meinen Bedürfnissen angepaßt. Nochmals Danke für Deine Unterstützung @pit234a , es war sehr hilfreich.
 
Ich würde kein Jounaling nutzen.
Desweiteren sind die Angaben zu maxfiles/maxfilesperproc für deine Wünsche irrelevant.

Wenn du sysctls explizit setzt, schau vorher erstmal, welchen Vorgabewert sie beim Booten erhalten haben.
Viele werden automagisch entsprechend des Arbeitsspeichers initialisiert.

Desweiteren gilt natürlich: Zum Vergleichen ändert man immer nur eine Variable, nicht mehrere.

Rob
 
Danke für die Aufklärung, @KobRheTilla , @Yamagi hat es hier schon falsche Partitionsgröße? beschrieben. Habe den Unsinn schon korrigiert. Auch die Variablen in der loader.conf habe ich herausgenommen, da sie von FreeBSD bereits sinnvoll vorbelegt sind. Warum soll ich kein Journaling benutzen? Ich weiß, das Du kompetent bist und sicherlich gute Gründe dafür hast. Würdest Du mir bitte verraten, warum Du Yournaling ablehnst? Ich kann es nämlich besser nachvollziehen, wenn ich es verstehe.
 
Danke Rob, selbst kann ich es nicht beurteilen, vertraue aber den Entwicklern von FreeBSD und denke, das sie schon wissen, was standardmäßig sinnvoll ist und das dementsprechend als Vorgabe bei der Grundinstallation umsetzen.
 
Danke Rob, selbst kann ich es nicht beurteilen, vertraue aber den Entwicklern von FreeBSD und denke, das sie schon wissen, was standardmäßig sinnvoll ist und das dementsprechend als Vorgabe bei der Grundinstallation umsetzen.
Halte ich grundsätzlich auch so. Steht diese Aussage aber nicht im Widerspruch zu deiner Ausgangsfrage?

Ich warte ja schon die ganze Zeit auf einen Post von @Yamagi ... Vielleicht kommt ja jetzt etwas? :ugly:;)
 
Danke Rob, selbst kann ich es nicht beurteilen, vertraue aber den Entwicklern von FreeBSD und denke, das sie schon wissen, was standardmäßig sinnvoll ist und das dementsprechend als Vorgabe bei der Grundinstallation umsetzen.
Auf einer 840 Pro ist SU+J keine gute Idee.
 
Ich warte ja schon die ganze Zeit auf einen Post von @Yamagi ... Vielleicht kommt ja jetzt etwas?

Softupdates Journaling (nicht zu verwechseln mit reinen Softupdates) sind darauf angewiesen, dass das Speichermedium die Wahrheit sagt. Wenn das System fragt "Hast du alle Daten ausgeschrieben, ist also nichts mehr in irgendwelchen Caches?" und es antwortet "Ja!" gibt es zwei Möglichkeiten. Sagt es die Wahrheit, ist alles gut. Lügt es aber und es nicht alles ausgeschrieben, arbeitet das Journal unter falschen Annahmen. Nach einen Crash wird das Journal zurückgespielt, das System denkt, es sei alles in Ordnung. In Wirklichkeit ist es das aber durch die Lüge des Speichermediums nicht. Die Folge sind dann eklige Crashes, zerstörte Dateien und so weiter.

Generell kann man guten Gewissens behaupten: Alle Endkunden-Hardware lügt, man sollte also kein Journaling nutzen. Nicht lügende Hardware findet man erst bei höherwertiger Server-Hardware, aber auch da sollte man genauer hinschauen. Im Übrigen ist das Einzige, was man durch abgeschaltetes Journaling verliert, das schnelle fsck nach einem Crash oder Stromausfall. Man muss dann halt ein paar Minuten länger warten.

Nachtrag: Journaling unter Linux ist eine ganz andere Baustelle. Das kommt auch mit lügenden Medien ausreichend gut klar.
 
Halte ich grundsätzlich auch so. Steht diese Aussage aber nicht im Widerspruch zu deiner Ausgangsfrage?

Ich warte ja schon die ganze Zeit auf einen Post von @Yamagi ... Vielleicht kommt ja jetzt etwas? :ugly:;)
Nun, auch nach 4 Jahren bin ich noch im Lernmodus. Bevor ich das Forum bemühe, habe ich immer auch im Netz recherchiert. Dort aber finde ich oft sehr widersprüchliche Aussagen für ein aktuelles Problem. Leider reicht mein technisches Wissen nicht aus, abzuschätzen, was nun das Richtige ist. Deshalb experimentiere ich oft auch auf der Basis von Versuch und Irrtum.... könnte mir viel Zeit sparen, wenn ich gleich einen kompetenten Experten aus unserer Community frequentiere, aber ich will auch niemanden zur Last fallen und versuche es zumeist mit einer gehörigen Portion Eigeninitiative.
 
ich möchte auch nochmal was einwerfen.

Du fragst ja nach UFS tunen (ich meine, tunen kann auch im Sinn von anpassen generell gemeint sein und muss nicht unbedingt Verbesserung der Performance bedeuten) und das ist ein Thema und quasi alles, was damit zu tun hat, ist mit tunefs behandelt. Die man-page und das Handbuch sagen einem ein wenig was zu den einzelnen Optionen. Versuch und Irrtum sind hier recht kompliziert, denn zum Beispiel "tunefs: maximum blocks per file in a cylinder group: (-e) 4096" oder "tunefs: average file size: (-f) 16384" um nur mal zwei zu nennen, die sind erst nach ausdauernden Tests gegenüber anderen Einstellungen als "besser" oder "schlechter" herauszufinden.
Du sagst aber auch, dass dich die (vermutlich) unsinnige Festplattenaktivität stört.
Zunächst, eine Festplatte mit Aktivität ist kein direktes Zeichen dafür, dass sie eine schlechtere Performance hat. Man muss sich das nicht so vorstellen, dass die nun mit etwas anderem beschäftigt ist und deshalb keine Zeit für dich und deine Anforderungen hat. Gerade in FreeBSD ist das Datenmanagement ziemlich ausgebufft und es kann schnell hin und hergeschaltet werden und etwa Hintergrundvorgänge, wie Dateisystem-Checks, werden einfach einen Moment beiseite gelegt.
Natürlich kann ich sehr gut verstehen, dass unbegründete Festplattenaktivität stört. Mich selbst stört sie immer und ich habe zB das Gefühl, dass mein ZFS da auffälliger ist, als es UFS zuvor gewesen ist.
Auf dem kleinen Asus Netbook ist aber eine stille Platte (oder SSD) auch eine Frage der Batterielebensdauer und stand für mich auch deshalb ganz weit im Vordergrund meiner Bemühungen.
Und deshalb ist es wichtig, darauf hinzuweisen, dass die Mountoption noatime und das Verzichten auf einen SWAP sehr wichtige Bestandteile meiner Festplattenberuhigung sind, ebenso das Verwenden von tempfs. Hier ging ich früher sogar noch weiter und legte auch einzelne Verzeichnisse (etwa thumbnails und Browser-Daten) ins tempfs. Ausgereizt ist das also noch nicht bei mir, wie ich es oben zeigte und deshalb ist meine SSD nicht immer nur still, aber sie ist so gut wie meistens still und ich kann die wenige Aktivität zuordnen und akzeptieren.
Nochmal: mit Tuning von UFS hat das eher nicht viel zu tun, aber es steht im Zusammenhang mit deinem ersten Beitrag und den dort aufgeworfenen Punkten. Weniger Schreibverkehr zur Platte (insbesondere bei SSDs) ist dann insgesamt aber schon ein Performance-Plus (auch in Richtung Lebensdauer) und insofern gehört das dann irgendwo auch zu Tuning, wenn man es in diesem Sinne versteht.

Man sollte hier nur deutlich unterscheiden, damit man besser über die eigenen Bedürfnisse nachdenken kann.

Und dann gibt es Dienste, welche die Dateien auf einem PC indizieren um Suchen zu beschleunigen und ganz ähnliche andere Dinge, die wir vor allem im Zusammenhang mit großen DEs kennen und die irgendwer sich ausgedacht hat, um dem Anwender bei Problemen zu helfen, die eigentlich nicht existieren. So sehe ich das wenigstens. Wer solche Dienste benutzt (oft unbewusst), darf sich über Festplattenaktivität natürlich nicht wundern und kann tunen wie ein Weltmeister und wird keinen großen Erfolg damit haben. Deshalb gilt also immer, erst mal sehen, was denn da läuft und den Verkehr verursacht. Manchmal bringt es mehr, hier weniger einzuschalten, als am Dateisystem zu drehen.
Oft ist es aber nicht sehr einfach, etwas herauszufinden und dann auch noch abzustellen. Ich hätte mir da schon manchmal mehr Hilfe gewünscht, aber außer lsof und einigen ZFS-Tools kenne ich nur noch top, ps und pstree, um mir einen Überblick zu verschaffen. lsof ist cool, aber ich verzweifele oft, bis ich die passende Syntax aus der man-page wieder gefunden habe. Naja, mein Problem.
Also, man muss das eben wissen, ob man diverse Dienste nutzen möchte und damit auch zusätzliche Plattenaktivität einkauft, aber eben einen Dienst dadurch hat, dass die Platte aktiv wird oder ob es sich um einen unerwünschten Dienst handelt, der deshalb also eher lästig ist und lieber abgeschaltet gehört.
 
Bei mir läuft kein Suchdienst wie Tracker. Ich bin jetzt gerade etwas irritiert. Ich verstehe alles, finde aber nicht die Infos, die ich bräuchte. Einiges ist mir immer noch nicht ganz klar. Wird bei einer standardmäßigen Grundinstallation mit dem UFS Dateisystem Journaling aktiviert? Wenn nicht, ist ja alles OK. Wenn doch, wie und wo kann ich es deaktivieren, wenn es bei einer lügenden Hardware zu Problemen kommen kann. Im Handbuch habe ich leider nichts gefunden.
 
Habe es gerade selbst im Handbuch gefunden. Es dürfte dieses Kapitel sein:
18.8. UFS Journaling in GEOM - FreeBSD

Und damit wäre für mich ja geklärt, das das Journaling nicht standardmäßig mit einer Grundinstallation aktiviert und angelegt wird. Damit wäre für mich alles geklärt. Danke für Eure Unterstützung.
 
tunefs: soft update journaling: (-j) enabled
ist "böse".
tunefs: soft update journaling: (-j) disabled
ist "lieb".

Du willst diese journals nicht haben und kannst sie mit tunefs abschalten. Deshalb sagte ich mal, erst mit tunefs nachsehen, denn da stehen die Optionen quasi drin. Hier wäre also "tunefs -j disable ..." der Ausschalter und "tunefs -j enable..." der Einschalter.
Das geht ganz genauso bei den anderen Optionen, bzw muss manchmal ein Wert eingetragen werden und nicht enable oder disable entschieden werden.

tunefs: soft updates: (-n) enabled
ist gut.

tunefs: gjournal: (-J) disabled
ist auch gut.
 
Generell kann man guten Gewissens behaupten: Alle Endkunden-Hardware lügt, man sollte also kein Journaling nutzen. Nicht lügende Hardware findet man erst bei höherwertiger Server-Hardware, aber auch da sollte man genauer hinschauen. Im Übrigen ist das Einzige, was man durch abgeschaltetes Journaling verliert, das schnelle fsck nach einem Crash oder Stromausfall. Man muss dann halt ein paar Minuten länger warten.

Nachtrag: Journaling unter Linux ist eine ganz andere Baustelle. Das kommt auch mit lügenden Medien ausreichend gut klar.
Ich habe ja nicht wirklich Ahnung. Aber es kam schon des Öfteren vor, dass ich mir dachte "warum macht man eigentlich nicht..." und irgendwann baut das FreeBSD-Team das ein. Also denke ich jetzt einfach mal laut: Wäre es nicht möglich, 2 Journals schreiben zu lassen? In das erste wird alles geschrieben, was auf Dateisystemebene passiert. Sobald die Hardware die Frage "wurde das geschrieben?" bestätigt fliegt es aus Journal1 raus und landet in Journal2. Jetzt crasht das System. fsck prüft zuerst Journal2 ob die Daten tatsächlich geschrieben wurden. Danach kommt Journal1 dran und schreibt alle Daten, die ganz sicher noch nicht geschrieben sind.

Vermutlich stelle ich mir das aber "viel zu einfach" vor. ;)
 
@Columbo0815
UFS ist viel zu alt und aus der Mode, als dass da noch irgendwas positiv dran entwickelt werden würde, denke ich jedenfalls.
Von allen altmodischen Dateisystemen dürfte EXT4 die Krone der Schöpfung sein und auch da sehe ich die Weiterentwicklung etwas gestört, es kann alles, was man immer wollte und macht das auch gut.
ZFS und BTRFS als moderne Dateisysteme sind für die Entwickler offenbar viel interessanter.
Daneben gibt es noch einen gewissen Bedarf für spezielle Systeme im Embedded Bereich.

Ah, was sagte ich da gerade wegen alt und so: NTFS lebt auch immer noch und macht auch genau, was es soll und nicht mal schlecht.
 
Und damit wäre für mich ja geklärt, das das Journaling nicht standardmäßig mit einer Grundinstallation aktiviert und angelegt wird.
Das ist ein anderes Journaling via GEOM, nicht das UFS-eigene Journal.
IMHO richtet der Installer immer SU+J ein.

Noch was zum Nachdenken: Du gehst davon aus, dass die "FreeBSD-Entwickler" schon das richtige machen. Das nehme ich generell auch an, allerdings gibt es die FreeBSD-Entwickler gar nicht. Diejenigen, die am neuen Installer geschrieben haben, haben das einfach festgelegt, dass sie SU+J aktivieren. Wenn man das mal auf einer passenden Mailingliste ansprechen würde, gäbe es sicherlich viele, die dagegen wären.

Rob
 
Ich sehe das genau so wie @pit234a, ZFS scheint mir mittlerweile optimiert zu sein (auch für weniger RAM) und arbeitet bei mir deutlich schneller als UFS, und das obwohl ich nur 2 GB RAM habe. Das kann und will ich nicht ignorieren. Deshalb habe ich FreeBSD neu installiert mit ZFS und bin damit rundherum zufrieden. Selbst die Installation verlief absolut schneller, als mit UFS. Und nicht nur gefühlt.
 
Es gibt gerade ein großes Projekt, bzw. die Planung eines Projektes, in Hinsicht auf immer mehr embedded Anwendungen noch mal in UFS zu investieren. In Sachen Geschwindigkeit ist da nichts mehr zu holen, das Ding ist ausoptimiert. Aber gerade hinsichtlich Zuverlässigkeit gibt es da noch Potential. Wie weit sich das letztendlich materialisiert wird man schauen müssen.

Noch mal zum Thema: In Standardeinstellung wird bei jeder lesenden Operation auf eine Datei, egal ob der Zugriff zur Platte durchgeht oder durch den Cache abgefangen wird, die Access Time aktualisiert. Dadurch wird jeder lesende Zugriff zu einem Schreibzugriff. Bei Softupdates und sonst keiner schreibenden Last sammelt er die Änderungen über 30 Sekunden, schreibt sie auf einen Schlag aus und durch hörst die Platte einmal krackeln. Dagegen hilft direkt das Dateisystem mit 'noatime' zu mounten. Kann theoretisch Nebenwirkungen haben, da sich einige Anwendungen auf korrekte Access Times verlassen, im Jahr 2017 ist das aber eher akademisch. Ich würde es also mal probieren.

Ein großes Problem sind auch moderne Anwendungen. Firefox ist zum Beispiel ständig auf der Platte zugange, selbst wenn er gar nicht aktiv genutzt wird. Sylpheed schreibt bei jedem Abrufen der Mails in seine Daten. Und so weiter. Da kann es helfen sich mal in 'top -m io' die READ und WRITE Spalten im Blick zu halten, um Übeltäter zu finden. READ sind lesende Zugriffe, WRITE logischerweise schreibende Zugriffe.
 
Auf jeden Fall ist jetzt mit ZFS Ruhe im Karton, hier rödelt nichts mehr (oder kaum). Und Firefox nutze ich eh nicht mehr, nehme Midori, reicht für meine Zwecke. Hab auch einen Browser mit QT5 entwickelt, ist resourcensparend und kann auch alles, was man so braucht, aber eben ohne addons. Aber dafür muß auch wieder Qt5 installiert sein. Ich möchte mich langsam von Riesen Paketen verabschieden. So einfach wie möglich, so funktional wie nötig ist einer meiner Grundsätze.
 
Danke allen Beteiligten für diesen Thread, habe wieder einiges gelernt. :)
 
Auf jeden Fall ist jetzt mit ZFS Ruhe im Karton

zfskern ist wohl der Übeltäter, den ich bei mir ausmache und der in recht beharrlicher Regelmäßigkeit Pakete liest und schreibt, obwohl eigentlich tatsächlich Ruhe herrschen könnte. Natürlich laufen bei mir auch die anderen Verdächtigen und sorgen für geringen Datenverkehr, aber eben auch dieser zfskern immer wieder dazwischen und auch, wenn ich nichts gestartet habe, was ich für verdächtig halte. Nun vermute ich aber, dass zfskern etwas ZFS-internes ist, also nicht bei UFS erscheinen wird und auch keinem anderen Prozess zugeordnet werden kann.
Deshalb, aber nicht nur deshalb, ist für mich UFS (oder EXT4 in der Linux-Welt) noch immer nicht obsolet und ich nehme bei weitem nicht überall und immer ZFS oder BTRFS.

Yamagi hat es ja schon angesprochen, Embedded-Systeme brauchen etwas vollkommen anderes und kein ZFS. Die Betonung ist hier anders und deshalb haben wir auch einige spezielle Dateisysteme für besondere Aufgaben. Wenn ich nun ein kleines Netbook betreibe und als Desktop-PC verwende, dann ist das nicht vergleichbar mit einem "echten" PC. Für mich sind die Anforderungen hier schon Embedded-ähnlich. Das Ding wird eingeschaltet, soll schnell booten, ich erledige meine Arbeit und schalte wieder aus. Mein PC läuft immer. Während das Netbook gebootet ist und ich damit arbeite, sollen keine unnötigen Prozesse im Hintergrund laufen, keine automatischen Updates oder Filesystemchecks oder was weiß ich was es alles so gibt. Ich halte da ein ZFS nach wie vor nicht für angebracht, vor allem nicht auf SSDs. Und ein Grund ist, dass es bei ZFS ja quasi keine Optionen gibt, die ich beeinflussen könnte. Es gibt kein noatime, kein disable für Journals etc.
So würde ich auch niemals ein ZFS nehmen, um damit ein System auf einen USB-Stick zu installieren.

Jedenfalls bin ich froh, dass ich wählen kann. Auch, wenn Andere natürlich auch anders wählen.
 
Zurück
Oben