FDS-TEAM
Linux, Windows, Programming and more...
Korruptes Dateisystem bei Samsung Smart TV Aufnahmen reparieren
08 Jun 2013 14:34 CEST  written by Richard, Michael - 3 comment(s)
[article-image]

Gestern noch die Lieblingsserie aufgenommen und nun das: Der Fernseher erkennt die Festplatte nicht mehr und möchte diese neu formatieren! Dies ist sehr ägerlich, da dadurch auch die Aufnahmen gelöscht werden, die noch ungesehen auf der Festplatte gespeichert sind. In vielen Fällen ist es jedoch nicht notwendig eine Formatierung auszuführen, denn ein Großteil der vorhandenen Daten lässt sich mit ein paar einfachen Linux Befehlen retten.

Das Problem entsteht in der Regel durch ein defektes Dateisystem auf der externen Festplatte. Moderne Dateisysteme, wie das von Samsung TVs verwendete XFS, besitzen eigentlich ein Journal um dieses Problem zu verhindern. Die Aufgabe des Journals ist es Änderungen zu vermerken bevor sie tatsächlich durchgeführt werden und so dafür zu Sorgen das sich das Dateisystem bei einem Absturz oder einem Stromausfall immer in einem konsisten Zustand befindet. Würde zum Beispiel beim Umbennen einer Datei das System abstürzen und der Dateiname wäre noch nicht vollständig geschrieben, so würde beim nächsten Start die Umbennenung vollendet werden, da der volle Name bereits im Journal steht (wäre dies nicht der Fall so hätte die Datei ggf. einen ungültigen Namen oder wäre nicht mehr korrekt ins Dateisystem eingebunden).

Auch wenn in der Theorie ein Journal nur Vorteile mit sich bringt, scheint es bei besagten Smart TVs einen Fehler zu geben, durch den das Journal zerstört werden kann. Beim nächsten Start des Betriebssystems des Fernsehers wird dieses dann versuchen die Befehle im Journal auszuführen und feststellen, dass diese ungültig sind - statt den Fehler zu beheben verweigert es jedoch das Laden des Dateisystems, obwohl sich dieses ggf. nach wie vor in einem konsistenten Zustand befindet.

Es gibt jedoch eine einfache Möglichkeit alle Befehle in dem Journal zu löschen und somit die Festplatte für den Fernseher wieder lesbar zu machen. Hierfür wird lediglich eine Linux Distribution mit einem Kernel benötigt, der XFS als Dateisystem unterstützt. Dies trifft z.B. auf alle Ubuntu Versionen zu und funktioniert auch problemlos mit der Live CD oder einer Linux Distribution die auf einem USB Stick installiert ist. Wie man die Live CD nutzt oder Ubuntu auf einem USB Stick installieren kann, lässt sich im offiziellen Wiki von Ubuntu nachlesen.

Nachdem nun die Linux Distribution der Wahl gestartet ist, muss nur noch die besagte externe Festplatte an den PC angeschlossen werden und der Name des zugehörigen Devices herausgefunden werden. Dies lässt sich am Einfachsten durch den Befehl dmesg in einem Terminal bewerkstelligen. Das Terminal kann bei Gnome / Unity (Ubuntu) am einfachsten durch die Tastenkombination CTRL/STRG + ALT + T geöffnet werden. Der Befehl dmesg zeigt die Kernel log an und sollte am Ende einen ähnlichgen Eintrag wie den folgenden zeigen (am Beispiel eines USB Sticks):

[21794.753747] USB Mass Storage support registered.
[21795.779098] scsi 6:0:0:0: Direct-Access     Kingston DT 101 G2        PMAP PQ: 0 ANSI: 0 CCS
[21795.781162] sd 6:0:0:0: Attached scsi generic sg2 type 0
[21797.463584] sd 6:0:0:0: [sdb] 31342592 512-byte logical blocks: (16.0 GB/14.9 GiB)
[21797.465826] sd 6:0:0:0: [sdb] Write Protect is off

Der Eintrag [sdb] bedeutet das der USB Stick den Laufwerksnamen sdb hat und als /dev/sdb im System angesprochen werden kann.

Als nächstes muss überprüft werden ob Linux, im Gegensatz zum Fernseher, in der Lage war das Dateisystem der Festplatte zu mounten. Dies kann man entweder durch einen Blick in den Dateimanager oder den Befehl mount geschehen. Beinhaltet die Ausgabe des Befehls mount folgende Zeile:

/dev/sdb1 on /media/479048as12e908390ge1283d90 type xfs (...)

so ist das Dateisystem erfolgreich gemountet und muss durch den Befehl:

sudo umount /media/479048as12e908390ge1283d90

zunächst wieder entladen werden (Die Zeichen hinter /media/ sind das Label des Dateisystems, welches beim formatieren zufällig vergeben wird und daher unterschiedlich ist).

warning

Warning:

Bei dem Entladen des Dateisystems über die grafische Oberfläche des Dateimanager kann es passieren, dass dieser dem Kernel mitteilt, dass das angegebene Gerät nicht mehr benötigt wird und somit auch die Festplatte nicht mehr über /dev/sdb verfügbar ist. Dies lässt sich in der Kernel log (dmesg) an folgendem Eintrag erkennen:

[15502.278892] sdb: detected capacity change from 7969177600 to 0

Es ist daher empfehlenswert das Dateisystem wie oben beschrieben über die Konsole zu entladen, da dieses Phänomen hierbei nicht auftritt.

Nun muss nur noch das Journal des Dateisystems gelöscht werden, was sich relativ simpel durch folgenden Befehl erledigen lässt:

sudo xfs_repair -L /dev/sdb1

Dabei ist zu beachten das sdb durch das Laufwerk von oben ersetzt werden muss und auch die Partitionsnummer 1 verschiedenen sein kann, wenn manuell mehrere Partitionen auf der Festplatte erstellt wurden. Falls das Programm xfs_repair nicht gefunden wird, so kann dieses über

sudo apt-get install xfsprogs

nachinstalliert werden. Durch den Parameter '-L' wird xfs_repair mitgeteilt das Journal zu löschen, was ggf. zum Verlust von unausgeführten Änderungen an Dateien führen kann. Da die Größe des Journals bei XFS jedoch auf 128 MB begrentzt ist, sollte sich der unerwartete Verlust an Daten, bezogen auf die Größe eine Aufnahme, in Grenzen halten.

Nach dem der Befehl ausgeführt wurde, kann die Festplatte vom PC getrennt werden und der Fernseher sollte diese nun wieder akzeptieren.

03 Jan 2014 00:20 CET comment by Michael

Hallo Flo,

ich habe leider keine Idee wie man den Fehler ohne Formatieren der Festplatte in deinem Fall noch korrigieren könnte. Bei dir scheint es sich scheinbar um einen anderen, selteneren, Fehler im Dateisystem zu handeln.

Michael

31 Dec 2013 16:22 CET comment by Flo

Hat bei mir nicht funktioniert … gibt es noch mehr was ich versuchen könnte?
LG

16 Dec 2013 20:27 CET comment by Matze

Danke für den Tip!
:-)

Write your own comment
We are checking all comments manually before they are published to prevent spam. This usually should not take more than a couple of hours. If you experience problems while sending a comment, send a mail to webmaster at fds-team.de.
The fields email and website are optional, but you need to enter your email address if you want to be notified on new comments. Please note that we additionally save your IP address to prevent flooding.

You can use BBCode tags inside your comments, take a look at the BBcode overview to get a full list of available codes. Keep in mind that we may remove some code tags if we think they are inappropriate.
Name: Email (optional): Website (optional): Comment: Notify via email on new comments
I'm not a spambot or at least I don't think so!
DP-CMS 0.1 RSSRSS - Feed