LinuxでSambaマウントポイントが死んでいるかどうかを判断する最良の(最速の)方法は何ですか? 私はCでそれを行う必要があります.statfs()、statvfs()などのシステムコールは、古いマウントで呼び出されると30〜40秒間ブロックされ、この場合はエラーさえ返されません。stat() は他のものよりも速く失敗するようで (約 10 秒)、エラーを返します。他のホストがダウンしたか、そこにある Samba デーモンが強制終了されたため、マウント ポイントが古くなる可能性があります。どんなアドバイスでも大歓迎です..
質問する
1049 次
3 に答える
1
数秒後にタイムアウトするアラームを設定できます (alarm()
およびを参照)。setitimer()
于 2010-01-24T21:47:49.857 に答える
0
より速いチェックを行う方法はわかりませんが、すべてのマウント ポイントを同時に並行してチェックすることをお勧めします。そうすれば、多くの samba マウントがあっても、合計時間は常に同じになります。
于 2010-01-25T14:41:42.547 に答える
0
私は自分の質問に答えています。目標は、古いマウントポイントにアクセスしようとするいくつかのプロセスに費やされる時間を最小限に抑えることでした。通常、システム コールは 1 秒未満で完了します。これらの呼び出しは複数の場所で複数回行われ、遅延時間が累積するため、10 秒間、またはたとえば 3 秒間の古い共有のブロックは受け入れられませんでした。そのため、n秒ごとにマウントをチェックし、アクセスできない場合はマウントを解除する監視プロセスを作成することになりました。また、どのファイルシステムがリモート(マウントされている)であると想定されているかという構成からの情報を読み、mtabファイルをチェックします-それらがそこにない場合、それはエラーです。コード チェック mtab は 1 秒未満で完了します。実装に1日か2日かかりましたが、私にとってはうまくいきます。
于 2010-01-30T03:14:57.740 に答える