Nach bad blocks suchen in UFS

bananenBrot

Well-Known Member
Hi!

Ich habe ein FreeBSD auf einer SD Karte laufen und möchte nun regelmäßig nach defekten Blöcken suchen.
Jetzt ist die einfachste Möglichkeit die mir einfällt ein
Code:
dd if=/dev/ad0 of=/dev/null bs=32k

Da kann ich dann die Fehlermeldungen einfach greppen.
Jetzt nun die Frage: Was kommen denn da für Fehlermeldungen?
Ich habe "leider" derzeit keine defekten Blöcke

Gruß
 
Du machst da ja nur lesende Zugriffe und siehst dann nur physikalisch defekte Stellen. Das halte ich nicht für Aussagekräftig genug. Es müsste gelesen und geschrieben werden und dann fragt man sich natürlich, ob das Sinn macht. Lieber greift man so wenig wie möglich auf die SD zu, noatime, journal und so weiter runterschrauben und viel in den RAM verlegen, tempfs nutzen und dort auch das Ein oder Andere hin linken und dann selten booten. Dann hält die schon ne Zeit.
 
Bei SD Karten wuerde ich versuchen NanoBSD(1) zu verwenden...damit sollten gar keine unnoetigen Schreibzugriffe mehr auf die SD stattfinden.

Dein beschriebener Test ist leider nicht aussagekraeftig, weil du auch schreibend zugreifen muessest...was die Lebenszeit einer SD noch mehr verringert.

An sonsten: Immer gute Backups haben.

(1) https://www.freebsd.org/doc/en/articles/nanobsd/
 
Du machst da ja nur lesende Zugriffe und siehst dann nur physikalisch defekte Stellen. Das halte ich nicht für Aussagekräftig genug.
Warum ist das nicht aussagekräftig? Genau das suche ich doch eigentlich :confused:
NanoBSD ist aber im allgemeinen eine gute Idee, scheinbar wird da gar nicht so viel an der FreeBSD Installation verändert wie ich befürchtet habe
 
Warum ist das nicht aussagekräftig? Genau das suche ich doch eigentlich :confused:
NanoBSD ist aber im allgemeinen eine gute Idee, scheinbar wird da gar nicht so viel an der FreeBSD Installation verändert wie ich befürchtet habe

Du suchst eigentlich Stellen, die sich nicht mehr zuverlässig beschreiben lassen. Das sind Stellen, die nicht zwischen dem Zustand für "1" und "0" wechseln können oder schnell wieder zurück fallen. Wenn du einfach nur ausliest, kannst du vielleicht einen Zustand "1" oder "0" von einer defekten Stelle lesen und hältst die fälschlich für OK, weil das Ergebnis des Auslesens logisch war. Ob es auch logisch richtig war und ob es auch zuverlässig geändert werden kann, erfährst du nicht. Fehler bekommst du mit dd nur bei unlogischen Werten, also bei Werten zwischen "0" und "1" oder darüber hinaus oder wenn der HW-Controller sonst etwas zu meckern hat.

Einmal hatte ich die Aufgabe "einen Drucker nachzubauen". Es ging um ein Gerät in dem ein altes Unix lief und das vom Hersteller nur für einen bestimmten Drucker ausgelegt war, den es nicht mehr gab und wo wegen gesetzlicher Vorschriften auch nicht etwas am System selbst verändert werden durfte. Statt Drucker nahm ich einen Alix-PC und installierte ein kleines FreeBSD auf eine SD-Karte. Das FreeBSD nahm den Druck an und wandelte ihn in einen lesbaren Text, der auf gewisse Dinge ausgewertet wurde und dann in einem Verzeichnis landete, das im Netz veröffentlicht war, so dass man darauf zugreifen und dann auch auf beliebige Drucker drucken konnte. Nun, das ist eigentlich egal, wichtig ist, dass das sensibler und für die Produktion wichtiger Vorgang war. Deshalb sorgte mich die SD-Karte. Das ganze sollte nur bis zu einer Neuanschaffung funktionieren, die innerhalb von sechs Monaten erfolgen sollte. Es lief dann ca 18 Monate und aus Neugier betrieb ich das dann auch noch eine Weile weiter, bis ich eine bessere Aufgabe für diesen Alix mit seiner SD-Karte hatte und ihn aus der Hand gab.
Das ist nicht so kritisch, wie es immer wieder gerne gesehen wird.
Vor allem, wenn man einige Vorsichtsmaßnahmen beachtet und wenig Zugriffe auf die Karte fährt.
Im Grunde wird sie nur beim Booten einmal lesend gebraucht und schreiben muss man eigentlich nie. Genau das macht NanoBSD auch, nur machen die das sogar ein wenig speziell und ausgefuchst, eben für embedded Systeme. Mit etwas Mühe bekommt man das auch in einem laufenden System recht gut hin. Es ist ja nicht nur bei SD-Karten sinnvoll, genauso bei USB-Sticks und ich wollte das auch auf Laptop und Notebooks immer so haben. Ich zeige mal einen Auszug aus einer solchen fstab:
Code:
/dev/ufs/FreeBSD	/                       ufs     rw,noatime      1       1

tmpfs                   /tmp                            tmpfs           rw,mode=1777    2       0
tmpfs                   /var/run                        tmpfs           rw,mode=1777    2       0
tmpfs                   /var/log                        tmpfs           rw,mode=1777    2       0
Schon alleine damit hält sich die Platte recht ruhig. Ob weitere Sachen auf tmpfs gelegt werden können muss man sehen und wenn die logs umfangreich werden, muss man natürlich daran denken. Mittels tunefs kann dann noch soft update journaling disabled werden und für auto-fsck ein guter Rhythmus gefunden werden.
 
Danke für die Aufklärung
Ich denke, das ist der beste Kompromiss.
Wobei ich die logs wahrscheinlich einfach auf einen USB Stick umleiten werde.
Und Journaling abschalten ist auch eine gute Idee.
 
Zurück
Oben