![共有ブロックデバイスファイルシステム(ネットワークなしのクラスタファイルシステム)](https://rvso.com/image/567644/%E5%85%B1%E6%9C%89%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%EF%BC%88%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AA%E3%81%97%E3%81%AE%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%EF%BC%89.png)
Linux で複数回マウントでき、同時ファイル アクセスをサポートするファイル システムはありますか? 基本的に、分散ロック マネージャー用のネットワークを実行する必要がない、クラスター ファイル システムのようなものが欲しいです。これは、ネットワーク リンクを作成する必要なく、ホストまたは別の VM とデータを共有できる仮想マシンとの接続に非常に便利です。ネットワーク アーキテクチャを安全に保ちながら (DMZ 内の仮想マシン)、大きなファイルを共有したいので、これを避けたいです。スケール アップする必要はなく、同じブロック デバイスをマウントする 2 台のマシンだけで済みます。
ファイルのロック情報をディスク上に直接保存することはできないでしょうか?
答え1
N 個の VM に同じブロック デバイスへのアクセスを許可できますが、読み取り専用にしかできないと思います。推測という単語に注目してください。
いずれかの VM が変更を開始すると、他の VM をキャッシュしているディスクが無効になるため、状況はすぐに悪化します。
ディスク上にファイル ロック情報を保持することの難しさは、まだ誰もそれを実行していないことです。深く考えなければ、ディスク上のアトミックな読み取り/変更/書き込みトランザクションというアイデアが、おそらく基本的な問題です。
すでにマルチスレッド化されている一般的なファイル システムを取得し、ロックが使用されている場所を特定して、それをディスク上の何らかの読み取り/変更/書き込み操作に変更できると思います。
ディスクの読み取り/変更/書き込みに関するもう 1 つの問題は、大量のロックを実行すると、ディスク上のあらゆる変更に次の操作が必要になるため、パフォーマンスがかなり悪くなることです。
- ディスクをロックする(シーク、読み取り/変更/書き込み)
- 変更したいセクターを読み取ります(シーク/読み取り)
- 変更を加えて書き込む(書き込む)
- ディスクのロックを解除する(シーク、読み取り/変更/書き込み)
おそらく役に立たないかもしれませんが、本当にネットワークを構築したくない場合は、より軽量な VM システムとして BSD Jails のようなものを検討することをお勧めします。
答え2
私自身の疑問に答えると、(準)仮想化の状況では、ネットワークなしでインスタンス間でファイルを共有するために使用できる共有ファイルシステムがいくつか開発されています。XenFSは、積極的に開発されていないアプローチの1つだと思います。しかし、KVM、そしてうまくいけばXENには、virtioライブラリに基づくフォルダ共有メカニズムがあります。9p_virtio。