共有NFSディレクトリが単一のバックアップファイルシステムでホストされている場合は、複数のNFSマウントにわたってクライアントにハードリンクを設定する方法はありますか? (これを行うと、ローカルでログインしたり、sshでログインしたりすると、サーバーのinodeとハードリンクに問題はありません。)
NFSv4共有で複数のディレクトリを提供するサーバーがあります。すべての共有ディレクトリは[ext4]ファイルシステムにあります。個別に共有されるため、クライアントは個別にインストールできます。
共有AまたはBがそれぞれマウントされているディレクトリツリーにハードリンクを作成できますbar.file
。ただし、マウントAとBIの間にORを生成しようとするとln
エラーが発生します。サーバーに直接ログインすることに加えて、この問題を解決する他の方法はありますか?cp -l
Invalid cross-device link
ソースのinodeを読み込み、ターゲットディレクトリに同じinodeを持つファイルエントリを手動で生成する短いスクリプトを考えていましたが、少しハッキングされているようで、必要なコンポーネントを調べる必要があります。
それとも一種のジョイントマウントソリューションですか?
両方のシステムに一般ユーザーとrootアクセス権があるとします。
ベストアンサー1
一般的な観察
個別に共有されるため、クライアントは個別にインストールできます。
この推論は言葉ではありません。親ディレクトリが共有されている場合、クライアントは子ディレクトリを別々にマウントできます。それでも。親ディレクトリに共有したくないアイテムがある場合(または存在する場合)、ディレクトリを別々に共有する必要があるかもしれません。これは妥当な理由かもしれませんし、他の理由があるかもしれません。しかし…
個別にインストールできる機能を提供することは、別々に共有する必要がある理由ではありません。それにもかかわらず、NFSv4はクライアントにこの機能を提供します。/etc/exports
サーバーに1つあります。アクセス制御リストリストの代わりに分離顧客が保有するべき株式。mount
クライアントで使用する場合制限なし/etc/exports
サーバーへの正確なパスです。クライアントは/
サーバーをマウントし、まだすべての共有にアクセスできます。または、アクセスを許可するすべてのサブディレクトリをマウントできます。
/
サーバーをインストールしてみてください。特定の共有の特定の((...)sub-)sub-)サブディレクトリをマウントしようとしています。私のポイントは、あなたができることです。
解決策
Invalid cross-device link
あなたが得る結果は、NFSクライアントでローカルに使用するパスが正式に別々の「デバイス」にあるためです。解決策は、関連するすべての共有を含む階層(ディレクトリツリー)をマウントして、1つのマウントポイントの下にローカルに表示することです(つまり、単一の「デバイス」)。
/
NFSクライアントまたは関連するリモートファイルシステムのリモートマウントポイントまたは共有の他の共通の親ディレクトリにサーバーのルートディレクトリ()をマウントします。インストールへのリモートパスをサーバーから明示的にエクスポートする必要はありません。例:
sudo mount -t nfs 192.168.99.7:/remote/mountpoint /local/mountpoint
ローカルマウントポイントの下で選択したリモートディレクトリの内容がエクスポートされた共有に制限されていることがわかります。たとえば、リモートディレクトリとをエクスポートし、/remote/mountpoint/foo/A
何もエクスポートしないと(エクスポートまたはエクスポートされていない場合でも)、ローカルでおよびを見ることができますが、は表示されません。あなたは到達できるようになります。/remote/mountpoint/bar/baz/B
/remote/mountpoint/qux
/
/remote/mountpoint
/local/mountpoint
foo/
bar/
qux/
foo/A/
bar/baz/B/
厳密に下で作業すると、ディレクトリ間でローカルに作業できるよう/local/mountpoint
になり、ディレクトリが実際にサーバー上の同じファイルシステムにあり、書き込みが許可されている場合は操作が成功します。ln
A
B