Gibt es eine Wahrheit in der Philosophie, die Sie synchronisieren sollten? synchronisieren; synchronisieren; synchronisieren?

27

Als ich zum ersten Mal mit Linux bei Cisco Systems im Jahr 2000 bekannt wurde, wurden mir die Vorzüge des syncBefehls beigebracht , mit dem Puffer auf die Festplatte geladen werden, um Beschädigungen des Dateisystems und Datenverluste zu vermeiden. Dort wurde ich nicht nur von Kollegen, sondern auch von Freunden im College angewiesen, immer sync"ein paar" oder "ein paar" Male zu laufen , das heißt, vielleicht 5 - 10 Mal, anstatt nur einmal.

Ich habe diese Angewohnheit seitdem fortgesetzt, aber gibt es irgendeinen Grund dafür? Hat das noch jemand gehört? Und was am wichtigsten ist, kann jemand gute Gründe / empirische Beweise für / gegen die Idee liefern, dass Sie syncmehr als einmal laufen müssen, damit es effektiv ist?

Josh
quelle

Antworten:

34

Ich habe es gehört (sorry, ich vergesse wo), als ich den syncBefehl dreimal eingab (wie in S Y N C Return:, warte auf die Eingabeaufforderung, wiederhole, wiederhole). Ich habe auch gelesen, dass der Ursprung ein bestimmtes System ist, bei dem es einige Sekunden dauern würde, bis die Festplatte ihre Puffer geleert hat, selbst nachdem sie dem Betriebssystem mitgeteilt hatte, dass alles in Ordnung ist. Wenn Sie den Befehl noch zweimal eingeben, hat die Festplatte genügend Zeit, um sich zu beruhigen. Es scheint, dass im Laufe der Jahre der Zweck vergessen wurde und der Rat abgekürzt wurde, da sync; sync; syncdies nicht den gewünschten Effekt gehabt hätte (da die Festplatte "Entwarnung" gemeldet hatte, würden die zweite und dritte Synchronisierung sofort abgeschlossen und die Aufforderung erfolgen würde zu früh zurückkommen).

Ich habe noch nie von einem System gehört, bei dem mehrere syncVorgänge von Nutzen sind, und ich bin äußerst skeptisch, ob es solche gibt. Ich halte das für eine urbane Legende. Andererseits halte ich es für sehr glaubwürdig, dass es Systeme gibt, bei denen Sie nach der Synchronisierung und vor dem Ausschalten einige Sekunden warten sollten.

Googeln führt zu einigen unabhängigen übereinstimmenden Analysen, z. B. The Legend of Sync . Siehe auch Ist die Ausführung von sync (8) noch erforderlich, bevor Linux heruntergefahren wird? .

Gilles 'SO - hör auf böse zu sein'
quelle
1
Super, danke! Ich hätte klären sollen, während ich legtesync; sync; sync; sync den Titel einfügte, und ich tippe es manchmal so, ich hörte es mir auch auf die gleiche Weise erklären, dh synchronisieren, warten, erneut synchronisieren, warten usw.
Josh,
9

Oldtimer hier. In den ruhmreichen Tagen von TAPE war 3 schnelle Synchronisierungen hintereinander eine Möglichkeit, die TAPE-Controller anzuweisen, den Band-Stream nicht nur zu trennen / zu trennen, sondern auch zurückzuspulen, dh den FD / RW-Kopf einzustellen auf 0.

"sync; sync; sync" wurde eigentlich nur von denjenigen von uns produktiv verwendet, die sich mit TAPE-basierten Unix-Anwendungen, dh Apps, deren Dateien auf / var / spool gespeichert waren, den damals günstigsten möglichen Speicherplatz, die Zähne geschnitten haben. ;)

Die MIPS Risc / OS-Bedienungsanleitungen enthalten eine Seite auf dieser Seite.

ibisum
quelle
6

Es gab sicherlich ältere UNIX-Systeme, für die es sicherer war, mehrmals zu synchronisieren, aber nicht alle auf einer Befehlszeile als "sync; sync; sync". Mitte der 80er Jahre wurde dies destilliert zu:

Wenn Sie das System herunterfahren, müssen Sie die Synchronisierung dreimal durchführen. Nicht mehr und nicht weniger. Drei soll die Nummer der Synchronisation sein, und die Nummer der Synchronisation soll drei sein. Viermal sollst du nicht synchronisieren, noch zweimal synchronisieren, außer dass du ein drittes Mal synchronisierst ...

Ich weiß nicht wirklich, woher die drei Male kamen, außer vielleicht, dass es Spaß gemacht hat. Aber das Wort auf der Straße, es zweimal zu tun. Nicht als "sync; sync", sondern als zwei separate Zeilen in der Shell.

In den Tagen von beispielsweise V7 UNIX machte die Reparatur von Dateisystemen keinen großen Spaß. Sie mussten es von Hand machen, da Sie viel über die Funktionsweise des Dateisystems und die Besonderheiten von Programmen wie dcheck, ncheck und icheck wussten. fsck, wenn du es hättest, war nicht immer etwas, dem du vertrauen würdest.

Das hört sich an wie die Geschichte "Wir sind in beide Richtungen bergauf durch den Schnee gelaufen". Nun, wir hatten keine ausgefallenen Befehle wie Neustart oder Herunterfahren. Wenn Sie das System neu starten wollten, haben Sie das Dateisystem mit der Synchronisierung synchronisiert und dann Strg-P ​​auf der Konsole gedrückt, um es anzuhalten.

Beim Beenden des Synchronisierungsbefehls hatte der Kernel die Synchronisierung geplant, aber nicht alle Puffer (einschließlich des Superblocks für das alles wichtige Dateisystem) hatten es notwendigerweise auf die Festplatte geschafft. Es war also ziemlich einfach, die Synchronisierung auszuführen und dann die Dinge anzuhalten, bevor sie sicher waren.

Das erneute Ausführen der Synchronisierung war einfach, nahm viel Zeit in Anspruch und hatte eine gewisse intuitive Ausstrahlung, ohne alles verstehen zu müssen, oder es gab vage Anweisungen wie "bis 10 zählen" oder ähnliches.

Es gab sogar einen BUG-Abschnitt auf der V7-Manpage, in dem updateauch Folgendes stand:

Wenn bei laufendem Update die CPU angehalten wird, während die Synchronisierung ausgeführt wird, kann ein Dateisystem beschädigt werden. Dies liegt teilweise an der DEC-Hardware, die Nullen schreibt, wenn NPR-Anforderungen fehlschlagen. Ein Fix wäre, wenn Sync (1) die Systemzeit vorübergehend um mindestens 30 Sekunden erhöht, um die Ausführung des Updates auszulösen. Dies würde 30 Sekunden Zeit geben, um die CPU anzuhalten.

(was übrigens das allerletzte in Band 1 der V7-Handbücher war)

Mit der Zeit wurden die Dateisystem-Tools und die Programme zum Herunterfahren und Neustarten von Systemen besser, um dies zu vermeiden. Folklore, Voodoo und Systemmagie spielen eine Rolle, wenn sich das System mysteriös verhält. Zweimaliges Synchronisieren machte es viel unwahrscheinlicher, dass Sie die Pinzette herausholen mussten, um Ihr Dateisystem wieder zusammenzusetzen, sodass es Teil des Rituals wurde. Sobald Sie es ein paar Mal getan haben, tun Sie es ohne nachzudenken. Dann bemerkt und fragt jemand warum. Und die Antwort lautet in etwa: "Immer so gemacht. Es ist sicherer."

Ich werde nicht behaupten, dass dies maßgeblich ist, und ich könnte in einigen Details falsch liegen. Aber ich denke, es ist ziemlich nah am Ursprung.

Sieg
quelle
Das hört sich nach dem an, was ich gelernt habe ... aber war es nur Voodoo oder gab es wirklich einen Grund? Einige der anderen Antworten geben gute Vorschläge, wie sich diese Gewohnheit unter uns Sysadmins gebildet haben könnte
Josh
@ Josh der Grund wurde angegeben. "Als der Synchronisierungsbefehl beendet wurde, hatte der Kernel die Synchronisierung geplant, aber nicht alle Puffer (einschließlich des Superblocks für das alles wichtige Dateisystem) hatten es notwendigerweise auf die Festplatte geschafft." Siehe auch: "Gemäß der Standardspezifikation (z. B. POSIX.1-2001) plant sync () die Schreibvorgänge, kann jedoch zurückkehren, bevor das eigentliche Schreiben abgeschlossen ist." man7.org/linux/man-pages/man2/sync.2.html
sourcejedi