# fsck bei Shutdown

## Finswimmer

Hi!

Ich möchte, dass der FS Check beim Runterfahren gemacht wird, nicht beim Starten.

Ext3 ist das Dateisystem.

Gibt es da schon was fertiges?

Wenn nein, dann setz ich mich bald mal ran, und verändere checkroot & checkfs...

Danke

Tobi

----------

## SvenFischer

Coole Idee, will ich auch haben. Gerade bei meiner 400 GB Partition nervt das schon etwas beim Start.

----------

## mv

Darf ich mal fragen, was das bringen sollte? Wenn ein Filesystemcheck sinnvoll ist, dann nur vor dem Mounten, dann nach dem Arbeiten auf einer kaputten Partition ist ohnehin schon alles im Argen. Und wenn es nur um den routinemäßigen Filesystemchecks nach so-und-so-oft mounten geht: Den würde ich vollkommen abschalten (aus dem genannten Grund: Er bringt praktisch nichts). Wenn man denn wirklich meint, mal eine Routinekontrolle zu brauchen, kann man die dann manuell anschmeißen.

----------

## blice

Andere Sicht:

Wenn ich meinen PC mal runterfahre (so alle 2-3 Tage), dann sollte das auch zügig gehen, d.h. "shutdown" - max 5 sek später aus -

Früher bei kde hab ich einfach gewartet bis kam "stopping adsl for eth0" und dann die steckdosenleiste ausgeschaltet.

Mittlerweile gehts so in ca 12-15 sekunden ins aus .. damit kann ich leben.

Ob der beim hochfahren 15 sekunden braucht, oder alle 30 mounts 2 minuten ist mir schniepe, beim hochfahren bin ich selten dabei  :Wink: 

Aber wenn Du's machen willst, es gibt eine datei im ordner etc  :Smile: 

```

bodo@this ~ $ cat /etc/conf.d/local.stop 

# /etc/conf.d/local.stop

# This is a good place to unload any misc.

# programs you started above.

# For example, if you are using OSS and have

# "/usr/local/bin/soundon" above, put

# "/usr/local/bin/soundoff" here.

```

----------

## firefly

 *blice wrote:*   

> Andere Sicht:
> 
> Wenn ich meinen PC mal runterfahre (so alle 2-3 Tage), dann sollte das auch zügig gehen, d.h. "shutdown" - max 5 sek später aus -
> 
> Früher bei kde hab ich einfach gewartet bis kam "stopping adsl for eth0" und dann die steckdosenleiste ausgeschaltet.
> ...

 

da local als ersters gestoppt wird beim shutdown hilft ihm das wenig. Da ja zu dem zeitpunkt alle partitionen noch gemountet sind und somit ein fsck nicht möglich ist.

----------

## Finswimmer

Ich möchte den automatischen Check schon behalten. Er bringt in dem Sinne etwas, dass ich es nicht vergesse.

Ein Check beim Runterfahren ist genauso gut wie beim Hochfahren, denn im ausgeschalteten Zustand sollte nichts passieren.

Hintergrund: Es ist ein Freevo Rechner, also ein Ding, was zu einer bestimmten Zeit angeht, und mir Tv Serien aufnimmt. Wenn er dann plötzlich 20 min scannt, ist die Serie gelaufen.

Tobi

----------

## Klaus Meier

Du bekommst doch beim booten angezeigt, wann der nächste Test stattfindet. Dann mach doch

shutdown -f, dann wird beim nächsten Start nicht gecheckt, oder

shutdown -F, dann wird beim nächsten Start gecheckt.

Hat den Vorteil, dass du das machen kannst, wenn die Zeit fürs checken nicht stört und der Zähler wird dann ja wieder zurückgesetzt. Ansonsten boote ich ab und an mal von einem anderen System und mache ein fsck.ext3 -fD. Bringt einiges (oder etwas) an Performance.

----------

## fuchur

Hi

 *Finswimmer wrote:*   

> Ich möchte den automatischen Check schon behalten. Er bringt in dem Sinne etwas, dass ich es nicht vergesse.
> 
> Ein Check beim Runterfahren ist genauso gut wie beim Hochfahren, denn im ausgeschalteten Zustand sollte nichts passieren.
> 
> Hintergrund: Es ist ein Freevo Rechner, also ein Ding, was zu einer bestimmten Zeit angeht, und mir Tv Serien aufnimmt. Wenn er dann plötzlich 20 min scannt, ist die Serie gelaufen.
> ...

 

Ich würde mein System so patitionieren das die Systempat. so ca. 5-8 GB beträgt.

Dann dauer fsck ~1 Min.

Deine Filme kannst du dann ja auf eine andere Patition speicher automatisches fsck mit "tune2fs"

abschalten und über local.stop unmounten und fsck ausführen wenn du es für die Filmpatition für

nötig hälts. 

MfG

----------

## ok

Mir persönlich ist es egal wie lange das runterfahren dauert, aber wenn ich mal schnell etwas auf meinem PC brauch, dann soll es doch auch schnell gehen.

Regelmässig werden bei mir während des runterfahrens auch noch andere Aufträge erledigt (Backup, prelink, ...).

Ich habe mir auch schon überlegt einen runlevel einzurichten, mit der einzigen Aufgabe den Rechner wieder runterzufahren, diesen könnte ich per Script im Grub auf default setzen und beim Neustart ein fsck veranlassen.

----------

## Necoro

 *ok wrote:*   

> Ich habe mir auch schon überlegt einen runlevel einzurichten, mit der einzigen Aufgabe den Rechner wieder runterzufahren, diesen könnte ich per Script im Grub auf default setzen und beim Neustart ein fsck veranlassen.

 

Das wär aber ein sehr mieser Workaround  :Wink: 

----------

## Finswimmer

 *Klaus Meier wrote:*   

> Du bekommst doch beim booten angezeigt, wann der nächste Test stattfindet. Dann mach doch
> 
> shutdown -f, dann wird beim nächsten Start nicht gecheckt, oder
> 
> shutdown -F, dann wird beim nächsten Start gecheckt.
> ...

 

Nö. Das soll er alles automatisch machen. Wofür hab ich sonst den Rechner, der mir gehorchen soll?

Tobi

----------

## Klaus Meier

 *Finswimmer wrote:*   

> Nö. Das soll er alles automatisch machen. Wofür hab ich sonst den Rechner, der mir gehorchen soll?
> 
> Tobi

 

Sorry, also gehorchen und automatisch widerspricht sich. Also entweder dein Rechner macht was er will, oder er macht, was du willst.... Und jetzt ein ganz dickes Grins hinterher, bevor du das falsch verstehst...

----------

## mv

 *Finswimmer wrote:*   

> Ein Check beim Runterfahren ist genauso gut wie beim Hochfahren, denn im ausgeschalteten Zustand sollte nichts passieren.

 

Im eingeschalteten Zustand genausowenig. Ein Filesystem-Fehler kann doch eigentlich nur durch einen Hardwaredefekt oder einen plötzlichen Stromausfall auftreten (wenn man nicht gerade experimentelle Filesysteme testet). Und das Ab- und Anschalten ist bzgl. der Festplatte wohl die kritischste Phase. Also sollte man nach diese Phase testen.

----------

## mv

 *Necoro wrote:*   

>  *ok wrote:*   Ich habe mir auch schon überlegt einen runlevel einzurichten, mit der einzigen Aufgabe den Rechner wieder runterzufahren, diesen könnte ich per Script im Grub auf default setzen und beim Neustart ein fsck veranlassen. 
> 
> Das wär aber ein sehr mieser Workaround 

 

Das sehe ich nicht so: Der Filesystemcheck bleibt da, wo er sein soll, und auf die zwei Sekunden zum Neustart kommt es eben nicht an...

Wer einen Automatismus will, kann ja ein "Zählfile" mitführen und bei jedem soundsovielten runterfahren oder so ein Neuboot im Check-and-shutdown runlevel erzwingen...

----------

## franzf

 *mv wrote:*   

> Und das Ab- und Anschalten ist bzgl. der Festplatte wohl die kritischste Phase. Also sollte man nach diese Phase testen.

 

Also sollte man am besten bei jedem Neustart des Rechners das Dateisystem checken lassen? Denn ob ich jetzt Checke->Ausschalte->32xNeustarte oder Ausschalte->Einschalte->Checke->32xNeustarte zum nächsten FS-Check ist doch piep  :Wink:  Denn nach Adam Riesling ist die Wahrscheinlichkeit, dass bei den 32x was passiert höher als genau bei dem einen nach dem Check. Oder seh ich was falsch?

----------

## mv

 *franzf wrote:*   

> Also sollte man am besten bei jedem Neustart des Rechners das Dateisystem checken lassen?

 

Als "Paranoiker": ja. Als "normaler Mensch": Ein routinemäßiger Filesystemcheck ist m.E. niemals nötig, oder höchstens einmal im Jahr. wenn man übervorsichtig ist (regelmäßige Backups für mögliche Festplattenausfälle sollte man ohnehin machen). Der Filesystemcheck ist nur bei einem Stromausfall/Hardreset o.ä. nötig. In so einem Fall aber sollte er unbedingt vor dem Mounten passieren - wenn man dann den Check aus dem Startvorgang aus- und statt dessen in Shutdownvorgang ein-gebaut hat, hat man sich ins Knie geschossen...

----------

## Klaus Meier

 *mv wrote:*   

>  *franzf wrote:*   Also sollte man am besten bei jedem Neustart des Rechners das Dateisystem checken lassen? 
> 
> Als "Paranoiker": ja. Als "normaler Mensch": Ein routinemäßiger Filesystemcheck ist m.E. niemals nötig, oder höchstens einmal im Jahr. wenn man übervorsichtig ist (regelmäßige Backups für mögliche Festplattenausfälle sollte man ohnehin machen). Der Filesystemcheck ist nur bei einem Stromausfall/Hardreset o.ä. nötig. In so einem Fall aber sollte er unbedingt vor dem Mounten passieren - wenn man dann den Check aus dem Startvorgang aus- und statt dessen in Shutdownvorgang ein-gebaut hat, hat man sich ins Knie geschossen...

 

Manchmal habe ich das Problem, dass die Kiste nach einem Update beim shutdown hängt. Vielleicht passiert das auch nur, weil ich testing habe. Oder wenn man Experimente mit beryl oder compiz macht. Jedenfalls finde ich den regelmäßigen Check bei ext3 ok. Lieber einmal mehr checken als den großen Datenverlust.

----------

## mv

 *Klaus Meier wrote:*   

> Manchmal habe ich das Problem, dass die Kiste nach einem Update beim shutdown hängt.

 

Das zähle ich in die Kategorie Stromausfall/Hardwarereset (eben ein Reset ohne ordnungsgemäßes Herunterfahren).

Das Problem tritt bei mir übrigens auch auf: Zuweilen meldet er, / sei noch busy und weigert sich ohne Ctrl-D weiterzumachen. Das ist besonders ärgerlich, wenn ich einen neuen Kernel auf einen 400 km entfernten Rechner aufgespielt habe und diesen neustarten möchte.   :Mad: 

Auf meinem Laptop kam es umgekehrt schon dreimal vor, dass er anscheinend die Daten vom unmounten noch nicht vollständig geschrieben hat, bevor er sich ausschaltet/neustartet (das wäre bei einem fsck beim Herunterfahren übrigens ebenfalls ein massives Problem). Weiß jemand, wie man dieses Problem sauber vermeidet?

----------

## ok

Ich habe mir nun einen 'kleinen' Kernel gebacken, welchen ich mittels kexec lade und beim runterfahren ausführe. Damit kann ich die langen BIOS-Zeiten umgehen und der Neustart benötigt viel weniger Zeit. 

Naja, nun wird der fsck weder beim Neustart noch beim runterfahren des Regelsystems gestartet....

----------

## HelAu

Moin,

Was fuer ein huebscher Thread  :Smile:  Da suche ich etwas, finde einen Thread in dem genau das gesucht wird was ich auch suche, und was liest man ? Jede Menge Tipps warum man genau das anders machen sollte und kein einzig echter guter Tipp wie man es machen kann.

Ich brauche naemlich genau dasselbe, da der Rechner nicht als Workstation sonben al Multimediabox genutzt wird. Und diese sollte nun mal ab und zu Ihre Platten ueberpruefen und dies zwingend waehrend des shutdowns, denn beim Hochfahren will keiner warten.

Da ich nichts besseres gefunden habe, habe ich mir nun ein Script gebastelt welches die Checks vornimmt und dieses starte ich am Ende des /etc/init.d/halt.sh scripts

----------

## Finswimmer

 *HelAu wrote:*   

> Moin,
> 
> Was fuer ein huebscher Thread  Da suche ich etwas, finde einen Thread in dem genau das gesucht wird was ich auch suche, und was liest man ? Jede Menge Tipps warum man genau das anders machen sollte und kein einzig echter guter Tipp wie man es machen kann.
> 
> Ich brauche naemlich genau dasselbe, da der Rechner nicht als Workstation sonben al Multimediabox genutzt wird. Und diese sollte nun mal ab und zu Ihre Platten ueberpruefen und dies zwingend waehrend des shutdowns, denn beim Hochfahren will keiner warten.
> ...

 

Postest du bitte mal das Script?

Danke

Tobi

----------

## fuchur

Hi

Angeregt durch diese Tread habe ich vor ca. 2 wochen etwas für mein

Root filesystem gebastelt. Als boot manager habe ich grub das Filesystem

ist ext3.

In "/boot/grub/grub.conf" habe ich 

```
default=saved
```

 hinzugefügt

und von meine defauft booteintrag habe ich eine kopie gemacht und 

als zweiten eintrag kopiert und hinter die zeile kernel ... eine 0 angefügt

(die "0" schaltet in den runlevel null wen man von dem booteintag bootet)

In "/etc/conf.d/local.stop" habe ich folgendes hinzugefügt

```

ebegin "Check filesystem"

    # Reboot system if next boot a filesystemcheck (fsck) on root fs.

    # Use grub entry with runlevel 0 (kernel line in grub.conf)

    # Boot to check filesystem and shutdown.

    # Filesystem ext3, bootloader grub.

    #

    # grub.conf

    #

    # (e.g. second entry):

    #

    # default=saved

    # title PowerOff

    #   root (hd0,0)

    #   savedefault 0

    #   kernel /path/to/kernel 0

    # mount /boot e.g

    # emty line none mount/remount

    # for mount: mount -o rw

    # for remount writeacces: mount -o remount,rw

    #

    MOUNT="mount -o rw"

    # grub entry with runlevel 0 (begin with 0)

    #

    GRUBENTRY=1

    # bootdevice

    #

    BOOTDEV=$(awk '($1 ~ /^(\/|UUID|LABEL)/ && $2 == "/boot" && NF == 6 && $6 != 0) { print $1 " " $2 }' /etc/fstab)

    # rootdevice

    #

    ROOTDEV=$(awk '($1 ~ /^(\/|UUID|LABEL)/ && $2 == "/" && NF == 6 && $6 != 0) { print $1 }' /etc/fstab)

    # grub config file

    #

    GRUBCONFIG=/boot/grub/grub.conf

    # mount count

    #

    MCOUNT=$(tune2fs -l $ROOTDEV | grep "^Mount count:" | awk '{print $3}')

    # max mount count

    #

    MAXMCOUNT=$(tune2fs -l $ROOTDEV | grep "^Maximum mount count:" | awk '{print $4}')

    # current runlevel

    #

    RUNLEVEL=$(runlevel | awk '{print $2}')

    # check if runlevel != reboot (6)

    #

    if [ "$RUNLEVEL" != "6" ]; then

        # if next boot a filesystemcheck running ?

        #

        CHECK=$(($MCOUNT+1))

        if (($CHECK > $MAXMCOUNT)); then

            ebegin "Switch to runlevel 6 for fsck"

                # mount boot

                #

                if test ! -z $MOUNT; then

                    $(echo $MOUNT $BOOTDEV)

                fi

                # switch to grub bootentry with runlevel 0

                #

                grub-set-default $GRUBENTRY

                # switch to runlevel reboot

                #

                sleep 3 && /sbin/telinit 6

            eend $?

        fi

    fi

eend $?
```

Das heist beim runterfahren wird gescheckt ob beim nächsten boot ein fsck ausgeführt

wir wenn ja dann wir grub auf den zweiten booteintrag gesetz (den mit runlevel 0 mittels grub-set-default)

und ein reboot ausgeführt. Der Rechner bootet dann neu führt ein fsck aus und schaltet sich dann

aus. Falls das jemand ausprobieren möchte die variable "MOUNT=" in local.stop muss anpassen wenn nötig

(ist docomentiert) und natülich auf eigene gefahr  :Wink: 

MfG

----------

## Finswimmer

Hmm. An sich gut, aber da mein Rechner immer mit nvram-wakeup beendet wird, ist so ein Neustart "zwischendurch" sehr ungünstig. Habe die Erfahrung gemacht, dass danach die Kiste nicht zur richtigen Zeit hochfährt...

Tobi

----------

## fuchur

Hi

 *Finswimmer wrote:*   

> Hmm. An sich gut, aber da mein Rechner immer mit nvram-wakeup beendet wird, ist so ein Neustart "zwischendurch" sehr ungünstig. Habe die Erfahrung gemacht, dass danach die Kiste nicht zur richtigen Zeit hochfährt...
> 
> Tobi

 

Das macht doch eigentlich nichts. Der Rechner kann doch auch weiter mit nvram-wakeup runter gefahren werden.

Locale.stop wird doch erst nach "nvram-wakeup" ausgeführt oder hast du daführ ein extra init.d script?

Die wakeup zeit wird doch auch bei eine reboot ins Bios geschrieben.

MfG

----------

## HelAu

Hi Tobi,

Das ist der Patch fuer /etc/init.d/halt.sh:

```
--- /etc/init.d/halt.sh 2007-03-17 00:00:00.000000000 +0100

+++ /mnt/samba/etc/init.d/halt.sh       2007-05-18 18:13:02.000000000 +0200

@@ -200,6 +200,9 @@

        /sbin/sulogin -t 10 /dev/console

 fi

+if [ -f /etc/init.d/stop.localfs ] ; then

+       sh /etc/init.d/stop.localfs

+fi

 # Inform if there is a forced or skipped fsck

 if [[ -f /fastboot ]]; then

        echo
```

Und so sieht mein /etc/init.d/stop.localfs aus:

Die Variable FSCK_WEEK legt fest wann gechecked wird ( alle x Wochen ).

Das alles findest Du auch in meiner Gen2VDR Distri - da ist auch freevo mit drin  :Wink: 

```
#! /bin/sh

#

# /etc/init.d/stop.localfs

#

# Description:       check local filesystems during shutdown

#

# Check filesystem every 4 weeks

FSCK_WEEK=4 

LCHKF="/etc/lastCheck"

DOCHECK=0

FP=""

if [ -f /forcefsck ] ; then

   DOCHECK=1

   FP="-f"

elif [ "$FSCK_WEEK" != "0" ] ; then

   DOCHECK=1

   if [ ! -z $LCHKF ] && [ -f $LCHKF ] ; then

      LCHECKED=`ls --full-time $LCHKF | cut -f 7 -d " "`

      lWeek=`date -d "$LCHECKED" +"%Y%W"`

      actWeek=`date +"%Y%W"`

      if [ $(($actWeek-$lWeek)) -lt $FSCK_WEEK ] ; then

         DOCHECK="0"

      fi

   fi

fi

if [ "$DOCHECK" = "1" ] ; then

   rm /forcefsck 2>/dev/null

   touch $LCHKF

   mount -n -o remount,rw /

   touch /fastboot

   echo "Checking all filesystems"

   fsck -C -R -A -a $FP

   retval=$?

   if [ "${retval}" -eq 0 ] ; then

      echo "Checking done"

   elif [ "${retval}" -ge 1 -a "${retval}" -le 3 ] ; then

      echo "Filesystem errors corrected."

      # Everything should be ok, so return a pass

   else

      echo "Fsck could not correct all errors, manual repair needed"

      touch /forcefsck

   fi

   echo "Remounting root filesystem read-only and checking it"

   mount -n -o remount,ro /

   fsck -C -a $FP /

   retval=$?

   if [ "${retval}" -eq 0 ] ; then

      echo "Checking done"

   elif [ "${retval}" -ge 1 -a "${retval}" -le 3 ] ; then

      echo "Filesystem errors corrected."

      # Everything should be ok, so return a pass

   else

      echo "Fsck could not correct all errors, manual repair needed"

      touch /forcefsck

   fi

fi
```

----------

## Finswimmer

 *fuchur wrote:*   

> Hi
> 
>  *Finswimmer wrote:*   Hmm. An sich gut, aber da mein Rechner immer mit nvram-wakeup beendet wird, ist so ein Neustart "zwischendurch" sehr ungünstig. Habe die Erfahrung gemacht, dass danach die Kiste nicht zur richtigen Zeit hochfährt...
> 
> Tobi 
> ...

 

Ich nutze Freevo, das fährt den Rechner per sudo runter, und startet vorher nvram.

Dass (theoretisch) nach einem Reboot die Wakeup-Zeit noch vorhanden sein sollte, ist klar, nur auf meinem alten Rechner/BIOS wohl nicht...

Naja.

Tobi

----------

## mv

 *HelAu wrote:*   

> als Multimediabox genutzt wird. Und diese sollte nun mal ab und zu Ihre Platten ueberpruefen

 

Wozu? (Das ist keine rhethorische Frage, sondern ich sehe wirklich keinen Grund. M.E. ist es schlichtweg irrational, dass der Default von ext3 eine Routineüberprüfung der per Definition ohnehin korrekten Filesystemstruktur (nicht der Platten! Ich rede nicht von ide-smart u.ä.) vorsieht - wenn ext3 nicht von ext2 abstammen würde, gäbe es diese Option vermutlich nicht einmal.)

----------

## HelAu

Hi,

Ich habe schon genuegend Faelle erlebt bei denen eine reiserfs xfs oder auch ext3 Platte nicht in Ordnung war und das syslog etlich Fehler anzeigte.

Ein fsck haette dies vermutlich beseitigt. Und ein Check beim Herunterfahren stoert ja niemanden  :Smile: 

----------

## mv

 *HelAu wrote:*   

> Ich habe schon genuegend Faelle erlebt bei denen eine reiserfs xfs oder auch ext3 Platte nicht in Ordnung war und das syslog etlich Fehler anzeigte. Ein fsck haette dies vermutlich beseitigt.

 

Vermutlich nicht. Wenn Plattenfehler (die gefürchteten Meldungen mit "{"..."}") im syslog auftauchen (und sie nicht an einem falsch konfigurierten Kernel liegen), hilft auch kein fsck mehr; ein Reparaturversuch kann dann sogar schädlich sein. Man sollte dann die Platte baldmöglichst austauschen.

Wenn man nach dem Auftauchen solcher Fehler trotzdem weitermachen will/muss und dazu mal gezielt ein (zunächst rein lesendes) fsck ausführt, ist das durchaus sinnvoll: Ich sprach nicht davon, dass fsck prinzipiell überflüssig ist; aber ein regelmäßiger Check ohne Indizien scheint mir reine Zeit- und Stromverschwendung und sinnlose "Plattenabnutzung" zu sein.

Regelmäßig auf solche Fehler im Syslog zu achten (oder smart-Tools aufzurufen) ist im Gegensatz zu einem regelmäßigen fsck m.E. hingegen durchaus sinnvoll. Aber das macht man natürlich beides während des Betriebes (etwa durch einen Cron-Job) und nicht beim Hoch- oder Herunterfahren; es kostet ja auch kaum Rechenzeit.

----------

