同期すべき哲学に真実はありますか?同期; 同期; 同期しますか?


27

2000年にシスコシステムズで働いていたLinuxを初めて紹介したときsync、ファイルシステムの破損やデータの損失を防ぐためにバッファをディスクにフラッシュするコマンドのメリットを学びました。同僚からだけでなく、大学の友人からsync、「一度」ではなく、常に「数回」または「たくさん」、つまり5〜10回実行するように言われました。

それ以来ずっとこの習慣を続けていますが、これには何かメリットがありますか?これを聞いた人はいますか?そして、最も重要なことは、誰でもあなたがsyncそれが効果的であるために複数回実行する必要があるという考えに対して/に対して良い根拠/経験的証拠を提供できますか?

回答:


34

syncコマンドを3回入力したことを聞いて(申し訳ありませんが、どこにいるのか忘れています)(例:S Y N C Return、プロンプトを待つ、繰り返す、繰り返す)。また、オリジンは特定のシステムであり、オペレーティングシステムにすべてが正常であることを通知した後でも、ディスクがバッファのフラッシュを完了するのに数秒かかるということを読みました。コマンドを2回以上入力すると、ディスクが安定するのに十分な時間が与えられました。長年にわたって目的が忘れられ、sync; sync; sync望ましい効果が得られないというアドバイスが省略されたようです(ディスクが「すべてクリア」を報告したため、2番目と3番目の同期が即座に完了し、プロンプトが表示されます)早く戻ります)。

複数のsync操作に用途があるシステムについて聞いたことがありません。これは都市伝説だと思います。一方、同期してから電源を切るまでに数秒待つシステムがあると信じています。

グーグルは、いくつかの独立した並行分析、例えば、同期の伝説につながります。Linuxをシャットダウンする前にsync(8)の実行がまだ必要ですか?もご覧ください


1
素晴らしいです、ありがとう!私は入れている間、私は、明らかにしなければならないsync; sync; sync; syncタイトルでは、と私は時々そのように入力します、私もそれは私になど、再び、同期、待機、同期で同じように、待機、説明を聞いた
ジョシュ・

9

ここで昔。TAPEの栄光の時代に戻って、3つの連続した高速同期は、TAPEコントローラーにテープストリームのリンク解除/スプール解除だけでなく、テープストリームも巻き戻す、つまりFD / rw-headを設定するよう指示する方法でした0に。

「sync; sync; sync」は、テープベースのUnix、つまりファイルが/ var / spoolにマウントされていた当時最も安価なストレージであるアプリで歯を切った人たちによってのみ生産的に使用されていました。;)

MIPS Risc / OSのオペレーターマニュアルには、このページがあります。


6

確かに古いUNIXシステムでは、複数回同期する方が安全でしたが、1つのコマンドラインで「sync; sync; sync」としてすべてが安全であったわけではありませんでした。80年代半ばに、これは次のように蒸留されました:

システムをシャットダウンするとき、3回同期する必要があります。これ以上でもそれ以下でもありません。3は同期の数であり、同期の数は3です。4回は同期せず、2回も同期しません。ただし、3回目の同期に進みます。

3回がどこから来たのかは本当に分からないが、多分それは楽しいことだった。しかし、通りの言葉は二度それをする。「同期;同期」としてではなく、シェル上の2つの独立した行として。

たとえば、V7 UNIXの時代には、ファイルシステムの修復はあまり面白くありませんでした。ファイルシステムがどのように機能するか、dcheck、ncheck、icheckのようなプログラムの特異性について多くを知って、あなたは手でそれをしなければなりませんでした。fsckがあれば、それは常に信頼できるものではありませんでした。

これは、「両方向に雪を登った」という話のように聞こえ始めています。まあ、再起動やシャットダウンのような派手なコマンドはありませんでした。システムをリブートしたいときは、ファイルシステムをsyncと同期し、コンソールでCtrl-Pを押して停止しました。

syncコマンドが終了したとき、カーネルは同期をスケジュールしていましたが、すべてのバッファー(すべての重要なファイルシステムスーパーブロックを含む)が必ずしもディスクに同期したわけではありません。そのため、同期を実行し、安全になる前に停止するのは非常に簡単でした。

同期を再度実行するのは簡単で、時間がかかり、すべてを理解することなく、特定の直感的なアピールがありました。

V7のマニュアルページにも、次のようなバグセクションがありましたupdate

更新の実行中に、同期の実行と同時にCPUが停止すると、ファイルシステムが破損する可能性があります。これは、NPR要求が失敗したときにゼロを書き込むDECハードウェアが部分的に原因です。修正方法としては、sync(1)を使用してシステム時間を少なくとも30秒一時的に増やし、更新の実行をトリガーするようにします。これにより、CPUを停止する30秒間の猶予が与えられます。

(ちなみに、これはV7マニュアルの第1巻で最後のことでした)

時間が経つにつれて、ファイルシステムツールとシステムのシャットダウンと再起動のためのプログラムは、これに対処することを避けるためにより良くなりました。システムが神秘的に振る舞うと、民間伝承、ブードゥー教、およびシステムの魔法がそこに入ります。2回同期することで、ファイルシステムを元に戻すために少しピンセットを外す必要がはるかに少なくなり、儀式の一部になりました。ひとたびそれを何度もやったら、あなたは考えずにそれをします。次に、誰かが気づき、その理由を尋ねます。そして、答えは、「常にそのように行われました。より安全です」のようなものです。

これが信頼できるものであると主張することはありません。詳細の一部については間違っているかもしれません。しかし、私はそれが起源にかなり近いと思います。


それは私が学んだことのように聞こえます...しかし、それはただのブードゥー教でしたか、本当に何か理由がありましたか?他の回答のいくつかは、この習慣が私たちの間でどのように形成されたのかについて良い提案をします。sysadmin
ジョシュ

@ジョシュの理由が与えられました。「syncコマンドが終了したとき、カーネルは同期をスケジュールしていましたが、すべてのバッファー(重要なファイルシステムスーパーブロックを含む)が必ずしもディスクに同期したわけではありません。」「標準仕様(POSIX.1-2001など)に従って、sync()は書き込みをスケジュールしますが、実際の書き込みが完了する前に戻ることがあります。」も参照してください。man7.org/linux/man-pages/man2/sync.2.html
sourcejedi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.