kanotix.com

Installation, Einstellungen, Systempflege - Filesystem Check beim Booten

mark_m_888 - 23.02.2008, 09:07 Uhr
Titel: Filesystem Check beim Booten
Hallo zusammen!
Mein Filesystem wird beim Starten (angeblich) jedes 23. mal geprüft.
Das kenne ich noch aus meiner Suse 7.x Zeit und hat mich schon damals ziemlich gestört.

Ist es normal das es - nach Jahren ohne Check- wieder eingeführt wurde? Oder hat das aktuelle Kanotix ein anderes Filesystem als ältere Versionen?

Da ich manchmal den Rechner möglichst schnell starten muss (Kunde ruft an und will einen Termin vereinbaren, der Rechner ist aber gerade dummerweise aus!) währe es sehr schön wenn man die Kontrolle unterbrechen oder ganz verhindern könnte.
Vielleicht die Überprüfung nur Sonntags durchführen oder so ähnlich?!

Schon mal vielen Dank für Eure Mühen!!
Schöne Grüße
Mark
schwedenmann - 23.02.2008, 09:44 Uhr
Titel: Filesystem überprüfen
Hallo

Schau dir mal tune2fs an.

Du kannst die Zahl, nach deren Booten, das dateisstem überprüft wird, höchtens hochsetzen , ausschalten kann man das afaik nicht, ist ja auch nciht sinnvoll.

mfg
schwedenmann
whug - 23.02.2008, 12:19 Uhr
Titel: Filesystem überprüfen
Falls diese Antwort stimmt, und ich habe bisher auch keine andere Information gefunden, dann zeigt es einmal mehr wie unvorstellbar wirklichkeitsfremd diese sonst genialen Linux-Entwickler sind. Man gibt einen Vortrag, startet dazu den Laptop auf, und voila, wie Dubeln wartet der Sprecher und das ganze Auditorium gottergeben mehrere Minuten, bis dieser absolut unverschiebbare Test des Dateisystems abgelaufen ist.

Das Minimum an praktischer Intelligenz würde erfordern, dass man gefragt wird, ob man diesen Test jetzt oder nächstes Mal ausführen will. Eine Distribution, welche ich vor Jahren einmal gebraucht habe, hat dies tatsächlich getan, aber ich kann sie, nachdem der Entwickler nach Abu Graib demonstrativ 50 000 CDs davon der US army on active duty zur Verfügung gestellt hat, aus moralischen Gründen nicht mehr benutzen.

whug
Deppsche - 23.02.2008, 12:25 Uhr
Titel:
du kannst das glaub ich über die /etc/fstab abstellen

Code:
# /dev/sdb6
UUID=e6a86528-9551-4469-96d1-01dd596fe747 /media/downloads ext3    auto,users,exec 0       0


wenn die letzten beiden Einträge eine 0 sind, dann wird keine Überprüfung ausgeführt.

Bin mir aber nicht ganz sicher.
jgese - 23.02.2008, 12:25 Uhr
Titel:
Du kannst ja ein anderes Filesystem nutzen.
Dieser Check wird meine ich, nur bei ext3 gemacht.
whug - 23.02.2008, 12:50 Uhr
Titel:
Ich kann nicht für mark-m-888 sprechen der die Frage aufgeworfen hat, aber ich finde den Dateisystem Test an sich eine sehr gute Sache. Ich will ihn nicht abstellen, aber ich möchte entscheiden, wann er gemacht wird.

Von praktischen Problemen mit der Zwangsdurchführung abgesehen, bin ich ja schliesslich auch der Chef von meinem Rechner, und nicht umgekehrt.

whug
Daddy-G - 23.02.2008, 13:08 Uhr
Titel:
Hallo
der Hinweis von Deppsche ist imho nicht ganz falsch:

Auf jeden Fall habe ich das bei anderen Distries gesehen z.B. Kubuntu, dass da in fstab am Ende eine 2 in der Zeile steht, und das bei 5-6 Partitionen.
Das war lästig weil ich ja auch größere ext2-Datenpartitionen habe, wo ich von verschiedener Seite aus zugreife. Das kann man dann in "0" ändern.

Allerdings war das afaik bei Kanotix nicht der Fall, da stand immer ne Null. Aber man kann ja zur Sicherheit mal nachsehen. Winken
blauweiss - 23.02.2008, 14:33 Uhr
Titel:
schwedenmann hat folgendes geschrieben::
Du kannst die Zahl, nach deren Booten, das dateisstem überprüft wird, höchtens hochsetzen , ausschalten kann man das afaik nicht, ist ja auch nciht sinnvoll.

Das wird ihn aber nicht davor schützen,
das der check wahrscheinlich auch hier im ungünstigstem Falle auftritt.
2 kleine scripte um /etc/rcS.d/S30checkfs.sh herum sollten dauerhaft Abhilfe schaffen,
vorrausgesetzt das es sich um ext2|ext3 handelt:

Im 1. script (/etc/rcS.d/S28_checkfs) wird nachgefragt,
ob heut nicht Sonntag ist und die Anzahl der mounts die der 'Maximum mount count' übersteigt,
trifft das zu, dann wird das Device und die aktuelle Anzahl der mounts in /MOUNTS gespeichert,
und anschl. die Anzahl der mounts auf 1 gesetzt.

Das nachfolgende S30checkfs.sh beanstandet nun nichts mehr!

Das 2. script (/etc/rcS.d/S31_checkfs) setzt danach alles wieder auf die ursprünglichen Werte.
(/etc/rcS.d/S28_checkfs hat folgendes geschrieben::
#!/bin/sh

DEVICE="/dev/sda1"; # root Device, bitte anpassen

MOUNT_COUNT=$(/sbin/tune2fs -l $DEVICE | /bin/grep 'Mount count' | /usr/bin/awk '{print $3}')
MAXIMUM_MOUNT_COUNT=$(/sbin/tune2fs -l $DEVICE | /bin/grep 'Maximum mount count' | /usr/bin/awk '{print $4}')

if [ $(/bin/date +%u) -ne 7 -a $MOUNT_COUNT -ge $MAXIMUM_MOUNT_COUNT ]; then
/bin/echo "$DEVICE" >/MOUNTS
/bin/echo "$MOUNT_COUNT" >>/MOUNTS
/sbin/tune2fs -C 1 $DEVICE
fi

exit 0

/etc/rcS.d/S31_checkfs hat folgendes geschrieben::
#!/bin/sh

if [ -f /MOUNTS ]; then
DEVICE=$(/bin/sed -ne '1p' /MOUNTS)
MOUNTS=$(/bin/sed -ne '2p' /MOUNTS)
rm -f /MOUNTS
/sbin/tune2fs -C $MOUNTS $DEVICE
fi

exit 0

jokobau - 23.02.2008, 18:43 Uhr
Titel:
Wenn ich es richtig im Kopf habe, so setzt doch

tune2fs -c 0 /dev/sdxx

das überprüfen durch e2fsck aus.
Oder ???
blauweiss - 23.02.2008, 18:55 Uhr
Titel:
jokobau hat folgendes geschrieben::
Wenn ich es richtig im Kopf habe, so setzt doch

tune2fs -c 0 /dev/sdxx

das überprüfen durch e2fsck aus.
Oder ???

Mag sein, aber das will doch hoffentlich niemand,
ein fsck ist hier und da mal erforderlich,
nur der Zeitpunkt sollte frei wählbar sein...
jokobau - 23.02.2008, 19:11 Uhr
Titel:
Nun wenn du den Zeitpunkt willst, dann nimste halt den Parameter -i
Ansonsten kannst du ja auch von Hand e2fsck laufen lassen. Für die root - Partition am besten von CD.

für die Überprüfung Sonntags wäre das dann wohl morgen so zu verwirklichen:

Code:

tune2fs -i d7 /dev/sdxx


sinnvoll ist dann ja auch, wenn man den Zähler wie ich oben Beschrieben habe ausschaltet.
mark_m_888 - 24.02.2008, 13:46 Uhr
Titel:
Erst mal vielen Dank für die vielen kompetenten Antworten.
Anscheinend betrifft dieses Problem ja eine ganze Reihe von Nutzern.

Ideal währe für mich die Möglichkeit das vor Ausführung des Filesystemchecks einige Sekunden mit Abruchmöglichkeit gewartet wird.
@Kano: Währe es sinnvoll das in Kanotix zu realisieren?

Eine Tastenkombination um einen laufenden Test abzubrechen gibt es zufälliger weisen nicht?
hschn - 24.02.2008, 16:00 Uhr
Titel:
Hallo,
doch
STRG_C

Gruß
hschn
whug - 24.02.2008, 18:14 Uhr
Titel:
Meinerseits grossen Dank an die Leute welche sich hier Zeit genommen haben.
Ctrl_C scheint ja vorläufig alle Probleme zu lösen, bevor ich Zeit finde, die angegebenen andern Möglichkeiten zu verstehen. Einzige Sorge: geht dabei garantiert nichts kaputt? Habe einen Heidenrespekt vor Dateisystemen, seit ich vor einger Zeit über eine Woche darauf verwendet habe mit einer Rettungs-CD Daten aus einem defekten System zu klauben. Gegenwärtig hätte ich für solchen Schnick-Schnack keine Zeit.

whug
blauweiss - 24.02.2008, 18:33 Uhr
Titel:
hschn hat folgendes geschrieben::
doch STRG_C

Das würd ich lassen, könnte in einem nicht bootfähigem System enden!
Hoffentlich hilft dann Strg+Alt+Entf weiter...

mark_m_888, versuchs mal mit den o.g scripten und du wirst von
Montag bis einschl. Samstag Ruhe haben vor fscks.

Hab mal versucht die scripte so umzuschreiben,
das die root und eine eventuell vorhandene home Partition
automatisch erkannt werden, will mir aber leider nicht gelingen
die entsprechenden Werte aus der /etc/mtab auszulesen,
wann ist denn /etc/mtab mit allen Daten zugriffsfähig vorhanden?
Nach S30checkfs.sh wäre schlecht, dann müßt ich die Werte aus der fstab generieren...
blauweiss - 25.02.2008, 18:55 Uhr
Titel:
Falscher Irrtum, zumindest die root Partition wird schon in
/etc/rcS.d/S10checkroot.sh überprüft.
Das erste script sollte also /etc/rcS.d/S09checkfs1 benannt werden,
das zweite bleibt mit /etc/rcS.d/S31checkfs2 wo es ist.
Für eine automatische Abfrage der root- und einer eventuell vorhandenen home Partition
und um nur Sonntags einen fsck einzuleiten, poste ich hier noch mal beide scripte:.
Vorraussetzung ist nun ext2 oder ext3 mit uuid in der /etc/fstab.
Hoffe, das es diesmal richtig ist,
die Werte mußt ich aus der fstab generieren, da die mtab zu diesem Zeitpunkt noch nicht vollständig ist.
Nicht vergessen, die scripte ausführbar zu machen!
/etc/rcS.d/S09checkfs1 hat folgendes geschrieben::
#!/bin/sh

#fsck der root und home Partionen nur Sonntags
#erfordert 2 scripte um /etc/rcS.d/S10checkroot.sh und /etc/rcS.d/S30checkfs.sh herum
#in Diesem, 1.script wird der fsck unterbunden, wenn heut nicht Sonntag ist
#die aktuellen Mountwerte werden in /MOUNTS zwischengespeichert,
#und nun auf auf 1 gesetzt, damit S10checkroot.sh und S30checkfs.sh nichts beanstanden.
#Im 2.script (/etc/rcS.d/S31checkfs2)
#wird alles wieder auf die ursprünglichen Werte zurückgesetzt,
#damit dem sonntäglichen fsck nichts im Wege steht.

PATH=/bin:/sbin:/usr/bin
ROOTDEVICE=""
DEVICE=""

CHECK() {
 if [ -z "$DEVICE" ]; then
  #Mount Zähler für die root Partition wird erst später erhöht, hier also 1 dazuzählen
  MOUNT_COUNT=$(expr $(tune2fs -l $1 | grep 'Mount count' | awk '{print $3}') + 1)
 else
  #für home oder eine andere Partition gilt das nicht
  MOUNT_COUNT=$(tune2fs -l $1 | grep 'Mount count' | awk '{print $3}')
 fi
 
MAXIMUM_MOUNT_COUNT=$(tune2fs -l $1 | grep 'Maximum mount count' | awk '{print $4}')
 if [ $MOUNT_COUNT -ge $MAXIMUM_MOUNT_COUNT ]; then
  #root Partition wegen der Datei /MOUNTS schreibfähig remounten, falls nötig
  if ! touch /MOUNTS; then
   
mount -n -o remount,rw $ROOTDEVICE /
  fi
  
echo "$1 $MOUNT_COUNT" >>/MOUNTS
  tune2fs -C 1 $1
 fi
}

#automatischen Filesystem check von Montag bis Samstag verhindern (root Partition zuerst!)
if [ $(date +%u) -ne 7 ]; then
 #für die root Partition
 ROOTDEVICE=$(blkid -o device -t $(grep -w "/" /etc/fstab | awk '{print $1}'))
 CHECK "$ROOTDEVICE"

 # für eine home Partition, falls vorhanden
 DEVICE=$(blkid -o device -t $(grep -w "/home" /etc/fstab | awk '{print $1}'))
 if [ -n "$DEVICE" ]; then CHECK "$DEVICE"; fi
fi

exit 0


/etc/rcS.d/S31checkfs2 hat folgendes geschrieben::
#!/bin/sh

#fsck der root und home Partionen nur Sonntags
#in Diesem, 2.script werden die aktuellen Mountwerte aus /MOUNTS
#in entsprechenden Partionen zurückgeschrieben

PATH=/bin:/sbin:/usr/bin

if [ -f /MOUNTS ]; then
 for
((i=1; i<=$(wc -l /MOUNTS | awk '{print $1}'); i++)); do
  
DEVICE=$(sed -ne "$i p" /MOUNTS | awk '{print $2,$1}')
  tune2fs -C $DEVICE
 done
 
rm -f /MOUNTS
fi

exit 0

edit: mittelschwere Fehler beseitigt und ein bisschen Format und Farbe ins Spiel gebracht!
PeterG - 26.02.2008, 06:34 Uhr
Titel:
Moin,

ich weiß nicht, wo das Problem ist? Habe ne Menge USB-Platten dran, aber der Check dauert beim Hochfahren vielleicht 3-5sek. Was will man da sparen?
Thorhammer RC7 +Updates und ein lahmer alter 850MHz Schleppi, der damit schneller ist als je zuvor.

MfG
Peter
wowa - 26.02.2008, 07:09 Uhr
Titel:
Könnte man es sich vielleicht auch einfacher machen und mit

tune2fs -C $MAXIMUM_MOUNT_COUNT $DEVICE

die Notwendigkeit für die temporäre Datei /MOUNTS und das zweite Script sparen?

Gruß
wowa
mark_m_888 - 26.02.2008, 11:24 Uhr
Titel:
@ PeterG
Bei mir dauert es mehrere Minuten.
Athlon X2 4600, 1G BRam und 160GB Festplatte. Die untersuchte Patition hat ca 40GB.
Es ist hier nicht der normal Check beim Hochfahren gemeint sondern die Komplette Überprüfung der Partition bei jedem 23. Einschalten.
PeterG - 26.02.2008, 11:43 Uhr
Titel:
hi,

bei jedem 23. Hochfahren? Gut ist mir noch nie aufgefallen...... Werd mal drauf achten!

MfG
Peter
blauweiss - 26.02.2008, 17:07 Uhr
Titel:
wowa hat folgendes geschrieben::
Könnte man es sich vielleicht auch einfacher machen und mit
tune2fs -C $MAXIMUM_MOUNT_COUNT $DEVICE
die Notwendigkeit für die temporäre Datei /MOUNTS und das zweite Script sparen?

Das wird nicht funktionieren, da auch bei Gleichheit der 'Mount count'
und der 'Maximum mount count' ein fsck eingeleitet wird (glaub ich zumindest).

Die temporäre Datei /MOUNTS ist notwendig,
um wochentags die aktuelle Anzahl der 'Mount count' mit der entsprechenden Partition zwischenzuspeichern,
die dann im 2. script, nachdem die System eigenen check-Programme ihre Arbeit verrichtet haben,
ausgelesen und wieder zurückgeschrieben werden,
eine andere Möglichkeit sehe ich da nicht.
Ernesto - 27.02.2008, 00:23 Uhr
Titel:
Deppsche hat folgendes geschrieben::
du kannst das glaub ich über die /etc/fstab abstellen

Code:
# /dev/sdb6
UUID=e6a86528-9551-4469-96d1-01dd596fe747 /media/downloads ext3    auto,users,exec 0       0


wenn die letzten beiden Einträge eine 0 sind, dann wird keine Überprüfung ausgeführt.

Bin mir aber nicht ganz sicher.


Jau !!!

Ich zitiere hier mal kurz aus:

man fstab

Das sechste Feld, (fs_passno), wird von fsck() benutzt, um die Reihenfolge, in der die Dateisysteme während eines Neustarts geprüft werden,
festzulegen. Das root-Dateisystem sollte mit einem fs_passno-Wert von 1 versehen sein, andere Dateisysteme mit einem fs_passno-Wert von 2.
Dateisysteme innerhalb eines Laufwerks werden sequentiell geprüft, Dateisysteme auf verschiedenen Laufwerken jedoch gleichzeitig, um parallel
arbeitende Hardware auszunutzen. Ist das sechste Feld nicht vorhanden oder Null, wird Null verwendet und fsck geht davon aus, dass das
Dateisystem keiner Prüfung bedarf.


Sollte eigentlich nach deinem Vorschlag funktionieren ...

Ciao - Ernesto
wowa - 27.02.2008, 06:09 Uhr
Titel:
blauweiss hat folgendes geschrieben::
Das wird nicht funktionieren, da auch bei Gleichheit der 'Mount count'
und der 'Maximum mount count' ein fsck eingeleitet wird (glaub ich zumindest).

Dann sollte es mit
Code:

tune2fs -C $[MAXIMUM_MOUNT_COUNT - 1] $DEVICE

funktionieren.
blauweiss - 27.02.2008, 16:37 Uhr
Titel:
Frage Frage Frage
wowa, was soll ich dazu jetzt schreiben? Mit den Augen rollen
schwedenmann - 08.03.2008, 17:24 Uhr
Titel: Nochmal filecheck
Hallo

habe das heir dazu gefunden

http://wiki.ubuntuusers.de/Dateisystemcheck
Besonders der letzte Punkt , überspringen des filechecks (nur Rootpartition) durch den user, wenn er innerhalb eien sIntervalls von 10s a eintippt.

Das Ganze ist ein Script in /etc/init.d/checkroot.sh

mfg
schwedenmann
Alle Zeiten sind GMT + 1 Stunde
PNphpBB2 © 2003-2007