2つの異なるサーバー(iSCSIボリューム)でext4ファイルシステムを使用して同じディスクをマウントすると、ディスク上のデータが破損する可能性があることがわかります。私の質問はサーバーの1つがディスクを読み取り専用でマウントし、別のサーバーがディスクを読み取り/書き込みでマウントする場合、どのような違いがありますか?
OCFS2または同様のものがこの目的に使用でき、NFSを使用して他のサーバーがアクセスできるようにディスクをエクスポートできることを知っていますが、提案した設定が機能するかどうかを知りたいです。
答え1
習慣。キャッシュのため、読み取り専用クライアントは一貫した結果を提供しません。確かにこれのために設計されていません。アプリケーションがIOエラーを返すことがわかります。コードにはまだいくつかの監督があり、カーネルがクラッシュしたり、プロセスで使用されているメモリが破損する可能性があります。
しかし、最も重要なのは、ext4が読み取り専用マウントでもログを再生することです。したがって、読取り専用マウントは依然として基本ブロック装置に書き込まれる。 〜でも両方マウントは読み取り専用です:).
答え2
これにより、データの破損を防ぐことができますが、望むようにならない可能性があります。他のノードにボリュームを読み取り専用でマウントするのに問題があることを見たことはありません。 ro ノードのエントリが一致しない場合でも、通常「予期しない空き inode、e2fsck を実行してください。」または、/var/log/messagesに似たエントリが発生します。重要ではないファイルシステム("/opt/mySpecialmount")に深刻な問題が発生した場合、Linuxは通常ボリュームを読み取り専用でマウントします(すでにそこにありました)。キャッシュの影響が非常に懸念される場合は、一種のdrop_caches / vfs_cache_Pressureメカニズムを試してみてください。
ログの再生を防ぐには、マウントパラメータに "noload"を追加してerror = remount-roとして実行してください(注意)。
つまり、読み取り専用としてマウントすることに同意すると、他のノードへの参照として存在する可能性があります。この場合、NFSまたはsmbfsはこの問題を解決し、ext3/4よりも高い同時実行性を持つように設計されています。パフォーマンスが必要な場合は、クラスタファイルシステムを検討することができます(管理オーバーヘッドは少し高くなりますが、パフォーマンスが本当に必要な場合はそこにあります)。