Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: check filesystem at boot  (gelezen 1351 keer)

Offline i12know

  • Lid
check filesystem at boot
« Gepost op: 2010/08/29, 14:56:53 »
Linux checkt automatisch na dacht ik 30 keer opstarten of 180 dagen het fs.
Dit gebeurd dan bij het opstarten. Ik begrijp dat dit voor de stabiliteit van het systeem belangrijk is maar toch.
Nu heb ik een paar harde schijven (4 intern en 1 usb) in mijn systeem en komt het dus regelmatig voor dat wanneer ik opstart even geduld moet hebben.

Ik heb een paar vragen:

a. Volgens mij is het veel handiger dat hij deze check doet bij afsluiten. Dan wordt je opstartproces nooit vertraagd.
b. Ik heb diverse schijven en het zou handig zijn als de check synchroon loopt. Voor mijn gevoel heb ik nu erg vaak een check.

Ben benieuwd of hier oplossingen voor zijn, hoe hier over gedacht wordt. Of hier al ontwikkelingen zijn.

Groet, Marius


Offline vanadium

  • Lid
Re: check filesystem at boot
« Reactie #2 Gepost op: 2010/08/29, 15:10:19 »
a. Volgens mij is het veel handiger dat hij deze check doet bij afsluiten. Dan wordt je opstartproces nooit vertraagd.
Ik kan hier niet concreet helpen. De schijf mag niet in gebruik zijn voor de schijfcontrole. Dat zal het moeilijk maken die systeemschijf bij afsluiten te testen, hoewel dat wellicht wel technisch mogelijk moet zijn.

Heb jij een recente Ubuntu versie? Het voluit controlleren van een ext4 schijf gaat vele malen sneller dan vroeger voor een ext3 schijf, en is derhalve heel wat minder "irritant" geworden. Je kan [edit] zoals Pjotr ondertussen heeft gesuggereerd
 [/edit] eventueel de tussenperiode voor de schijfcontroles wat verhogen.
Citaat
b. Ik heb diverse schijven en het zou handig zijn als de check synchroon loopt. Voor mijn gevoel heb ik nu erg vaak een check.
Je kan de schijfcontroles " synchroniseren" door in de rootdirectory van elk volume een bestandje "forcefsck" te zetten. Dergelijk bestandje is een methode om handmatig een check te forceren bij opstart. Op die wijze kan je alle schijven bij één opstart controleren. De teller staat dan voor alle volumes gelijk.

Re: check filesystem at boot
« Reactie #3 Gepost op: 2010/08/29, 17:17:38 »
Ik denk dat het wel mogelijk is om je systeem na het afsluiten automatisch opnieuw op te laten starten om de schijven te checken, en daarna meteen weer af te sluiten.

Je zou kunnen ingrijpen in de opstart en afsluitcyclus van Ubuntu. Je zou dan bijvoorbeeld ervoor kunnen zorgen dat bij het handmatig afsluiten automatisch een "forcefsck" bestandje in de root wordt geschreven en het systeem in plaats van af te sluiten herstart (runlevel wijzigen). Dan worden volgens mij bij de volgende keer opstarten automatisch alle partities die mbv. fstab worden gemount gecontroleerd. Teven zou je er dan voor moeten zorgen dat wanneer er bij het opstarten een "forcefsck" bestandje aanwezig was, Ubuntu weer wordt afgesloten zonder zo'n "forcefsck" bestandje weg te schrijven.

Op deze manier zou je kunnen bereiken dat wanneer je handmatig uitlogt het systeem opnieuw opstart, de schijven controleert, en dan pas echt afsluit.

Je zou het dan wat complexer kunnen maken door een interval toe te voegen zodat dit maar eens in de zoveel keer gebeurt.

Voor het afsluiten zou een link in rc0.d naar het script in init.d kunnen werken. Voor de opstart controle idem. maar dan in rc2.d  of rcS.d Ik zal eens wat proberen.
« Laatst bewerkt op: 2010/08/29, 17:28:02 door Thomas de Graaff »

Re: check filesystem at boot
« Reactie #4 Gepost op: 2010/08/29, 19:01:42 »
Ik heb een scriptje gemaakt om te kijken of het werkt, maar die doet het helaas nog niet. Dit scriptje zou dan in /etc/init.d moeten komen, en links in /etc/rc0.d/S05diskcheck en /etc/rc2.d/S40diskcheck. In runlevel 0 (afsluiten) wordt er gekeken of er het bestandje /diskcheck is, zo niet dan wordt dat gemaakt, en ook /forcefsck, daarna wordt overgegaan naar reboot. Bij het opstarten wordt er gekeken of /diskcheck er is, zo ja dan wordt afgesloten. Bij het afsluiten wordt het script vervolgens weer aangeroepen. Zou toch moeten kunnen werken..

#! /bin/sh
level="`/sbin/runlevel`"
case "$level" in
"N 0")
if [ -e /diskcheck ]; then
/bin/rm /diskcheck
else
/bin/touch /forcefsck
/bin/touch /diskcheck
/sbin/telinit 6
fi
;;
"N 2")
if [ -e /diskcheck ]; then
/sbin/shutdown -h now
fi
;;
esac

Re: check filesystem at boot
« Reactie #5 Gepost op: 2010/08/29, 22:54:14 »
Ok, ik heb het maar in drie losse scriptjes gegooid, runlevel herkenning gaat blijkbaar niet zoals ik dacht. Niet mooi, maar het werkt wel.

/etc/init.d/diskcheck:
#! /bin/sh
reboots=30
if [ -e /diskcheck ]; then
        teller=`/bin/cat /diskcheck`
else
        teller=0
fi

teller=$((teller + 1))
echo $teller > /diskcheck

if [ $teller -ge $reboots ]; then
        /bin/touch /forcefsck
        /sbin/telinit 6
fi

/etc/init.d/diskcheck2
#! /bin/sh
reboots=30
if [ -e /diskcheck ]; then
        teller=`/bin/cat /diskcheck`
else
        teller=0
fi

teller=$((teller + 1))
echo $teller > /diskcheck

if [ $teller -ge $reboots ]; then
        /bin/touch /forcefsck
        /bin/touch /reboot
        /sbin/telinit 6
fi

/etc/init.d/diskcheck3:
#!/bin/sh
reboots=30
if [ `/bin/cat /diskcheck` -ge $reboots ];then
        echo "0" > /diskcheck
        if [ -e /reboot ]; then
        /bin/rm /reboot
        else
        /sbin/shutdown -h now
        fi
fi

Wijzig in de scripts "reboots = 30" in het aantal reboots tot controle.
Maak ze executable. Maak vervolgens de volgende symbolische links:

ln -s /etc/init.d/diskcheck /etc/rc0.d/S05diskcheck
ln -s /etc/init.d/diskcheck2 /etc/rc6.d/S05diskcheck2
ln -s /etc/init.d/diskcheck3 /etc/rc2.d/S40diskcheck3


En dan wordt er na 30 maal herstarten een schijfcontrole uitgevoerd na het afsluiten. Natuurlijk nog wel de schijfcontrole vóór het opstarten uitzetten dan.

(p.s. als de 30e keer een herstart is, dan moet je natuurlijk nog steeds wachten)
« Laatst bewerkt op: 2010/08/30, 12:35:31 door Thomas de Graaff »

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: check filesystem at boot
« Reactie #6 Gepost op: 2010/08/30, 00:16:22 »
Volgens mij is er al een bestaand pakket dat het controleren doet bij het afsluiten.
Autofsck: https://wiki.ubuntu.com/AutoFsck

Het is alleen wel een wat ouder project, dus ik heb geen idee of het nog correct functioneert in recente versies van Ubuntu.

Re: check filesystem at boot
« Reactie #7 Gepost op: 2010/08/30, 07:33:42 »
Inderdaad, dat pakket doet volgens mij precies wat gevraagd is. :)

Offline i12know

  • Lid
Re: check filesystem at boot
« Reactie #8 Gepost op: 2010/08/31, 00:32:47 »
Inderdaad, dat pakket doet volgens mij precies wat gevraagd is. :)

Ik zie dat er wat los komt, leuk. Heb het ff erg druk, zal in de loop van de week e.e.a. even goed bekijken alvast bedankt.

gr Marius