PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ext4 I/O Error bei Samba Zugriff Win7 -> Debian



Odin3011
10.01.14, 11:06
Hallo,
ich möchte gerne einen Ordner einer externen Festplatte in meinem Netzwerk bereitstellen, welcher von einem Windows 7 Rechner gepflegt werden soll.
Mein Server ist dabei ein Fujitsu Futro S400 Thinclient, auf dessen CF-Karte Debian läuft. Da dieser auch zum testen von Homepages verwendet wird, habe ich gestern den /var Ordner auf eine externe Festplatte ausgelagert. Dies läuft auch alles fehlerfrei, auf die externe Festplatte wird ohne Probleme zugegriffen und geschrieben, auch in dmesg sind keine auffälligen Sachen zur externen Festplatte zu finden.

Zur externen Festplatte: diese war vorher in einem Laptop drinnen, 2,5", 500GB, 7mm hoch. Habe diese daraufhin in ein externes Festplattengehäuse gesteckt (USB 3), welches mit einem Kabel (kein Y-Kabel) an dem USB 2 Port vom Futro hängt.

Jetzt wollte ich den Ordner /var/share im Netzwerk bereitstellen. Habe dazu die smb.conf angepasst:


[global]
workgroup = local
security = share

[public]
comment = 500GB HDD
path = /var/share
public = yes
writable = yes
create mask = 0777
directory mask = 0777
force user = nobody
force group = nogroup


Das verbinden mit dem Ordner unter Windows über \\server\public funktioniert einwandfrei. Ich kann Ordner / Dateien lesen und schreiben.

Dieser Ordner soll jedoch vom Windows 7 Rechner gepflegt werden, und zwar als Kopie von lokalen Dateien (z.B. Musiksammlung, Familienvideos, usw.). Habe also auf meinem Windows-Rechner eine Batch-Datei für robocopy angelegt, damit dies automatisiert im Hintergrund laufen kann.


robocopy.exe "D:\Videos" "\\192.168.0.5\public\Videos" /MIR /v /NP /TEE /Z /DCOPY:T /COPY:DT /FFT /R:5 /W:5

Mit den Parametern habe ich lange herumprobiert, da er zum Beispiel immer abgebrochen ist, wenn er Dateiattribute oder manche Zeitstempel setzen wollte (liegt wohl am anderen Dateisystem?).
Jedoch habe ich auch hierbei wieder das gleiche Problem, welches vorher (bei anderen Parametern) noch früher auftrat: Nach ein paar kopierten Dateien wird der Zugriff verweigert. Meine Batch-Datei bricht also ab. Auch ein anderes Tool hat hier irgendwann aufgehört zu arbeiten.

Daraufhin wollte ich mich mit ssh einloggen, aber dies ging nicht mehr. Nach einem reboot hatte ich das ganze wiederholt, mich jedoch vorher via ssh eingeloggt.
Wenn ich nach diesem Abbruch z.B. "ls /var" ausführen möchte, kommt ein I/O Error zurück. Auf die Festplatte kann nicht mehr zugegriffen werden, auch beim "reboot" Befehl kommt die Nachricht dass paar Dateien in /var/... nicht geöffnet werden konnten.
Dmesg sagt dazu folgendes (Ausschnitt):


[ 357.488013] Buffer I/O error on device sdb2, logical block 4113660
[ 357.488013] Buffer I/O error on device sdb2, logical block 4113661
[ 357.488013] Buffer I/O error on device sdb2, logical block 4113662
[ 357.488013] Buffer I/O error on device sdb2, logical block 4113663
[ 357.488013] Buffer I/O error on device sdb2, logical block 4113664
[ 357.488013] Buffer I/O error on device sdb2, logical block 4113665
[ 357.488013] EXT4-fs warning (device sdb2): ext4_end_bio:250: I/O error writing to inode 262236 (offset 206454784 size 126976 starting block 4165122)
[ 357.488013] Buffer I/O error on device sdb2, logical block 4113666
[ 357.488013] EXT4-fs warning (device sdb2): ext4_end_bio:250: I/O error writing to inode 262236 (offset 206577664 size 4096 starting block 4165123)
[ 357.663254] JBD2: Detected IO errors while flushing file data on sdb2-8
[ 357.663281] Aborting journal on device sdb2-8.
[ 357.668494] EXT4-fs error (device sdb2) in ext4_da_write_begin:2453: IO failure
[ 357.668723] EXT4-fs (sdb2): previous I/O error to superblock detected
[ 357.668804] EXT4-fs error (device sdb2): ext4_journal_start_sb:327: Detected aborted journal
[ 357.668925] EXT4-fs (sdb2): Remounting filesystem read-only
[ 357.668977] EXT4-fs (sdb2): previous I/O error to superblock detected
[ 357.676140] JBD2: I/O error detected when updating journal superblock for sdb2-8.
[ 357.676525] JBD2: Detected IO errors while flushing file data on sdb2-8
[ 357.676549] journal commit I/O error
[ 357.864158] EXT4-fs error (device sdb2): ext4_find_entry:932: inode #2: comm rs:main Q:Reg: reading directory lblock 0
[ 359.152064] usb 1-3: new high-speed USB device number 4 using ehci_hcd
[ 359.285135] usb 1-3: New USB device found, idVendor=2537, idProduct=1066
[ 359.285152] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 359.285163] usb 1-3: Product: NS1066
[ 359.285171] usb 1-3: Manufacturer: Inateck
[ 359.285179] usb 1-3: SerialNumber: 0123456789ABCDE
[ 359.287352] scsi3 : usb-storage 1-3:1.0
[ 360.814753] scsi 3:0:0:0: Direct-Access Inateck B990 PQ: 0 ANSI: 6
[ 360.821250] sd 3:0:0:0: Attached scsi generic sg1 type 0
[ 360.821544] sd 3:0:0:0: [sdc] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[ 360.822568] sd 3:0:0:0: [sdc] Write Protect is off
[ 360.822584] sd 3:0:0:0: [sdc] Mode Sense: 43 00 00 00
[ 360.823417] sd 3:0:0:0: [sdc] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 360.892246] sdc: sdc1 sdc2
[ 360.899531] sd 3:0:0:0: [sdc] Attached SCSI disk
[ 362.343665] EXT4-fs error (device sdb2): ext4_find_entry:932: inode #2: comm bash: reading directory lblock 0


Da die Festplatte jedoch sehr neu ist, bzw. fast ungenutzt, denke ich mal, dass an ihr selbst nicht der Fehler liegen kann. Eine Idee, welche mir heute Nacht gekommen ist, war noch, dass es vllt an fehlender Stromversorgung liegen könnte? Dass durch die große Datenmenge beim Kopieren (mehrere Videos, also schon paar GB) irgendwann der Cache oder sonstwas vom Controller / der Festplatte voll ist und irgendwas nicht mehr richtig läuft, weswegen es zu den I/O Fehlern kommt.

Habt ihr eine Idee woran das genau liegen könnte bzw. wie ich das beheben kann? Vor paar Monaten hatte ich auf einen ähnlichen Weg eine 3,5" ext. Festplatte mit eigener Stromversorgung dran hängen und da hat (wenn auch langsam) ein ganzes Vollbackup von meinem Windows-Rechner problemlos geklappt (jedoch mit anderen smb Einstellungen)...

Hoffe ihr könnt mir helfen!
lg Sven

pibi
10.01.14, 11:31
Nur ein paar Ideen:

/var/share als Mountpoint finde ich persoenlich nicht ideal
Habe diese daraufhin in ein externes Festplattengehäuse gesteckt (USB 3), welches mit einem Kabel (kein Y-Kabel) an dem USB 2 Port vom Futro hängt.Die Kombination USB2 und 3 kann Probleme geben, muss aber nicht.
Vor paar Monaten hatte ich auf einen ähnlichen Weg eine 3,5" ext. Festplatte mit eigener Stromversorgung dran hängen und da hat (wenn auch langsam) ein ganzes Vollbackup von meinem Windows-Rechner problemlos geklappt (jedoch mit anderen smb Einstellungen)...Das heisst, dass jetzt die externe Disk ueber USB mit Strom versorgt wird? Das kann auch Probleme geben, muss aber nicht. Ich selber hatte jedenfalls damit noch keine.

Gruss Pit.

Odin3011
10.01.14, 19:32
Also der Mountpoint selbst ist /var für die externe Festplatte. /var/share nur als Ordner für die Samba-Freigabe.
Auszug aus /etc/fstab

UUID=abcdef /var ext4 defaults 0 0

Ich habe leider kein USB 2 Gehäuse um dies zu testen. Und leider weist der I/O Error auch nicht auf genaueres hin, ob es an mangelnder Stromversorgung liegt oder ob es Probleme mit dem USB Controller vom Laufwerk gibt. Auf jeden Fall ist der Fehler immer wieder reproduzierbar.
Normale r/w Operationen vom System aus laufen nun seit einem Tag problemlos und in dmesg gibt es nichts neues. Nur wenn ich größere Dateimengen von Windows via Samba übertrage, kommt es zu den besagten Fehlern...

lg Sven

Rain_maker
11.01.14, 10:48
Also der Mountpoint selbst ist /var für die externe Festplatte.

Das wiederum ist nicht mehr nur unglücklich sondern schlichtweg eine ganz schlechte Idee.

Damit pfuschst Du Deinem System beim Einhängen gewaltig ins Handwerk, schau doch mal, was vor dem Einhängen so in /var liegt, dann weisst Du auch warum.

Es verbietet Dir übrigens niemand, für ein externes Gerät einen eigenen Ordner im Dateibaum anzulegen, der nur für diese Platte als Einhängpunkt dient, man darf ihn dann sogar so nennen, daß man als Nutzer gleich weiß, was da drin sein dürfte.

Greetz,

RM

Odin3011
11.01.14, 10:54
Ich weiß, was alles in /var liegt. Da mein Server jedoch nur eine kleine CF-Karte hat, und ich aber z.B. für Webdesign größere Datenmengen in /var/www haben möchte oder auch Datenbanken usw., habe ich jegliche /var Dateien mittels "cp -ax /var /media/externehdd" auf die externe Festplatte kopiert, um dem Platzproblem zu entgehen.
Dies erfolgte nach dieser (http://blog.oshim.net/2011/10/how-to-move-var-folder-to-new-partition.html) Anleitung.
Das ganze läuft beim booten auch sauber durch und die Daten werden fehlerfrei auf die externe Festplatte kopiert, z.B. bei Homepages, apt, SQL Datenbanken usw.

Odin3011
18.01.14, 15:26
Hallo miteinander,
ich habe mich noch einmal mit dem ganzen auseinandergesetzt. Habe dazu die externe Festplatte formatiert (zuvor den Inhalt für /var wieder auf die Festplatte des Servers kopiert und nach einem Neustart wurde dies wieder fehlerfrei verwendet) und zwei Partitionen erstellt. Eine für /var und eine für den Samba-Share.
Die zweite Partition wurde mit NTFS formatiert und mittels ntfs-3g so eingebunden, wie meine alte externe Festplatte, bei der alles reibungslos klappte. Alle Werte waren somit dahingehend identisch, ebenso das Dateisystem. Zugriff über Samba klappt auch, lesen sowie schreiben. Habe darauf versucht drei größere Videos zu kopieren (Win Rechner -> Linux Server), was erneut nach ca. 1GB (1 Datei und ein bisschen der zweiten) abbrach.
Daraufhin habe ich mittels PuTTY das eine komplett übertragene Video 3x kopiert (cp video.mpg video1.mpg usw.) innerhalb der externen Festplatte und schließlich den gesamten Ordner mit den 3 Videos ebenso innerhalb der externen Festplatte (cp -R Videos/ Videos1). Somit wurden im letzten Schritt um die 3GB kopiert und alles lief fehlerfrei ab.

Kann ich also davon ausgehen, dass der Fehler "irgendwie" mit samba zusammen hängt? Das kopieren größerer Datenmengen innerhalb der Festplatte klappte am Linux Server schließlich fehlerfrei...

Und hat irgendwer eine Idee, woran das genau liegen könnte?

pferdefreund
20.01.14, 09:31
IO-Error hat meiner Meinung nach nichts mit Samba zu tun - das ist eine Meldung einige Ebenen tiefer. samba ist auch nur ein Programm wie viele ander, was liest und schreibt. Apropos - bei großen Datenmengen wird die Platte da eventuell zu heiß ? Das Problem hatte ich mal mit ner 2. Platte im Rechner - lief problemlos und ab einer gewissen Menge kamen dann auch die IO-Errors. Das Teil ausgebaut und draußen laufen lassen - 0 Fehler auch bei großen Datenmengen.

Odin3011
20.01.14, 09:52
Guten morgen,
gestern hatte ich schließlich die Möglichkeit eine andere externe Festplatte an den PC zu hängen, nämlich eine "richtige", also keine normale Festplatte + Gehäuse.
Dass Samba keine Fehlerquelle ist, konnte ich ebenso ausschließen (obwohl man sich das eigentlich hätte denken können), indem ich samba4 selbst kompiliert habe bzw. es auch mal mittels FTP getestet habe.

Ergebnis mit der anderen externen Festplatte war nun, dass auch hier ein Fehler dieser Art auftritt, der aber bei weitem nicht so fatal ist. Irgendwann hört der Kopiervorgang auf (egal ob via samba, ftp oder intern), aber so 5 - 10 Sekunden später wird er fortgesetzt. Wenn man also genügend Zeit mitbringt, läuft das ganze auch fehlerfrei durch. Ich tippe also, dass meine Fehler auf das externe Festplattengehäuse zurück zu führen sind bzw. dass die Festplatte dort entweder zu heiß wurde, wie der pferdefreund schreibt, oder bei großen Datenmengen mehr Strom zieht, als USB liefern kann.

Ich werde mir nun wohl ein anderes USB-Gehäuse für die Festplatte holen, weil ich mal stark davon ausgehe, dass da mein Fehler liegt. Selbst bei der Kopier-Pause der anderen Festplatte stockte diese nur, setzte aber daraufhin alles fort und auch dmesg zeigte nichts neues, also keine I/O Fehler.

asterixxer
20.01.14, 14:21
Falls vorhanden kannst du ja die Festplatte mal in eine Gehaeuse tun welches eine extra Netzteil mitbringt und dann nochmal testen...