Linuxシステム:プレートからのデータのセキュリティを確保するために

多くのIOのシナリオでは、我々は多くの場合、データのセキュリティを確保する必要がディスクに書き込まれ、だけでなく、システムの再起動のダウンタイムの後にデータを読み取るためにされています。しかし、私たちは皆知っている、Linuxシステム IOパスは、多くの層に分かれて、非常に複雑であり、それぞれの層は、IOの読み取りと書き込みを高速化するためのバッファを有することができます。一方、アプリケーション、およびユーザモードのライブラリ関数もIOパスは、いくつかの複雑さを追加した、独自のバッファを有していてもよいです。あなたが得ることができる可視は、単に書き込み/を転送しない、ディスクに書き込まれたデータのセキュリティを確保するためにFWRITE。
それでは、どのようにそれを行うには?多くの人が考えるような方法で、多くの:にfflush()、fsyncを() 、はfdatasync()、シンク()、オープン() またはO_DIRECT O_SYNC記号を使用します。ああ、これらのツール(またはいくつかの組み合わせ)実際にデータの永続性のセキュリティを保証することができ、その後、それらの間の違いは何ですか?fflush()とはfsync()の違いは何ですか?O_DIRECTは、あなたはそれを永続データのセキュリティを保証することができ、何を意味するのですか?何O_DIRECTとO_SYNC違いは?O_SYNCとのfsync()のですか?MSYNC機能を完了するためにfsync?この記事では、役割とこれらの概念の違いを説明し、理解しようとします。

Linuxの  IO

あなたは明確に自分の役割と違いを見ることができるはず、慎重に見て、明確に解決するこれらの概念を区別するために、私は意図的にマップを描いた、百聞は一見にしかずで、いわゆる。
Linuxの場合:ディスクLinuxのオフデータのセキュリティを確保するために:プレートからのデータのセキュリティを確保するために
最初、O_DIRECTそのデータのみがページキャッシュ(一般的にバッファを管理するために、ユーザーモードで使用される)を通過しないであろうことは明らかでなく、ブロックデバイス層に直接提出しなければなりません、私たちはここにO_DIRECTとO_SYNC焦点を当ててみましょう、しかし、データセキュリティの書き込みを待って同期しません戻らないディスク後(例えば、データラインまたはバルク層として依然としてキャッシュディスクを所有することができます)。そして、O_SYNCフラグは、データがまだページのキャッシュを書きますが、この時間はポリシーライトスルーを使用し、データセキュリティの同期を待つことになるが、ディスクへの書き込みの後に戻ります。ですから、O_DIRECTやO_SYNCを使用している場合、そのデータは、ページキャッシュを通じて同期とセキュリティを返す前に、ディスクに書き込まれたデータを待つことはありません、もちろん、このIO性能が非常に低くなります。
O_DIRECTは、ページキャッシュをバイパスしますので、ファイルを読むために一般的な方法を使用して別のプロセスがある場合ので、も注意が必要なデータの不整合があってもよいです。
何かのHELPを行うために、私は私が見た情報プロセスのいくつかを探求するもの掲示場所。第一は、オープンシステムコールへの参照である
http://man7.org/linux/man-pages/man2/open.2.html 
:関連するパラメータの説明
Linuxの場合:ディスクLinuxのオフデータのセキュリティを確保するために:プレートからのデータのセキュリティを確保するために
とInnoDBの関連文書:
https://lwn.net/Articles/457667 /
Linuxの場合:ディスクLinuxのオフデータのセキュリティを確保するために:プレートからのデータのセキュリティを確保するために
:の差のfsyncとはfdatasync
http://man7.org/linux/man-pages/man2/fsync.2.html
Linuxの場合:ディスクLinuxのオフデータのセキュリティを確保するために:プレートからのデータのセキュリティを確保するために
MSYNC:
http://man7.org/linux/man-pages/man2/msync.2。 HTML
Linuxの場合:ディスクLinuxのオフデータのセキュリティを確保するために:プレートからのデータのセキュリティを確保するために

DAX

実際には、IOモードがあり、それは、DAX(ダイレクトアクセス)で、O_DIRECTは次のようになりますされていません。このモードでは、デバイスの本質的に直接的な操作でファイルシステムのブロック・ドライバとサポートは、一般的に主にページキャッシュをバイパスし、非揮発性メモリに使用することができる必要があります。この記事では、後に、私はブロックデバイスドライバのサポートRAMディスクDAXモードを書き込みます、その後、ext4ファイルシステムとしてフォーマットされ、-o DAXモード、IOパスDAXの再詳細な研究をマウントする最初のDAX-深さの議論ではありません。
最後に、一般的なシナリオの下で追跡LinuxのIOパスを添付:
https://my.oschina.net/fileoptions/blog/3061822


おすすめ

転載: blog.51cto.com/14414295/2425793
おすすめ