同じext4ディスクを読み取り専用の2つのホストからマウントできますか?


17

2台の異なるサーバー(iSCSI vloume)からのext4ファイルシステムで同じディスクをマウントすると、ディスク上のデータが破損する可能性が高いことを知っています。私の質問は、サーバーの1つがディスクを読み取り専用でマウントし、他のサーバーがディスクを読み取り/書き込みでマウントすると、違いが生じるのでしょうか?

これにはOCFS2などを使用でき、NFSでディスクをエクスポートして他のサーバーにアクセスできることは知っていますが、提案するセットアップが機能するかどうかを知りたいです。


1
両方が読み取り専用でマウントされている場合にのみ機能します(つまり、書き込みを行わない真の読み取り専用を意味します)。一方が読み取り/書き込みをマウントすると、もう一方(読み取り専用でマウント)は他方による変更(読み取り/マウントをマウント)を予期しないため、破損したデータを読み取ります。必要なのは、クラスター対応ファイルシステム、またはネットワークファイルシステムを他のサーバーに公開する単一サーバーです。
frostschutz

@frostschutzはい、両方のroは機能しますが、ext4のroマウントは実際のディスクに書き込むため、トリックなしでは機能しません(それぞれroループとoverlayfsが必要です)。
Ned64

ここでユースケースを共有します。物理サーバーと仮想サーバーは、ディスクパススルーで物理ディスクを共有しています。仮想サーバーはディスクをrwとしてマウントしています。ディスクから大量のデータをコピーしたいのですが、ネットワークが遅すぎます。ホストOSで物理ディスクをroとしてマウントし、データを外部USBドライブにコピーできたら素晴らしいと思います。ホストサーバーにはUSBコントローラが1つしかないため、PCIパススルーはオプションではありません。
ズオユンウェイ

回答:


26

いいえ。キャッシュのため、読み取り専用クライアントで一貫した結果が得られません。それは間違いなくそれのために設計されていません。IOエラーがアプリケーションに返されることを期待できます。おそらくコードにはまだいくつかの見落としがあり、それがカーネルクラッシュや、任意のプロセスで使用されるメモリの破損を引き起こす可能性があります。

しかし、最も重要なことは、ext4は読み取り専用マウントでもジャーナルを再生します。そのため、読み取り専用のマウントは、基礎となるブロックデバイスに引き続き書き込みます。両方のマウントが読み取り専用であっても安全ではありません:)。


5
あなたが言うように、読み取り専用をマウントしても、ファイルシステムが変更されないことは保証されません。それでもリスクを冒さずに「教育」目的で使用する場合は、デバイスを読み取り専用に設定する必要がありますblockdev --setro /dev/sda1
トーター

ext4マウントに関するTHatの興味深い情報。ext2読み取り専用マウントを強制することでこの問題を回避できると思いますか?
バナンイン

1
:私は私がVMに読み取り専用のブロックデバイスをマウントしてみましょうこのコードのスニペットたsudo mount -t ext4 -o ro,loop,noload /dev/vda /mnt/ digital-forensics.sans.org/blog/2011/06/14/...を
isaaclw

0

これによりデータの破損を回避できますが、おそらくあなたがしたいことにはならないでしょう。ボリュームを別のノードに読み取り専用でマウントする際に問題に気付いたことはありません。通常、roノードで「予期しない空きiノードをスローするだけで、e2fsckを実行する」などが/ var / log / messagesに一致しない場合でも。クリティカルではないファイルシステム( "/ opt / mySpecialmount")に関して予想外のことが予想される場合、通常、Linuxはボリュームを読み取り専用でマウントします(これは既に存在します)。キャッシングの効果を非常に心配している場合は、何らかのdrop_caches / vfs_cache_pressureレジームを実行してみてください。

ジャーナルが再生されないようにするには、マウント引数に「noload」を追加し、errors = remount-roとともに実行します(注意するだけでエラーが発生します)。

ただし、読み取り専用でマウントしても問題ない場合は、おそらく他のノードへの参照としてのみ使用できます。この場合、NFSまたはsmbfsが問題を解決し、ext3 / 4になります。パフォーマンスが必要な場合は、クラスター化されたファイルシステムを調べることができます(管理オーバーヘッドはほとんどありませんが、パフォーマンスが本当に必要な場合はそこにあります)。


1
これにより、データ破損を回避できます」:できない場合があります。sourcejediの回答と私のコメントを参照してください。
トーター

1
「ジャーナルの再生をスキップすると、多くの問題を引き起こす可能性のある不整合を含むファイルシステムになります」- man mount。ファイル内の一貫性のないデータを検出および/または許容するアプリケーションがあると想像できますが、これまでにそのような警告については言及していませんでした:)。
sourcejedi

@sourcejedi彼らは、彼らがジャーナルを効果的に廃止するリスクを人々に伝えようとしているからだと言います。これは大丈夫です。なぜなら、他のノードが他のノードのジャーナル作業を行うという前提があるため、二重作業を回避しようとしているだけです。開発サーバーの1つでこれを行い(私の選択ではなく、NFSを実行します)、1年近く、drop_cachesなしでも問題なくマウントしました。古くなっていないFSキャッシュエントリが古いデータをレンダリングする可能性があることについては両方言及しましたが、これが実行可能かどうかを判断するのは最終的に管理者の責任です。
ブラチリー

上記のコメントのすべての誤りを列挙しようとするつもりはありません。ただし、1つのデータポイントとして、VFSキャッシュ内の古いファイルデータだけではありません。ext4には、ファイルシステムの内部データ構造(「メタデータ」)のキャッシュもあります。削除されたファイルからデータを読み取ってしまう可能性があり、その後、新しいファイルで上書きされます。これは、まれにしか発生しない場合でも、事前に本当に知りたい警告です。
sourcejedi

1
コメントを振り返ってみると、メモリ内のブロックデバイスI / Oのキャッシュであるブロックレベルキャッシュを参照しようとしているのではないかと思います。その場合には、それはそれをキャッシュいないことは、メタデータ自体、それのキャッシュに発生するメタデータそのもの。また、ファイルシステムドライバーの外部にも存在するため、ext4 / btrfs / etcで管理することはできません。
ブラチリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.