Führt denn automatisch ein O_DIRECT zum Datensalat? Ich kann hier nämlich immer noch keine Fehler feststellen.MSfree hat geschrieben:12.12.2023 10:30:10Auch hier gilt, was nicht von eine Datenbank geschrieben wurde, ist mit fast 100%iger Sicherheit in Ordnung.
Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
- cosinus
- Beiträge: 4187
- Registriert: 08.02.2016 13:44:11
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: Bremen
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Ja.cosinus hat geschrieben:12.12.2023 10:41:54Führt denn automatisch ein O_DIRECT zum Datensalat? Ich kann hier nämlich immer noch keine Fehler feststellen.
Das läuft ungefähr so ab:
Code: Alles auswählen
positioniere Datei an Stelle 12345 mit fseek()
schreibe 234 Bytes
schreibe weitere 123 Bytes
Grund:
Nachdem die ersten 234 Bytes geschrieben wurde, sollte der Dateipointer von 12345 auf 12345-234=12579 "vorgespult" werden, er bleibt bei O_DIREKT aber wegen des Kernelbugs bei 12345 stehen, weil er nicht aktualisiert wird. Die nächsten 123 Bytes überschreiben also die ersten 123 Bytes der zuvor geschriebenen 234 Bytes.
Wenn allerdings jeder Schreiboperation ein fseek() vorausgeht, passiert kein Datensalat.
Wenn keine Schreiboperationen stattfinden, also nur gelesen wird, passiert ebenfalls kein Datensalat.
Bei gepufferten und gecachten Dateioperationen (also bei Nichtverwendung von O_DIRECT) funktioniert der kaputte Kernel jedoch korrekt, und das stellt die absolute Mehrheit der Anwendungssoftware dar.
O_DIREKT ist nämlich eine starke Performancebremse. Es gibt nur ganz wenige Ausnahmen, bei denen O_DIREKT sinnvoll einsetzbar ist, nämlich dann, wenn ein Programm mit exakt der Blockgröße des Dateisystems liest/schreibt und sich selbst ums Puffern und Cachen kümmert. Den Aufwand, selbst das Dateisystem zu Puffern und Cachen, betreibt man in kaum einer Software, ausser einigen wenigen Datenbankprogrammen.
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Das wird alles noch spannend, wir haben hier zwei Systeme die eine MariaDB einsetzten, da wurde aber nichts oder nur sehr wenig gemacht.
Beides keine System kritischen Systeme, bin mal gespannt ob das irgendwann wieder hoch kommt.
Vielleicht machen die auch das fseek() wie von MSfree beschrieben, wer weiß.
Beides keine System kritischen Systeme, bin mal gespannt ob das irgendwann wieder hoch kommt.
Vielleicht machen die auch das fseek() wie von MSfree beschrieben, wer weiß.
Gruß
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Wenn du häufige Sicherungen mit mysqldump erstellst, kannst du eine kaputte Datenbank ja neu aufsetzen. Mein Mediawiki wird täglich gedumpt, verlieren würde ich hier also höchstens einen Tag. Da mein Mediawiki mit MariaDB nur mir als Notizblock dient, bei dem sich weit weniger als täglich etwas ändert, wäre ich auch hier auf der sicheren Seite.slu hat geschrieben:12.12.2023 11:04:09Das wird alles noch spannend, wir haben hier zwei Systeme die eine MariaDB einsetzten, da wurde aber nichts oder nur sehr wenig gemacht.
Der Sourcecode ist öffentlich, schau halt selbst nach.Vielleicht machen die auch das fseek() wie von MSfree beschrieben, wer weiß.
OK, das war zynisch, ich wüßte jetzt auch nicht, wo ich da mit suchen anfangen sollte.
- cosinus
- Beiträge: 4187
- Registriert: 08.02.2016 13:44:11
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: Bremen
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Ok. Ich geht hier gerade mit dem von @Livingston vorgeschlagenen strace auf den Prozess von mariab los und lasse das loggen. Mal sehen ob ich da nen O_DIRECT finde.
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Ich hatte $SUCHMASCHINE mit O_DIRECT ud MariaDB gefüttert. Die verwendet das wohl, allerdings habe ich hier auch den Hinweis gefunden, daß das in der Enterpriseversion genutzt wird. Dennoch bin ich auf das Resultat deines Traces gespannt.cosinus hat geschrieben:12.12.2023 11:14:24Ok. Ich geht hier gerade mit dem von @Livingston vorgeschlagenen strace auf den Prozess von mariab los und lasse das loggen. Mal sehen ob ich da nen O_DIRECT finde.
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Bei Verwendung der Innodb Engine ist die Variable innodb_flush_method ggf. aufschlussreich:
Code: Alles auswählen
MariaDB [(none)]> show variables like 'innodb_flush_method';
+---------------------+----------+
| Variable_name | Value |
+---------------------+----------+
| innodb_flush_method | O_DIRECT |
+---------------------+----------+
1 row in set (0.001 sec)
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Ja das steht hier auch:
https://mariadb.com/kb/en/innodb-system-variables/
Ich hab jetzt 53MB strace (mit -f) und noch kein O_DIRECT gefunden, ich lass es weiter laufen.
Mein KVM Gast hat auch kein O_DIRECT erzeugt, sind aber erst 22MB, lass ich auch weiter laufen.
https://mariadb.com/kb/en/innodb-system-variables/
Ich hab jetzt 53MB strace (mit -f) und noch kein O_DIRECT gefunden, ich lass es weiter laufen.
Mein KVM Gast hat auch kein O_DIRECT erzeugt, sind aber erst 22MB, lass ich auch weiter laufen.
Gruß
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
- cosinus
- Beiträge: 4187
- Registriert: 08.02.2016 13:44:11
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: Bremen
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Seit etwa einer Stunde zeichnet strace nun alles auf was der Prozess mariadb macht. Auf meinem Inventory-Server wurden da seitdem nur ca. 116 kiB ins Log geschrieben...find ich etwas wenig aber soviel los ist da auch nicht. Alle paar Minuten melden sich die Clients mit ihren Agents und melden ihren neuen Status per HTTP...ein O_DIRECT sehe ich da nicht im Log aber viele Einträge wie
Code: Alles auswählen
accept4(25, ...)
clone3({flags=CLONE_VM|CLONE_FS ...
poll([{fd=23, events=POLLIN}
rt_sigprocmask(SIG_BLOCK, ~[], [HUP INT QUIT PIPE ALRM TERM TSTP], 8) = 0
futex(0x561b0d7447ac, FUTEX_WAKE_PRIVATE, 1) = 1
edit: ich hab das -f bei strace vergessen also nochmal.
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Schaden kann es nicht, wobei der Webserver ja in der Regel nicht so viel wegschreiben (sollte).cosinus hat geschrieben:12.12.2023 12:16:44Sollte ich vllt mal apache2 loggen? Oder macht der kein O_DIRECT?
Ist mir beim ersten mal auch passiert, war verdächtig ruhig.cosinus hat geschrieben:12.12.2023 12:16:44edit: ich hab das -f bei strace vergessen also nochmal.
Gruß
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Apache schreibt eigentlich nur seine Logs und die mit ziemlicher Sicherheit nicht mit O_DIRECT.cosinus hat geschrieben:12.12.2023 12:16:44Sollte ich vllt mal apache2 loggen? Oder macht der kein O_DIRECT?
OK, man kann mit mit PHP natürlich auch Dateien auf den Server schreiben, z.B. in Form eines Uploads. Aber auch hier würde ich keine Schreibvorgänge mit O_DIRECT erwarten.
- cosinus
- Beiträge: 4187
- Registriert: 08.02.2016 13:44:11
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: Bremen
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Ich hab jetzt einen ersten Treffer. Aber nicht bei OCS sondern bei einer anderen VM wo noch ein OTRS-Ticketsystem mit mariadb läuft, was aber de facto nicht mehr genutzt wird. Hab da testweise Tickets gelesen und eine Notiz bei einem zum Testen hinterlassen, bei was genau das O_DIRECT ausgelöst wurde weiß ich aber nicht.
Seh ich das richtig? Das war nur ein readonly Öffnen?
Hab nochmal ein Testticket erstellt...aufgezeichnet von strace wurde das hier:
Code: Alles auswählen
fcntl(193, F_SETFL, O_RDONLY|O_DIRECT) = 0
Hab nochmal ein Testticket erstellt...aufgezeichnet von strace wurde das hier:
Code: Alles auswählen
# grep -in o_direct mariadb.strace
23502:33284 fcntl(196, F_SETFL, O_RDONLY|O_DIRECT) = 0
24129:33284 fcntl(197, F_SETFL, O_RDONLY|O_DIRECT) = 0
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Ja. Solange die so direkt-gelesenen Daten nicht wieder an anderer Stelle zurückgeschrieben werden, wäre das wohl rein auf Dateiebene ungefährlich.cosinus hat geschrieben:12.12.2023 12:37:42Seh ich das richtig? Das war nur ein readonly Öffnen?Code: Alles auswählen
fcntl(193, F_SETFL, O_RDONLY|O_DIRECT) = 0
Ob die lesende Anwendung durch eine gelesene und womöglich kaputte Datei (unerkannt) Mist baut, wäre aber eine Frage auf ner Ebene über dem reinen Dateizugriff.
Manchmal bekannt als Just (another) Terminal Hacker.
- cosinus
- Beiträge: 4187
- Registriert: 08.02.2016 13:44:11
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: Bremen
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Ok. Dann schauen wir mal was mariadb auf unserem Nextcloud-Server so treibt. Logging mit strace gestartet, mit Parameter f
Dann in nextcloud per Browser eingelogt und ne Datei hochgeladen.
grep findet kein O_DIRECT
Ich lass das noch etwas laufen und grepe dann nochmal. Das strace.log hat jetzt gute 4 MB nach 2 Minuten.
Dann in nextcloud per Browser eingelogt und ne Datei hochgeladen.
grep findet kein O_DIRECT
Ich lass das noch etwas laufen und grepe dann nochmal. Das strace.log hat jetzt gute 4 MB nach 2 Minuten.
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Mein Log läuft jetzt seit über einer Stunde 129 MB auf dem Nextcloud Server:cosinus hat geschrieben:12.12.2023 12:58:54Ok. Dann schauen wir mal was mariadb auf unserem Nextcloud-Server so treibt. Logging mit strace gestartet, mit Parameter f
Code: Alles auswählen
grep "O_DIRECT" nextcloud_mariadb.log
11880 openat(AT_FDCWD, "./nextcloud/", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 203
11903 openat(AT_FDCWD, "./nextcloud/", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 203
11905 openat(AT_FDCWD, "./", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 203
Gruß
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
O_DIRECTORY ist etwas völlig anderes und hat mit O_DIRECT nichts zu tun, zumal das ohnehin alles Read-Only Operationen sind.slu hat geschrieben:12.12.2023 13:12:19Code: Alles auswählen
11880 openat(AT_FDCWD, "./nextcloud/", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 203 11903 openat(AT_FDCWD, "./nextcloud/", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 203 11905 openat(AT_FDCWD, "./", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 203
Mit O_DIRECTORY kann man Unterverzeichnisse wie eine Datei öffnen.
Mit O_DIRECT werden Daten roh ohne Umweg über Puffer und Cache gelesen und geschrieben.
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Das ist klar, sorry ich wollte damit sagen Strace sammelt Daten und ich habe den grep richtig gschrieben.MSfree hat geschrieben:12.12.2023 13:18:46O_DIRECTORY ist etwas völlig anderes und hat mit O_DIRECT nichts zu tun, zumal das ohnehin alles Read-Only Operationen sind.
Gruß
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
- cosinus
- Beiträge: 4187
- Registriert: 08.02.2016 13:44:11
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: Bremen
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Also ich gehe mittlerweile davon aus, dass kein Schaden entstand in der kurzen Zeit in der bei uns der broken kernel lief. Alle Systeme laufen auch völlig normal.slu hat geschrieben:12.12.2023 13:23:46Das ist klar, sorry ich wollte damit sagen Strace sammelt Daten und ich habe den grep richtig gschrieben.
Eine VM mit mariadb schau ich mir noch an, dann werde ich das Thema abhaken.
- Livingston
- Beiträge: 1813
- Registriert: 04.02.2007 22:52:25
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: 127.0.0.1
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
O_DIRECT kann bei O_RDONLY nicht zuschlagen. Da geht nix auf die Platte.cosinus hat geschrieben:12.12.2023 12:37:42Code: Alles auswählen
fcntl(193, F_SETFL, O_RDONLY|O_DIRECT) = 0
Der Hauptunterschied zwischen etwas, was möglicherweise kaputtgehen könnte und etwas, was unmöglich kaputtgehen kann, besteht darin, dass sich bei allem, was unmöglich kaputtgehen kann, falls es doch kaputtgeht, normalerweise herausstellt, dass es unmöglich zerlegt oder repariert werden kann.
Douglas Adams
Douglas Adams
- cosinus
- Beiträge: 4187
- Registriert: 08.02.2016 13:44:11
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: Bremen
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Genau, das O_RDONLY hab ich auch so interpretiert. Weitere O_DIRECT hab ich bisher nicht gesehen. Auch keine mit O_RDONLY. Würde erklären warum die Server alle problemlos laufen. Nicht weil mi keine Fehler auffilen, sondern weil O_DIRECT garnicht passiert!Livingston hat geschrieben:12.12.2023 13:30:26O_DIRECT kann bei O_RDONLY nicht zuschlagen. Da geht nix auf die Platte.
Mal gut, dass ich nicht wie ein aufgescheuchtes Hühnchen am Sonntag alles geplättet hab.
- Livingston
- Beiträge: 1813
- Registriert: 04.02.2007 22:52:25
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: 127.0.0.1
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Wichtig bei strace: Man sollte mitbekommen, was beim Öffnen von Dateien passiert. Wenn man sich mit der Option -p <PID> in einen bereits laufenden Prozess einklinkt, bekommt man das möglicherweise nicht mit. Ebenso können bereits Kindprozesse abgespalten sein, die man dann auch mit -f nicht mehr erwischen kann. Im letzteren Fall muss man also mit pstree nachforschen, was vom Hauptprozess aus gestartet wurde und darauf gesondert ein strace absetzen.
EDIT: Sehr vernünftig, Monsieur Cosinus
EDIT: Sehr vernünftig, Monsieur Cosinus
Der Hauptunterschied zwischen etwas, was möglicherweise kaputtgehen könnte und etwas, was unmöglich kaputtgehen kann, besteht darin, dass sich bei allem, was unmöglich kaputtgehen kann, falls es doch kaputtgeht, normalerweise herausstellt, dass es unmöglich zerlegt oder repariert werden kann.
Douglas Adams
Douglas Adams
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Ich finde es erstaunlich, dass so ein gravierender Bug erst bei Auslieferung auf stable bemerkt wird. Irgendwie kratzt das an meinem Verständnis der Debian-Philosophie.
Auch als Nur-noch-User will ich eins garantiert nicht haben: versteckte Daten-Beschädigungen, die ich erst bemerke, wenn die validen Backup-Versionen nicht mehr existieren.
Auch als Nur-noch-User will ich eins garantiert nicht haben: versteckte Daten-Beschädigungen, die ich erst bemerke, wenn die validen Backup-Versionen nicht mehr existieren.
Es macht übrigens viel wacher, den Kaffee über die Tastatur zu kippen, statt ihn zu trinken.
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Einfach mal etwas im Internet suchen, da wird beschrieben wie es zu dem Problem kommen konnte.entsorgt2014 hat geschrieben:12.12.2023 14:01:00Irgendwie kratzt das an meinem Verständnis der Debian-Philosophie.
Mit Debian hat das erst mal nichts zu tun, das war halt Pech.
Gruß
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
slu
Das Server Reinheitsgebot:
Debian Bookworm, sonst nichts.
Stolzer Gewinner der Jessie Release Wette:
https://wiki.debianforum.de/Jessie_Release_Wette#SIEGER
- Livingston
- Beiträge: 1813
- Registriert: 04.02.2007 22:52:25
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: 127.0.0.1
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Ein tragischer Unfall, wie er alle 20 Jahre einmal vorkommt.entsorgt2014 hat geschrieben:12.12.2023 14:01:00Ich finde es erstaunlich, dass so ein gravierender Bug erst bei Auslieferung auf stable bemerkt wird.
Nicht vergessen, dass hier Debian wenig Schuld dran trägt. Bei den Profis von kernel.org ist das Kind schon in den Brunnen gefallen, und das kommt bei denen gerade in solch kritischen Bereichen nur allerseltenst vor.
Außerdem hat das Krisenmanagement bei Debian sehr gut gegriffen.
Der Hauptunterschied zwischen etwas, was möglicherweise kaputtgehen könnte und etwas, was unmöglich kaputtgehen kann, besteht darin, dass sich bei allem, was unmöglich kaputtgehen kann, falls es doch kaputtgeht, normalerweise herausstellt, dass es unmöglich zerlegt oder repariert werden kann.
Douglas Adams
Douglas Adams
Re: Fehler bei Kernel-Upgrade auf 6.1.64-1: „broken package“
Ohne auf dir rumhacken zu wollen: dein Backup sollte im Optimalfall dagegen resilient sein, wenn es das Risiko nicht tragen soll. In dem Fall ists meins auch nicht, weil ich das zu sichernde System selbst auf das Dateisystem zugreifen lasse, wie vermutlich die meisten hier. Ist halt wie immer ne Abwägung, gegen welche Probleme du geschützt sein willst. Ich hab auch kein offsite-Backup. Ich verliere aber weder Geld noch hängt irgendwas größeres (Firma, Ehe, ...) an den Daten, sodass ich mich nicht gegen Erdbeben und Meteoriten absichere.entsorgt2014 hat geschrieben:12.12.2023 14:01:00Daten-Beschädigungen, die ich erst bemerke, wenn die validen Backup-Versionen nicht mehr existieren.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht