sync 完全入門 - 永続的な記憶装置に同期 6 ux/6/html/storage_administration_guide/ch-writebarriers https://access.redhat.com/documentation/ja-jp/red hat enterprise 」 in 7 6 この辺は訳しにくいので原文を当たるとよい 5 おそらくここでの引数とは、ファイル名のことでしよう バリア (write barrier7 ) によってより大きな保証を提供する可能性があります。 数は、引数が与えられていないときに使用されるグローバル sync ②よりも書き込み 特性 (sync characteristics) がある可能性があります。つまり、 fsync ( 2 ) に渡された引 デバイスノードまたはファイルを渡す際に、引数を使用しない場合とは異なる同期 ルシステムではなく、含まれているファイルシステムを同期させるためです 6 。個々の は、通常このオプションを指定しないことに注意してください。参照されているファイ の入出力を同期させます。例えば /dev/sda といったデバイスノードを渡す場合 syscall の syncfs ②を使って、ファイルを含むファイルシステムを待っているすべて , —filesystem めに必要なメタデータのみを同期します。 fdatasync(2) を使って、ファイルのデータとファイルシステムの整合性を維持するた —d, —data の方法を変更することができます。 少なくとも 1 つのファイルが指定されている場合は、次のオプションを使って同期 イルだけが同期されます 5 。 引数を指定すると、デフォルトでは fsync(2) システムコールを使ってそれらのファ ます。 ます。この sync コマンドは、ストレージにデータを書き込むようにカーネルに指示し 合、データが失われたり、結果としてファイルシステムが壊れたりする可能性があり します。これによりパフォーマンスが改善しますが、コンピュータがクラッシュした場 カーネルは比較的遅いディスクの読み書きを避けるためにメモリにデータを保持 せんが、システムコールである sync 、 syncfs 、 fsync 、 fdatasync を呼び出します。 ( だたしこれに限定されません ) 。カーネルの実装次第だけど。 sync 自体は何もしま は、変更されたスーパープロック、修正された in 。 de 、遅延読み書きが含まれます sync コマンドは、メモリにバッフアされたデータをディスクに書き出します。これに sync は、メモリにバッフアされているデータをディスクに書き込むコマンドです。
sync 完全入門 - 永続的な記憶装置に同期 マニュアルはここまでです。知ってる人は知ってますが、 fdatasync(2) の (2) はセク ションと呼ばれていて、 2 はシステムコールのことです。 man コマンドを引く時にこうし ます。 $ man 2 fdatasync fdatasync はⅱ nux のコマンドと被らないので 2 を消してもマニュアルは出てきます。 sync だと、セクション 1 ( 汎用コマンド ) と 2 ( システムコール ) があり、それぞれ表示され る内容が異なります 8 。 fsync ②と fdatasync ②はメモリ上のデータを物理的なデバイス ( ハードディスクな ど ) に格納するためのシステムコールです。何度も何度もこのフレーズは出てきます が我慢しましよう。それが sync なのですから。 さて、 fsync ②はデータをディスクにフラッシュします。また、メタデータ情報 ( ファイ ルの修正時刻など ) をフラッシュします。 fdayasync は必要でなければメタデータ情 報を更新せず、データだけをディスクにフラッシュします 9 。書き込みが少なくなりま す。よかったですね。 ああ ~ ! sync の日 shutdown コマンド 伝説のコマンドで登場した、 sync を 3 回 打ち込んだ後、 shutdown( または halt など システムをシャットダウンまたは再起動す るコマンド ) を実行する行為は現在でも有 効なのでしようか。拙書「 shutdown 実践入 門」 ( 宣伝 ) で触れているとおりです。触れ ている通りとはどういうことだ ! ああ ~ ! お怒りの音 ~ shutdown 実践入門 システムをシャットダウンする 1 、 m 区 go ⅲ gd ( 川第新 r 「 NOW ! は市 ; をツしを純 ( い第クイ受第 ツ朝し影′鸞 . 第し 1 キュにないて 8 https://ja.wikipedia.org/wiki/ManÄ—シ 9 http://d.hatena.ne.jp/kameid/20090108 / 1231382946 完全にこの内 容の受け売りだけども。 言ってみたかっただけです。元ネタ : http://dic.nicovideo.jp/a/水素 10 の日 7
sync 完全入門 - 永続的な記憶装置に同期 systemd の世界では、 shutdown コマンドの内部で sync システムコールが 1 回実行 されています。したがって、この伝説のコマンドを実行する必要は、現代では必要あ りません。 ただし、マニュアルには書いていませんが、 sync システムコールを避けるオプショ ンがあります。 -n または一れ 0 ー s 川 c です。なぜこのような隠しオプションがあるのか はわかりませんが、互換性のためだと筆者は思っています 11 。あるいは sync 厨 12 の ために残してあるのかもしれません。 ソースコードです。 arg_no_sync は、 -n または—no-sync オプションが有効に なったときに true となる変数です。 static int halt now(enum action a) { / ☆ The kernel w 土工 1 automatically flush ATA disks and suchlike on reboot ( ) ′ but the file systems need to be synce 'd explicitly in advance . if ( ! arg_no_sync & & ! arg dry run) ( ▽ 0 土 d ) sync(); あれれ一 ? shutd 。 wn 実践入門を書いていたときにはなかったコメントが追加さ れているぽい ? 一応書いてあることを訳しますと、 カーネルは reboot 時、 ATA ディスクなどを自動的にフラッシュしますが、ファイルシ ステムは明示的に事前に通知する必要があります。 11 知ってる人情報 p は 12 sync 厨ってなんだよ https://github.com/systemd/systemd/blob/master/src/systemctl/syste mctl.c#L8318 8
sync 完全入門 - 永続的な記憶装置に同期 https://freebsd.2'.hatena.ne.ⅲ/PV4S一tnk/20080320/1205966S80 https:/'/pcll.5ch.net/test/read.cQi/unix/I()45381392/ https:.//"mevius.5ch.net/test/read.Cⅵ/unⅸ/1038116049/ 即戦力の Oracle 管理術 ~ 仕組みからわかる効率的管理のノウハウ技術評論社 https://'serverfault.com/ questions;'115069/is—execution—of—svnc8¯still—required—b eföre¯shllttin down¯linux 5ch にあったんだけど、この AA よかった : n △ n △△ △ \ ( OVO) < sync!sync! halt"VA0'-v ー 奥付 講釈 sync 14 連絡先 tboffced@gmail.com 印刷キンコーズかセプン 発行第 7 開発セクション https://sites.google.com/site/dai7sec/ 書いた人 tboffce https://twitter.com/tboffice 2018 / 4 / 22 初版技術書典 4
sync 完全入門 - 永続的な記憶装置に同期 諸注意 こに来てしまったのじゃな・・・ちゃんとまえがき 迷える若造よ・・・ sync を知らずに を読もう。まえがきは重要じゃ。 そうか、読んだか、読んだ上でここを読んでいるという殊勝な心がけじゃ。でも昔話 が続くので、読んでいて飽きてもしらないぞ。 なお、本書で触れる現代の OS は、 RHEL 系の Linux です。今後、要望があれば、他 の OS も取り上げるかもしれません。 あと、一こに書いてあることは自分で確かめてね ! なにもかも信じてはいけない ! 本書を読んでなにがあっても筆者は責任をとらないぞ ! sync とは まえがきでも触れたとおり、 GNU CoreutiIs のコマンドのひとつです 2 。 GNU coreut ⅱ s については、拙書「解説 CoreUtiIs 第 6 版」をお求めください ( 宣 伝 ) 。 この本でもコマンドについて触れていま すが、念の為解説 3 します。翻訳しただけ だけど 4 。読む前に、ファイルシステムと カーネルの知識 (fdatasync, fsync,sync,syncfs) があるとよいです。 それでは、マニュアルを読んでいきま す。原文は英語ですが、それっぽい日本 語に訳してあります。 2 RHEL 系の場合。 So ⅱ s とか debian 系は分からん 3 https://www.gnu.org/software/coreutils/manual/html node/sync-invoc ation. html 4 Goog 厄翻訳、だいぶこなれてきた印象がある 5 ー Core tils 第第
sync 完全入門 - 永続的な記憶装置に同期 Linux のマシンを再起動またはシャットダウンする前に、何回か sync コマンドを実 行すべきだという Unix 世界においての民間伝承 ( folkl 。 re ) がある。今日でさえ sync;sync;sync; を実行する人が多い。無駄である。 この民間伝承は、非常に古い、以下の事実からきている。プログラムが使う sync ( ) システムコールは sync キューに入れられたダーティバッフアをフラッシュするだけ で、ディスクへの書き込みを保証するものではない。また、カーネルは、シャットダウ ンまたは再起動時に、バッフアを強制的にディスクに書き込むわけではない。 このような環境では、システムの再起動時にキャッシュの内容をディスクに書き込 む必要があった。しかし、 1 回だけ sync を打ち、少し待つ必要があった。なぜ待つの かは明らかにされず、代わりに何回か sync コマンドを手動で打ち込めと言われるよう になった。 reb 。。 t をするために、最初の sync を打ってからフラッシュが実行されるに は十分な時間が確保できた。民間伝承の順序はこのようになった。 # sync # sync # sync # reb 00t こから 3 回打てという話に変化し、民間伝承や迷信として知れ渡った ( 再起動し ない場合でも、 2 回または 3 回実行するように指示する人がいる ) 。 最近では再起動まえの sync という民間伝承は不要になった 15 このプログに、コメントがついています。見てみましよう。 10 17 FD は不明、フロッピーディスクじゃないよなー ? 16unspoo に巻き取るの逆でこんな日本語に なんらの皮肉を言っている可能性が高いが、英語分かる人解説頼む 15 このへん訳すと混乱するので避けた。行っている意味が逆なので 巻き戻し、つまり FD17 / rw ヘッドを 0 に設定するように指示する方法だった。 ローラにテープストリームのリンクを解除 / テープを広げる ( unsp 。。 D16 だけではなく、 テープデバイスが輝いていた時代、素早く sync を 3 回打っことは、テープコント
sync 完全入門 - 永続的な記憶装置に同期 21bits って書いてあるけど正確な日本語は分からん いる人にとってはまだその用途があるんだよ。 ハードドライプになったときに残った民間伝承だと思う。でもテーブドライプを持って た。このコマンドはハードドライプが出てきたときにも伝わった。テープがなくなって の巻き戻しとマウント解除」の意味だった。テープを巻き戻す手順はこれだけだっ だった。 sync コマンドを受け取るファームウェアがあった。 sync が 2 回続くと、「テープ sync;sync;sync コマンドは、シャットダウン前にテーブマシンを最後まで戻す方法 テープペースのファイノレシステムをマウントしてバックアップしていた。 昔々はストリーミングやバックアップするときにテープを使わないといけなかった。 sync ; sync ; sync が意味ないことを伝えると、年齢がばれるぜ。 他の回答も見てみましようか。 は正しいけど、 shutdown now の方が正しいね。 ちなみに unm 。 unt の前にデータはディスクに同期するよ。 halt する前に sync するの は init の runlevel を変更するよ。 実行するのは悪い方法だよ。やるなら init _runlevel_ か shutdown だね。 shutdown よ。 halt は init スクリプトを実行しないので、ほとんどの Unix ( Linux は例外の一つ ) で SunOS 5 ) は SYSVr4 であり、 Linux は使用したい SYSVr4 標準のビット 21 を選択する ことだった。 BSD と SunOS 4 は SYSVr4 オペレーティングシステムではない。 Solaris ( ウンしてくれない。 SYSVr4 での正しい方法は init コマンドで違う runlevel に移動する halt コマンドの前に sync ; sync するよね。 halt は、古いⅱ nux ではきれいにシャットダ
sync 完全入門 - 永続的な記憶装置に同期 本書は sync を解説した本です。 はじめに s c していた、というそこの老師。現代では sync の必要が無くなった。もういい・・ たり、もっと有益な時間を過ごして欲しい・・ツ ! おじさんからのアドバイスじゃ。 いぞ ! 将来有望な君は、まっとうにプログラミングをしたり、海外の文献を読み漁っ sync ? 何それ ? と思った君 ! おっさんのたわごと ( 昔話 ) が続くので、読まなくてい 。自分が正しいと思った道を歩んで欲しい ( 白目 ) 。 ・ ! ただし超古いマシンに関しては知らん。電源が入って正しく動くなら 休め・・ 3 ation. html https://www.gnu.org/software/coreutils/manual/html node/sync-invoc 1 お馴染みのコマンドです。本書では調べがつく限り解説していきます。 # halt # sync # sync # sync 伝説のコマンド 明すると、メモリ上のデータをストレージに書き込むコマンドです。 「キャッシュされた書き込みを永続的なストレージに同期させる」です。簡単に説 さて、 sync のマニュアルを読んでみましよう 1 。 Linux の基本的なコマンドである、 ls や cd などがあります。 GNU coreut ⅱ s パッケージに所属しているコマンドです。 GNU Coreutils には、 sync とは ( 簡単に )
NANAKA + INSIDE PRESS plus 講釈 sync キャッシュデータをストレージに同期する sync sync sync halt はたして伝説のおまじないに 意味はあったのか ? 楽しく sync 正しく同期確かな保存 第 7 開発セクション
sync 完全入門 - 永続的な記憶装置に同期 まとめ 日本語圏には有為なドキュメントを見つけられなかった sync の起源はテーブドライプ 。アンマウントするとき、 2 回打ち込むと巻き戻る ハードディスクでもその名残がある ハードディスクでの sync;sync;sync は、最初の sync の実行の時間稼ぎ 。本来は 1 回打って、待てばよかった halt は sync しないので、 sync する伝説が残った 。現代の Linux は sync している。というよりも halt も power 。仕も shudown も名前が違うだけでみんな同じコマンド 22 現代の Linux であれば shutdown -h n 。 w で十分 あとがき 拙書「 shutd 。 wn 実践入門」の「おことわり」の章にて、「 sync の昔話はしません。若 い人はググってください」と書きました。 sync3 回の元ネタってどこなんだろうと気に なって夜もぐっすり眠っていたところ、技術書典の新刊のネタにするか・・・と思って 書きました。動機は不純です。不純なほどいいのです。偉い人にはそれがわからん のです。 結果的にテーブドライプの話になってしまいました。予想外の出来事でした。海外 の文献を読んで翻訳を書いて解釈しただけなので、本当かどうかは自分で確かめ てね ! さらなる情報をお持ちの方は、奥付の筆者の連絡先まで連絡をください。 参考 水素の音 htt https:.' /utcc. utoronto. ca:" cks," space,"blog/unix'/TheLegendOfSymc ・ n ( ) sa 、 COC010 プー n 俄 .com/sanonosa/2()()8 ・ 05 / un ⅸ os 9223. html 22 出展は拙書「 shutdown 実践入門」