prefsck

  • In Zeiten immer größer werdender Festplatten wird das Scripft prefsck für mich immer interessanter. Ein Check von meiner 1TB-Platte dauert über 20min!. Da ist so manche zeitgesteuerte Aufnahme für nix.


    Kurze Beschreibung:
    # Dieses Skript führt etwaige anstehende Festplattenüberprüfungen
    # von Ext3- und Ext2-Systeme beim Shutdown des Rechners vorab durch,
    # falls andernfalls beim nächsten Systemstart oder aber innerhalb der
    # nächsten 30 Stunden eine reguläre Überprüfung anstünde.
    #
    # Es muss aus den Shutdown-Skripten der jeweiligen Distribution
    # aufgerufen werden, und zwar zu einem Zeitpunkt, an dem die
    # Dateisysteme entweder unmounted oder read-only gemounted sind.


    Kann mir bitte jemand sagen, wo ich das Scipt beim c't-Vdr bzw. Debian eintragen soll?
    Frounts

  • Zitat

    Das ganze wird noch garniert mit einem Link ; entweder in /etc/rc0.d/ oder in /etc/rc6.d/ ; je nachdem, ob euer System beim runterfahren einen Reboot oder Halt macht... Der Link MUSS nach dem umountfs-Aufruf(hier /etc/rc0.d/S40umountfs) und nach einem evtl. vorhand. umountrootfs und vor dem halt-Aufruf(hier /etc/rc0.d/S90halt) erfolgen !! z. B. ln -s /etc/init.d/fsck /etc/rc0.d/S41fsck


    Quelle


    ...funzt gut!

    Asus ION - Skystar HD PCI - Sundtek - yaVDR 0.6
    Zotac ION - Terratec USB-S2 - Yavdr 0.6
    Goflex Home - Debian Wheezy mit VDR, ISC-DHCP, TFTPD-HPA, NFS, SAMBA ...

  • Zitat

    Original von Frounts
    In Zeiten immer größer werdender Festplatten wird das Scripft prefsck für mich immer interessanter. Ein Check von meiner 1TB-Platte dauert über 20min!. Da ist so manche zeitgesteuerte Aufnahme für nix.


    eventuell einen umstieg auf ext4 andenken, da geht das um ein vielfaches schneller ...


    >>>cyber

    Hardware: Lex Twister (CI945A), Core2Duo T7200 (2x2.0GHz), 2GB SO-DDR2, 2x8GB SSD & 2x2TB WD SATA-HDD (jew. RAID1), Terratec Cinergy 1200 DVB-C
    Software: Debian Squeeze, Kernel 3.6.6
    VDR: etobi's vdr (1.7.X), recording-only; plugins: streamdev-server,dummydevice; addons: XXV, markad, projectX

  • Hallo nochmal,


    ich erweitere meine Frage mal:


    Meine /video Partition ist nun ext3.
    Nach 34 boots wird diese während des Bootens gecheckt und das dauert...


    prefsck wäre ein Weg, das Problem zu umgehen (bleibt die Frage, wo es in gentoo einzubinden ist).


    Kann ich aber die Platte auch in ein Dateisystem umwandeln, welches den check überflüssig macht, oder zumindest beschleunigt, ohne neu zu formatieren?


    Warum dauert das fsck bei ext3 noch so lange? Es ist doch ein journaling system. Oder beschleunigt das Journal den check garnicht, sondern macht ihn nur seltener nötig? Kann ich dann die Häufigkeit runter drehen?


    Gruß,
    Hendrik

  • Zitat

    Original von henfri
    kann mir jemand sagen, wo ich das bei Gentoo einbinde?


    hallo,
    das ist unnötig. Wenn du Baselayout-2 benutzt, dann bringt gentoo diese Funktion von Haus aus mit. Bearbeite dazu die Datei /etc/conf.d/fsck und setze die Variable fsck_shutdown auf YES (also: fsck_shutdown="YES").


    grüße
    noname_gentoo

  • Hallo,


    die Datei existiert bei mir nicht.
    Ich habe sie jetzt erzeugt.
    Wie finde ich heraus, ob ich baselayout-2 nutze?
    Ich nutze Gen2VDR, deshalb weis ich das leider nicht.


    Gruß,
    Hendrik

  • Zitat

    Original von henfri
    Kann ich aber die Platte auch in ein Dateisystem umwandeln, welches den check überflüssig macht, oder zumindest beschleunigt, ohne neu zu formatieren


    Nur mit btrfs, aber das ist noch nicht "production ready". Für alle anderen: Files sichern, mkfs, Files zurückschreiben.


    Zitat

    Warum dauert das fsck bei ext3 noch so lange? Es ist doch ein journaling system.


    Weil's nur ein aufgebohrtes ext2 ist und das eine mit dem anderen nix zu tun hat.


    Zitat

    Oder beschleunigt das Journal den check garnicht, sondern macht ihn nur seltener nötig?


    Weder, noch.


    Zitat

    Kann ich dann die Häufigkeit runter drehen?


    Code
    man tune2fs


    Erwähnte ich schon das es mit XFS... ? :lehrer1


    Bye...


    Dirk

  • Zitat

    [i]ich verwende baselayout-1.12.11.1 (Ist eben default in gen2vdr).



    na und! ich empfele dir auf baselayout 2 und openrc zu wechseln. Der größte Vorteil ist unter anderem auch der, dass dein System - ein wenig - schneller bootet.


    wenn du das ohne Wechsel hinbekommen willst. Dann speicher dieses prefsck-skrip z.b. unter /usr/local/sbin ab (aber ausführbar). Dann öffne /etc/init.d/shutdown.sh und füge ganz oben (d.h 1.zeile) /usr/local/sbin/prefsck.sh ein. probiers mal aus.


    schöne grüße

  • Hallo,


    Zitat

    na und! ich empfele dir auf baselayout 2 und openrc zu wechseln. Der größte Vorteil ist unter anderem auch der, dass dein System - ein wenig - schneller bootet.


    Nee. Zu viel Aufwand (hab mir deinen Link angesehen. Wenn alles klappt, ist es nicht viel Aufwand. Aber die Erfahrung zeigt, dass nicht alles klappt).
    Wenn, dann müsste es HelAu direkt in gen2vdr umsetzen.


    Ich teste mal den Tipp mit der shutdown.sh.


    Zitat


    man tune2fs


    Kenn ich. Die Frage ist, ob nach 34 mounts ein check schon sinnvoll ist.


    Gruß,
    Hendrik

  • Hallo,


    wenn ich prefsck aufrufe, erhalte ich einen Fehler:

    Code
    ++ echo tune2fs 1.41.3 '(12-Oct-2008)'
    + NextCheck='tune2fs 1.41.3 (12-Oct-2008)'
    ++ LANG=C
    ++ date -d 'tune2fs 1.41.3 (12-Oct-2008)' +%s
    date: invalid date `tune2fs 1.41.3 (12-Oct-2008)'


    Die Codezeile lautet:

    Code
    # Dateisysteminformationen einlesen
      FsInfo="$(LANG=C tune2fs -l ${Drive})"


    Scheinbar gibt tune2fs einen anderen Output heraus, als das Skript erwartet.


    Hat jemand eine Idee, woran das liegt?


    Gruß,
    Hendrik

  • Zitat

    Original von henfri
    Die Codezeile lautet:

    Code
    # Dateisysteminformationen einlesen
      FsInfo="$(LANG=C tune2fs -l ${Drive})"


    Scheinbar gibt tune2fs einen anderen Output heraus, als das Skript erwartet.


    Hat jemand eine Idee, woran das liegt?


    so wie es aussieht ist das Skript fehlerhaft. Ersetze mal in Zeile 55 bis Zeile 57 FsInfo durch $FsInfo.
    also:


    Mounts=$(GetValue ${FsInfo} "Mount count:")
    MaxMounts=$(GetValue ${FsInfo} "Maximum mount count:")
    NextCheck=$(GetValue ${FsInfo} "Next check after:")


    Der Fehler dürfte auftreten, weil in Zeile 53 eine Variable FsInfo gesetzt wird, aber in den oben beschriebenen Zeilen nicht gelesen wird (d.h. die Funktion GetValue erhält als input nicht die Variable FsInfo, sondern eine Funktion FsInfo - welche nicht existiert - oder einfach einen Text, mit dem GetValue nichts anfangen kann.


    PS: wie gesagt: ich empfehle dir auf OpenRC und Baselayout-2 zu wechseln


    Grüße
    noname_gentoo

  • Hallo,


    vielen Dank für den Tipp. Das hat mich schonmal weiter gebracht.
    Aber:

    Code
    + NextCheckTs=1249768800
    ++ LANG=C
    ++ date +%s
    + NowTs=1249834349
    + '[' 1 -lt -a 1249942349 -lt 1249768800 ']'
    /_config/bin/prefsck: line 64: [: -a: integer expression expected


    Das liegt wohl daran, dass "MaxMounts" nicht belegt ist.


    Ich frage mich aber, warum das so ist.
    Der Output von tune2fs scheint zu passen:

    Code
    Last mount time:          Sun Aug  9 18:32:49 2009
    Last write time:          Sun Aug  9 18:32:49 2009
    Mount count:              3
    Maximum mount count:      -1
    Last checked:             Sat Aug  8 22:09:10 2009


    Gruß,
    Hendrik

  • Hallo,


    nee, ich glaube nicht, dass es das ist:


    Hier ist MaxMountCount ja gesetzt (34).


    Gruß,
    Hendrik

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!