3

私の Linux ベースのシステムは、NFS マウントされたファイルシステムの統計を次のように表示します。

   Remote Path              Mounted-on  Stats
   server1:/some/path/name  /path1      100 GB free
   server2:/other/path/name /path2      100 GB free
   Total:                               200 GB free

それはうまくいきます。問題は、NFS サーバー上の同じファイルシステムがクライアントに 2 回マウントされている場合です。

   Remote Path              Mounted-on  Stats
   server1:/some/path/name  /path1      100 GB free
   server1:/some/path/name2 /path2      100 GB free
   Total:                               200 GB free

server1とは実際には同じファイルシステム上に/some/path/nameあり/some/path/name2、100 GB の空き容量がありますが、誤ってそれらを合計して 200 GB の空き容量を報告しています。

それらが同じパーティション上にあることを検出する方法はありますか?

うまくいかないアプローチ:

  • 「使用statfs()」: 「ファイル システム ID」フィールドを持つ をstatfs()返します。残念ながら、これは未定義であり、NFS ではゼロに設定されます。struct statfsf_fsid
  • 「同じパーティションを複数回マウントしないでください。」これは私の管理外です。
  • 「使用可能なスペースに基づくヒューリスティックを使用します。」メソッドは確実に機能する必要があります。また、statfs()出力をキャッシュするため、大規模なデータ移動に直面してこれを正しく取得することは困難です。

解決策がない場合は、サーバー側の潜在的なすべてのマウント ポイントで構成ファイルを生成する必要がありますが、それを回避するためのクリーンな方法があれば、はるかに優れています。

ありがとう!

4

2 に答える 2

0

「stat -c %d /mountpoint」があなたが望むことをしたと思いますか(今はテストできません)?

于 2011-03-24T22:35:17.370 に答える
0

リモート システムの共有ファイル システムを読み取るには、次のコマンドを使用する必要があります。

showmount -e server

これにより、共有されている実際のパスが得られます。リモート システムからマウントを移動する場合は、それらをリモート システムから共通のルートにプルーニングし、それを使用して、マウント ポイントが同じ基本ファイル システムからのものであるかどうかを判断します。

これは、ファイル システムが同じ基礎となるファイル システムから個別に共有されている場合には役に立ちません。

全体的なファイル システムのサイズと使用可能なスペースをチェックするヒューリスティックを追加できます。それらが同じである場合、同じリモート サーバーから、マウント デバイスの最短の共通パスにマップされた同じパーティション上にあると仮定します。 .

他のファイル システムとはまったく異なる形式に見えるループバック マウント ファイル システムから共有する場合、これらはどれも役に立ちません。

異なる名前とアドレスでアドレス指定できるサーバーの場合は役に立ちません。

于 2011-03-25T00:27:32.667 に答える