Einstweiliger Workaround zum Freezer/Aussetzer Problem bei Aufnahmen mit Kernel 3.x

Aus OE-Alliance Support Wiki
Wechseln zu: Navigation, Suche

Nach exzessiven Tests mit verschiedenen Dateisystemen haben die vom Freezer-/Aussetzerproblem betroffen User im et-view-support Forum folgenden "Workaround" erarbeitet und als gut befunden, bis das eigentliche Problem erkannt und behoben ist.

Es wird letztendlich ein Problem im ext4 Treiber des 3.x Kernel vermutet, der zu Problemen bei Festplattenzugriffen führt. Dieser ext4 Treiber wird beim 3.1 Kernel standardmäßig verwendet, um ext2, ext3 und ext4 Plattern zu verwalten. Für ext2/ext3 Platten gibt es aber die Möglichkeit, die älteren ext2/ext3 Treiber zur Verwaltung dieser Platten zu verwenden. Damit scheint ein Workaround geschaffen zu sein, um die Aussetzer zu vermeiden

Benutzer anudanan hat diesen Text aus dem entsprechenden Thread im Forum genommen, der von Kent und anderen Benutzern erstellt wurde und hier eingestellt

Der Dank geht an die engagierten User für das Testen, insbesondere an User Familievierfuss, der sich die Mühe gemacht hat, folgende Anleitung zu verfassen:

Nachfolgendes ist den Threads von den Benutzern tam2010 [1] und Biki3 [2] entnommen und entsprechend abgeändert worden:

Sowie von etlichen anderen findigen Usern hier in diesem Thread.

Es gibt drei Ansätze:

  • Platte mit ext2 formatieren und Eintrag eines Mountpoints in die fstab
  • ext3 Platten in die fstab einbinden
  • vor ein paar Tagen ist noch ein Ansatz hinzugekommen, daß eine Option nodealloc bei ext4 das Problem beseitigen kann. Dazu fehlen aber noch Tests von Benutzern mit ext4 und der nodealloc Option. Wenn es Ergebnisse gibt, wird das hier nachgetragen.



Platte mit ext2 formatieren und Eintrag eines Mountpoints in die fstab.

ACHTUNG: Wie bei jedem Formatieren, wird die Platte gelöscht!!! Evtl. Filme und Daten sind weg!!!'


Hat man eine interne und externe Platte, dann muss man darauf achten, ob die interne Platte tatsächlich sda1 ist oder nicht wie bei mir sdb1. Nicht das man die falsche Platte formatiert!!!


1a.) Um eine Festplatte in ext2 zu formatieren sind via Telnet folgende Befehle nötig:

umount /dev/sda1
mkfs.ext2 -T largefile -m0 /dev/sda1
mount /dev/sda1 /media/hdd
mkdir /media/hdd/movie

Danach geht es weiter zu Punkt 2.


1b.) Bei 4k Sektoren HDD


umount /dev/sda1

Via Telnet nun den folgenden Block so reinkopieren und ausführen

sfdisk -uS -f /dev/sda << EOF
2048,,L,-
EOF

danach bei ext2:

mkfs.ext2 -T largefile -m0 /dev/sda1
mount /dev/sda1 /media/hdd
mkdir /media/hdd/movie

für ext3:

mkfs.ext3 -T largefile -m0 -O dir_index /dev/sda1
mount /dev/sda1 /media/hdd
mkdir /media/hdd/movie 




2.) Nachladen von Programmpaketen und Treibern

Wir benötigen einige Befehle und Treiber, welche in einem der letzten PLI-Updates leider raus gefallen sind. Da wir uns via Telnet auf der Box befinden ist es am einfachsten diese nun hier nachzuinstallieren.

Als erstes benötigen wir das e2fsprogs Paket

Zum installieren bei bestehender Internetverbindung folgendes eingeben: (Falls die folgenden Pakete/Treiber schon vorhanden sind, bekommen wir eine entsprechende Mitteilung, aber sicherheitshalber geben wir alles neu ein!)

opkg update
opkg install e2fsprogs

nun laden wir den ext2 Treiber:

opkg install kernel-module-ext2

Da wir gerade dabei sind, wollen wir auch nicht auf den ext3 Treiber verzichten, denn einige User berichten dass es auch mit dem ext3 Treiber und einem entsprechenden Eintrag in der fstab fehlerfrei funktioniert, aber dazu später.

Einfach im Telnet die Pfeiltaste hoch drücken, der letzte Befehl wird angezeigt. Die 2 durch eine 3 ersetzen und Enter drücken.

opkg install kernel-module-ext3

Jetzt haben wir alle notwendigen Pakete/Treiber geladen.


3.) Eintrag eines manuellen Mountpoints in die fstab

via Telnet

blkid

Man bekommt eine Ausgabe wie folgt:

/dev/ubi0_0: UUID="123b87-5cc1-4407-9fd3-1753849a118" TYPE="ubifs"
/dev/sda1: UUID="38dcece1-aa50-4a85-b47c-9c34f4967f15" TYPE="ext2"
/dev/sdc1: LABEL="My Book" UUID="A318-9DCA" TYPE="vfat"
/dev/sdb1: LABEL="VERBATIM" UUID="601E-2189" TYPE="vfat"

Den markierten Wert muss man nun in die fstab eintragen. Diese findet man im Verzeichnis /etc der Box. Am besten via ftp auf den Desktop kopieren und mit einem Linuxfähigen Editor z.B. Notepad++ bearbeiten. Nicht mit dem Windowseditor!

WICHTIG: die Ziffernfolge "38dcece1-aa50-4a85-b47c-9c34f4967f15" beim Eintrag in der fstab ist nur beispielhaft und muß durch die Zeichenfolge ersetzt werden, die der Befehl blkid für Eure entsprechende Festplatte ausgegeben hat!!


rootfs               /                    auto       defaults              1  1
proc                 /proc                proc       defaults              0  0
devpts               /dev/pts             devpts     mode=0620,gid=5       0  0
usbfs                /proc/bus/usb        usbfs      defaults              0  0
tmpfs                /var/volatile        tmpfs      defaults              0  0
UUID=38dcece1-aa50-4a85-b47c-9c34f4967f15  /media/hdd       ext2   defaults   0  0


4.) fstab zurückkopieren

Wenn die fstab fertig editiert ist kopiert man sie wieder auf den CT ET9x00 nach /etc zurück und macht einen Reboot des CT ET9x00. Dann neu booten mit:

shutdown -r now

Fertig!


Achtung:

  • Bei jedem Formatieren ändert sich die UUID => ggf. neu auslesen.
  • Bei einem PLI-Update bleibt die fstab erhalten.
  • Bei einem Flashen eines anderen komplett neuen Images geht der fstab Eintrag und die ext2/3 Treiber verloren, daher immer ein Backup der fstab behalten, dieses zurückspielen sowie die ext2/3 Treiber und das e2fsprogs neu installieren.
  • Hat man eine interne und externe Platte, dann muss man darauf achten, ob die interne Platte tatsächlich sda1 ist oder nicht wie bei mir sdb1. Nicht das man die falsche Platte formatiert!!!
  • Bei einem Stromausfall oder nach einem Greenscreen ist es wichtig ein Filesystemcheck zu machen, da es sonst zu Inkonsistenzen kommen kann (~20min bei 1TB)



ext3 Platten in die fstab einbinden

Normalerweise werden ext3 formatierte Platten durch den ext4 Treiber betrieben, jedoch tauchen auch hier bei etlichen Usern Freezer auf. Einige User haben jedoch die ext3 formatierte Platte mit einem Mountpunkt "ext3" in der fstab eingetragen und dort auch keine Freezer mehr. Hier der Weg dorthin:


1.) Nachladen von Programmpaketen und Treibern

Wir benötigen einige Befehle und Treiber, welche in einem der letzten PLI-Updates leider raus gefallen sind. Da wir uns via Telnet auf der Box befinden ist es am einfachsten diese nun hier nachzuinstallieren.

Als erstes benötigen wir das e2fsprogs Paket

Zum installieren bei bestehender Internetverbindung folgendes eingeben: (Falls die folgenden Pakete/Treiber schon vorhanden sind, bekommen wir eine entsprechende Mitteilung, aber sicherheitshalber geben wir alles neu ein!)

opkg update
opkg install e2fsprogs

Nun laden wir den ext3 Treiber:

opkg install kernel-module-ext3

Da wir gerade dabei sind, wollen wir auch nicht auf den ext2 Treiber verzichten, vielleicht hat man ja auch eine externe ext2 Platte oder möchte später umformatieren und es ist nicht viel Arbeit. Man hat dann den Treiber für "schlechte Zeiten" ;-).

Einfach im Telnet die Pfeiltaste hoch drücken, der letzte Befehl wird angezeigt. Die 3 durch eine 2 ersetzen und Enter drücken.

opkg install kernel-module-ext2

Jetzt haben wir alle notwendigen Pakete/Treiber geladen.


2.) Eintrag eines manuellen Mountpoints in die fstab

via Telnet

blkid

Man bekommt eine Ausgabe wie folgt:

/dev/ubi0_0: UUID="123b87-5cc1-4407-9fd3-1753849a118" TYPE="ubifs"
/dev/sda1: UUID="38dcece1-aa50-4a85-b47c-9c34f4967f15" TYPE="ext3"
/dev/sdc1: LABEL="My Book" UUID="A318-9DCA" TYPE="vfat"
/dev/sdb1: LABEL="VERBATIM" UUID="601E-2189" TYPE="vfat" 

Den markierten Wert muss man nun in die fstab eintragen. Diese findet man im Verzeichnis /etc der Box. Am besten via ftp auf den Desktop kopieren und mit einem Linuxfähigen Editor z.B. Notepad++ bearbeiten. Nicht mit dem Windowseditor!

WICHTIG: die Ziffernfolge "38dcece1-aa50-4a85-b47c-9c34f4967f15" beim Eintrag in der fstab ist nur beispielhaft und muß durch die Zeichenfolge ersetzt werden, die der Befehl blkid für Eure entsprechende Festplatte ausgegeben hat!!

rootfs               /                    auto       defaults              1  1
proc                 /proc                proc       defaults              0  0
devpts               /dev/pts             devpts     mode=0620,gid=5       0  0
usbfs                /proc/bus/usb        usbfs      defaults              0  0
tmpfs                /var/volatile        tmpfs      defaults              0  0
UUID=38dcece1-aa50-4a85-b47c-9c34f4967f15  /media/hdd       ext3    defaults    0  0


3.) fstab zurückkopieren

Wenn die fstab fertig editiert ist, kopiert man sie wieder auf den CT ET9x00 nach /etc zurück und macht einen Reboot des CT ET9x00.

shutdown -r now

Fertig!


Achtung:

  • Bei jedem Formatieren ändert sich die UUID => ggf. neu auslesen.
  • Bei einem PLI-Update bleibt die fstab erhalten.
  • Bei einem Flashen eines anderen komplett neuen Images geht der fstab Eintrag und die ext2/3 Treiber verloren, daher immer ein Backup der fstab behalten, dieses zurückspielen sowie die ext2/3 Treiber und das e2fsprogs neu installieren.



Mount/fstab Option dealloc bei ext4

Laut der Untersuchungen im PLI Forum soll die Option nodealloc beim mounten von ext4 auch die Aussetzer beseitigen. Dazu fehlen aber noch Tests von Benutzern mit ext4 und der nodealloc Option. Wenn es Ergebnisse gibt, wird das hier nachgetragen.


Hier noch eine alternative Möglichkeit mit ext4.

Diese Vorgehensweise ist nur für erfahrene User geeignet, die genau wissen was sie tun. Es wird das Journaling bei ext4 ausgeschaltet und writeback aktiviert. Diese Einstellungen bewirken, dass IO Operationen zur Festplatte performanter ablaufen.

Der Nachteil ist, dass bei plötzlichem Stromausfall und laufenden Aufnahmen, Datenverlust auftreten kann. Meist sind das aber nur 5-15 Sekunden. Sollte das passieren, dann auf jeden Fall anschließend einen Festplattencheck ausführen.

Wenn es häufig zu Stromausfall und Crashs kommt, dann kann es durchaus passieren, dass es zu defekten Dateien und damit zu umfangreicherem Datenverlust kommt. Diese Daten werden dann bei Linux nach Reparatur mit z.B. GParted, in lost+found geschrieben, sind aber meist nicht mehr herstellbar. In seltenen Fällen, kann dies auch dazu führen, dass die Festplatte neu formatiert werden muss und alle Daten dann verloren sind.


''Note: Ich übernehme keinerlei Verantwortung für eventuellen Datenverlust oder sonstige Probleme, die mit der Ausführung der Anleitung zusammenhängen, oder auch nicht zusammenhängen. Die User tun dies ausschließlich auf eigene Gefahr.


Falls tunefs noch nicht installiert ist, kann es mit folgendem Befehl im telnet nachinstalliert werden:

opkg install e2fsprogs-tune2fs


Folgendes kann das ausgeführt werden, um das Journal bei ext4 auszuschalten: telnet auf die Box

1.) Platte muss unmountet werden:

cd /
umount /dev/sda1


2.) Journaling ausschalten: (dauert ca. 5-10 Minuten - nicht abbrechen)

tune2fs -O ^has_journal /dev/sda1


3.) Set writeback mode:

tune2fs -o journal_data_writeback /dev/sda1


4.)Filesystemcheck: (dauert 10-15Min - nicht abbrechen)

e2fsck -f /dev/sda1


5.) Mount-Eintrag in die /etc/fstab

Falls e2fsprogs noch nicht installiert ist, kann man mit folgendem Befehl es nachinstallieren:

opkg install e2fsprogs

blkid ausführen (gibt die UUID eurer Festplatte aus und diese muss dann im Mountbefehl (siehe Beispiel) enthalten sein.

blkid

den Mount in der /etc/fstab mit z.B. Notepad++, oder vi (linux) machen. Vorher eine Sicherung der originalen fstab erstellen.

Beispiel: UUID=7b6be996-9e3v-4711-delt-66677861a999 /media/hdd ext4 noatime,data=writeback,barrier=0,nobh,errors=remount-ro


6.) Box runter fahren:

sync;sync
shutdown -h now


7.) Box wieder hoch fahren.


8.) Gucken ob es geklappt hat:

telnet auf die box und eingeben

dmesg | grep EXT4

(Ausgabe sollte etwa so sein:

EXT4-fs (sda1): mounted filesystem without journal. Opts: data=writeback,barrier=0,nobh,errors=remount-ro)


Dann kann man testen, ob die bessere Performance was bringt...

Falls man entscheidet das Journaling wieder anschalten zu wollen, folgendes command benutzen und anschließend den Mount in /etc/fstab wieder entfernen, Festplattencheck und Box runter und wieder hochfahren:

tune2fs -O has_journal /dev/sda1



Demux Buffer etc.

Es gibt zwar unterschiedliche Meinungen zum Thema, aber mit folgenden Einstellungen haben einige User gute Erfahrungen gemacht:

Unter Menü>Einstellungen>System>Aufnahme trägt man ziemlich weit unten folgendes ein:

Recording data sync size = 4MB

Recording demux buffer size = Huge 2MB (diese Einstellung gibt es in einem aktuellen OpenPLI nicht mehr, der Wert wird intern automatisch gesetzt)



Filesystemcheck

Bei ext2 Platten und bei ext3/4 Platten mit abgeschaltetem Journaling ist es bei einem Stromausfall oder Greenscreen wichtig die Platten auf Inkonsistenten des Filesystems zu checken, da es sonst im Laufe der Zeit zu Datenverlusten kommen kann.

Einzelne Eingaben via Telnet

umount /dev/sda1

und dann folgenden Befehl eingeben. Dauer bei 1TB je nachdem ob ext2/3/4 bis zu 20min (ext3/4 Platten ~ die Hälfte). Test nicht abrechen!

e2fsck -f /dev/sda1

Danach kann die Platte wieder gemountet

mount /dev/sda1 /media/hdd

oder die Box einfach neu gestartet werden.

shutdown -r now