gelöst: Automount bei disk spindown

cwarlich

Neuer User
Mitglied seit
10 Nov 2007
Beiträge
115
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich habe gerade festgestellt, dass bei der neueste Freetz-Revision (2376) der Automount inzwischen auch dann sauber funktioniert, wenn die Platte vorher im Spindown-Modus war :-). Vorher musste ich das /etc/hotplug/storage Script immer mit einem

dd if=/dev/${SD##$SYSFS/block/} of=/dev/null count=1 bs=1

patchen, damit die Platte vorher hochläuft.

Ich hätte trotzdem noch einen "Verbesserungsvorschlag": Wäre es nicht eine gute Idee, vor dem Mounten von ext2/3-Plartitionen e2fsck (entweder mit -p oder mit -y) aufzurufen, _falls_ das Paket e2fsprogs verfügbar, d.h. e2fsck vorhanden ist? Man bräuchte dazu nur in /etc/hotplug/run_mount in der Funktion mount_fs für ext2 und ext3 sowas wie

Code:
if [ -x /usr/sbin/e2fsck ]; then
    /usr/sbin/e2fsck -y $DEVNODE
fi

einzufügen.
 
Nicht schlecht, die Idee - besser noch fände ich allerdings, wenn der User das konfigurieren könnte, ob er die Checks haben möchte (die können ja ggfs. sehr lange dauern).
 
und bei mir sind die ext2tools erst nach dem mount verfügbar...da per external patch auf den usb ausgelagert...
aber das mit dem spindown sieht gut aus...
 
McNetic schrieb:
besser noch fände ich allerdings, wenn der User das konfigurieren könnte, ob er die Checks haben möchte (die können ja ggfs. sehr lange dauern)

Hmm - der Check dauert doch nur dann lange, wenn das Dateisystem nicht clean ist. Sonst wird doch (wie bei jedem normalen PC-Linux) nichts gemacht:

Code:
/var/mod/root # e2fsck /dev/sda2
e2fsck 1.40.8 (13-Mar-2008)
/dev/sda2: clean, 220276/1281120 files, 1119534/5120718 blocks
/var/mod/root #

DarkyPutz schrieb:
und bei mir sind die ext2tools erst nach dem mount verfügbar...da per external patch auf den usb ausgelagert...

Das ist natürlich tragisch ;). Aber im Ernst, wenn Du usbroot benutzt, gibt es doch sowieso (fast) keinen Grund mehr, etwas anderes außer dem usbroot Paket direkt in die FB zu flashen, da ja jetzt alles von externen Flash aus läuft - mit einer weiteren Ausnahme: Den e2fsprogs. Aber für die hat man Dank usbroot ja jetzt jede Menge Patz im Flash der FB :).

johnbock schrieb:
hotplug II (mdev) macht das schon...

Could you give a guess when hotplug II will go into the freetz-trunk? I'm very much looking forward for it, but I don't want to take the risk to apply your patches on my (production) system: My wife and my kids will kill me if the phone would not work for a couple of hours ;).

But anyhow, what about putting my simple-minded e2fsck patch into the trunk in the mean time?
 
Could you give a guess when hotplug II will go into the freetz-trunk?

More than likely, when freetz web interface can umount/swapoff partitions/disks. But I do still have to talk the freetz developers.
 
Hmm - der Check dauert doch nur dann lange, wenn das Dateisystem nicht clean ist. Sonst wird doch (wie bei jedem normalen PC-Linux) nichts gemacht:
Ich bin da nicht ganz sicher, wie der Mechanismus mit dem max-mount-count und interval-between-checks (bei ext2/3fs) funktioniert. Ich glaube eigentlich, daß diese Parameter durch fsck ausgewertet und ggfs. eben auch bei einem 'clean'en Dateisystem der Check durchgeführt wird (was ja auch sinnvoll ist).

Sollte das jedoch nicht der Fall sein, finde ich die umgekehrte Konfigurierbarkeit sinnvoll; nämlich daß der User einstellen kann, daß diese Parameter berücksichtigt werden.

Gruß, Nico
 
Mit tune2fs kann man auf dem Filesystem ablegen, wie oft es gecheckt werden soll.

tune2fs -c 0 -i 0 /dev/sda1

sorgt z.B. dafür, dass das Filesystem nur noch gecheckt wird, wenn es dirty ist. D.h. ein ext3 Filesystem wird in diesem Fall gar nicht mehr gecheckt, da es (durch sein Journal) immer clean ist.

Du hast recht, diese Parameter über das Web-Interface konfigurierbar zu machen wäre natürlich besonders schick. Man könnte das Web-Interface dann z.B. in das Paket e2fsprogs einbringen. Wenn einer von Euch Freetz-Entwicklern das einpflegen würde, könnte ich mich dazu breitschlagen lassen, das vorzubereiten.

Im Moment habe ich für mich selbst eine fwmod_custom erstellt, die den Filesystem Check (ohne Web-Interface) in /etc/hotplug/run_mount reinpatcht. Übrigens war es außerdem auch nur Zufall, dass das Automounten meiner Disk im Spindown-Modus ausnahmsweise (wie im ersten Beitrag zu diesem Thread) mal geklappt hat. Aus diesem Grund patche ich nun doch wieder den Dummy-Plattenzugriff mit "dd" in /etc/hotplug/storage und /etc/init.d/rc.usbroot, damit das Mounten auch dann sicher funktioniert, wenn die Platte beim Booten der FB im Spindown-Modus ist. Hier meine aktuelle, ausführlich kommentierte fwmod_custom:

Code:
#!/bin/bash

# Custom firmware modifications

# Directories:
#  ./firmware   - untared firmware
#  ./filesystem - unpacked filesystem squashfs
#  ./kernel     - unpacked kernel & hidden kernel squashfs

all() {
        # Spin up any sleeping disks to ensure that automount at boot time works.
        # These lines should go into 196-usbstorage.sh.
        sed -i -e '/ls \$SYSFS\/block\/sd\* 2> \/dev\/null && for SD in \$SYSFS\/block\/sd\*; do/a \
\t\t\tdd if=/dev/\${SD##\$SYSFS/block/} of=/dev/null bs=1 count=1' \
        "${FILESYSTEM_MOD_DIR}/etc/hotplug/storage"

        # Spin up any sleeping disks to ensure that automount at boot time works whith usbroot.
        # This modification should directly go into packages/usbroot-0.1/root/etc/init.d/rc.usbroot.
        if [ FREETZ_PACKAGE_USBROOT=y ]; then
                sed -i -e '/ls \$SYSFS\/block\/sd\* 2> \/dev\/null && for SD in \$SYSFS\/block\/sd\*; do/a \
\t\tdd if=/dev/\${SD##\$SYSFS/block/} of=/dev/null bs=1 count=1' \
                "${FILESYSTEM_MOD_DIR}/etc/init.d/rc.usbroot"
        fi

        # Run e2fsck before mounting if the package e2fsprogs is installed.
        # This modification should directly go into patches/cond/usbstorage*.patch.
        sed -i -e 's/^\([ \t]*\)mount[ \t][ \t]*-t[ \t][ \t]*ext[23].*$/\
\1if [ -x \/sbin\/e2fsck ]; then\
\1\t\/sbin\/e2fsck -y \$DEVNODE\
\1fi\
&/' \
        "${FILESYSTEM_MOD_DIR}/etc/hotplug/run_mount"
}

clean() {
        dummy=0
}

. ../../.config
FILESYSTEM_MOD_DIR=filesystem
case "$1" in
        ""|all)
                all
                ;;
        clean)
                clean
                ;;
        *)
                echo "Usage: $0 {all|clean}" 1>&2
                exit 1
                ;;
esac

exit 0

Vielleicht erbarmt sich ja jemand von Euch und nimmt die Zeile

dd if=/dev/${SD##$SYSFS/block/} of=/dev/null bs=1 count=1

bei Gelegenheit mal in die Dateinen /etc/hotplug/storage und /etc/init.d/rc.usbroot (hinter die Zeile "ls $SYSFS/block/sd* 2> /dev/null && for SD in $SYSFS/block/sd*; do") rein.

Gruß,

Christof
 
Wenn einer von Euch Freetz-Entwicklern das einpflegen würde, könnte ich mich dazu breitschlagen lassen, das vorzubereiten.

Wenn Du ein Ticket mit einem Feature Request aufmachst und einen Patch anhängst, ist das sicher schnell geschehen.
 
Kostenlos!

Statistik des Forums

Themen
248,918
Beiträge
2,305,056
Mitglieder
378,640
Neuestes Mitglied
vapep43913