問題タブ [nfs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apache - マウント済みで利用できない NFS マウントからの Apache の回復
NFS マウントを使用して Web ヘッド間でリソース (通常は静的アセット ファイル) を共有するいくつかの Web アプリケーションを運用しています。NFS マウントが利用できなくなった場合、Apache はアクセスできないファイルを要求してハングし、カーネルは次のログを記録します。
Nov 2 14:21:20 server2 kernel: nfs: server server1 not responding, still trying
NFS v3 と Apache 2.2.3 を実行している RHEL5 での動作を再現しました。
Server1 に NFS マウントを作成します (私の /etc/exports の内容)
/srv/test_share server2(rw)
Server2 に NFS 共有をマウントします (私の /etc/fstab の内容)
server1:/srv/test_share /mnt/test_share nfs defaults 0 0
NFS共有に保存されたイメージファイルを参照する単純なHTMLファイルを使用して、Apacheで仮想ホストをセットアップします
サイトをロードすると、html ファイルと画像ファイルはすべて 200 を返します
NFS 共有をアンマウントし、ページをロードすると、参照されているイメージに対して 404 が返されます
NFS 共有を再マウントする
Server1 で NFS をオフにして、NFS クラッシュをシミュレートします。サイトをリロードすると、参照ファイルの取得中にハングします。
これまでのインターネット検索では、適切な解決策が見つかりませんでした。基本的に、Web サーバーが 404 を返し、NFS マウントが回復するまでハングしないことが望ましい動作です。
乾杯、
ベン
java - NFSマウントを介したJavaI/ O
XMLファイルをNFSマウントされたファイルシステムに出力するJavaコードが少しあります。ファイルシステムがSamba共有としてマウントされている別のサーバーでは、30秒ごとに新しいXMLファイルをポーリングするプロセスが実行されています。新しいファイルが見つかった場合、そのファイルは処理され、バックアップファイルとして名前が変更されます。99%の確率で、ファイルは問題なく書き込まれます。ただし、バックアップファイルに部分的に書き込まれたファイルが含まれる場合があります。
他の人と話し合った結果、外部サーバーで実行されているプロセスが、ファイルの読み取り時にJava出力ストリームに干渉していると推測しました。彼らは、最初にタイプ.tempのファイルを作成し、ファイルの書き込みが完了した後に.xmlに名前を変更することを提案しました。一般的な業界慣行。変更後、名前の変更は毎回失敗します。
一部の調査では、NFSマウントされたファイルシステムで作業する場合、JavaファイルI/Oにバグがあることが判明しました。
Javaの達人を助けてください!この問題を解決するにはどうすればよいですか?
関連する情報は次のとおりです。
- 私のプロセスは、Solaris10で実行されているJava1.6.0_16です。
- マウントされたファイルシステムはNASです
- ポーリングプロセスを備えたサーバーは、Windows Server 2003 R2 Standard、ServicePack2です。
これが私のコードのサンプルです:
c - CのNFSv4を介したファイルロックリース
NFS v4の派手なファイルロック機能の使い方を知っている人はいますか?(たとえば、NFSプロトコルについて(下にスクロール)で説明されています)。おそらくNFSv4は、45秒のライフタイムでファイルロックリースをサポートしています。Linuxカーネル(私はgentoo 2.6.30を使用しています)がこれらの詳細を問題なく処理していると信じたいのですが、私は使用できfcntl()
、すべてが洗い流されています。しかし、ロックリースを取得、維持、解放するには、なんらかの特別なことをしなければならないと思います。すべての助けに感謝します。
nfs - NFS or SMB on Windows Share
If I were to create a Windows shared folder, put a database file in that folder to be shared among multiple users of our client app, is that an NFS or SMB shared folder?
java - Java プログラムから NFS 共有にアクセスする
Java プログラムから NFS 共有からデータを読み取りたいと考えています。最初に NFS サーバーに認証してから I/O を実行するプログラムが必要です。(NFS 共有を事前にマウントする必要はありません。)
したがって、 CIFS の代わりに NFS を除いて、このライブラリによって提供される機能が必要です: http://jcifs.samba.org/ 。そのようなものはすでにJavaに組み込まれていますか、それともサードパーティのライブラリが必要ですか?
また、これが Perl、Python、または Ruby で実行できるかどうかにも興味があります。しかし、主に Java です。
unix - ファイルのr/wロックとリンク解除
次の問題があります。各セッションデータがセッションIDで名前が付けられた単純なファイルに保存されるファイルシステムベースのセッションストレージを作成したいと思います。
次のAPIが必要です:write(sid,data,timeout)
、、ここread(sid,data,timeout)
でremove(sid)
sid ==ファイル名、また、すべてのタイムアウトセッションを削除する可能性のあるある種のGCが必要です。
単一のプロセスで作業する場合は非常に単純なタスクですが、複数のプロセスで作業する場合、またはNFSを介して作業する場合でも、絶対に簡単ではありません。
私が考えた最も簡単な解決策は次のとおりです。
ファイルのリンク解除がファイル名で機能し、ファイルロックがファイル記述子で機能するという最大の問題。したがって、上記は次のシナリオでは機能しません。
誰かがそのような問題がどのように解決されるかについての考えを持っていますか?ファイルロックとファイル削除を組み合わせたり、ファイルをアトミックに操作したりできるトリックはありますか?
ノート:
- データベースを使いたくない、
- Unixの解決策を探しています
- ソリューションは、fcnl、open、close、unlinkなどの標準のPOSIX呼び出しで機能する必要があります
ありがとう。
明確化の主な問題は、ファイルの操作(names --unlink)は、ファイル記述子の操作--lockingを使用してアトミックに実行する必要があることです。
- 開いてリンクを解除します-ファイルを操作します
- fnctl--記述子を処理します
installation - シェルスクリプトを実行するときに、ファイルの上書きや切り捨てからスクリプトを保護するにはどうすればよいですか?
アプリケーションの実行中に、使用する共有ライブラリの1つが書き込まれるか切り捨てられると、アプリケーションがクラッシュします。OS(この場合はSolarisですが、Linuxやその他の* nixにも当てはまると思います)は、関連するiノードを削除しないほど賢いため、ファイルを移動したり、「rm」を使用してファイルを一括削除したりしても、クラッシュは発生しません。いずれかのプロセスでファイルが開いている間。
共有ライブラリのインストールを実行するシェルスクリプトがあります。場合によっては、最初にアンインストールせずに、すでにインストールされているバージョンの共有ライブラリを再インストールするために使用されることがあります。アプリケーションはすでにインストールされている共有ライブラリを使用している可能性があるため、スクリプトがファイルをrmしたり、邪魔にならない場所に移動したりするのに十分スマートであることが重要です(たとえば、アプリケーションがないときにcronが空にする可能性のある「削除済み」フォルダーに移動する)上書きまたは切り捨てられないように、新しいものをインストールする前に実行されます)。
残念ながら、最近、インストール直後にアプリケーションがクラッシュしました。一致?見分けるのは難しいです。ここでの本当の解決策は、古い巨大なシェルスクリプトよりも堅牢なインストール方法に切り替えることですが、切り替えが行われるまで、いくつかの追加の保護があると便利です。シェルスクリプトをラップして、ファイルの上書きや切り捨て(理想的には大音量での失敗)から保護し、それでもファイルを移動またはrm'dできるようにする方法はありますか?
移動/削除と上書き/切り捨てを区別できないため、標準のUNIXファイルパーミッションではうまくいきません。エイリアスは機能する可能性がありますが、どのコマンド全体をエイリアスする必要があるのかわかりません。truss / straceのようなものを想像しますが、各アクションの前に、実際に実行するかどうかをフィルターに対してチェックします。意図的に悪意のあるスクリプトに対しても機能する完璧なソリューションは必要ありません。
client - NFSクライアントライブラリ
NFS共有にアクセスするためのスタンドアロンライブラリを探しています。共有のマウントを探しているのではなく、ファイルを参照してアクセスして読み取るだけです。
opendir
、、scandir
などの通常のPOSIX操作に似たシンプルでシンプルなAPIを備えた好ましいものread
。
前もって感謝します!
kill - NFSマウントオプションについて話すときの「確実なキル」とは何ですか?
次のリンクで
http://www.faqs.org/docs/Linux-HOWTO/NFS-HOWTO.html
「確実に殺す」以外のプロセスは殺すことができないと言われていますが、確実に殺すのは何ですか?
ハード(NFSクライアントマウントオプション)
サーバーがクラッシュすると、NFSマウントされたファイルシステム上のファイルにアクセスするプログラムがハングします。intrも指定しない限り、プロセスを中断または強制終了することはできません(「確実に強制終了」を除く)。NFSサーバーがオンラインに戻ると、プログラムは元の場所から邪魔されずに続行されます。NFSでマウントされたすべてのファイルシステムでhard、intrを使用することをお勧めします。
linux - 複数のstdoutを単一のファイルにリダイレクトする
NFSを使用する複数のマシンで実行されているプログラムがあり、それらのすべての出力を1つのファイルに記録したいと思います。すべてのマシンで実行できますか./my_program >> filename
、それとも同時実行性に注意する必要がある問題がありますか?追加しているだけなので問題ないと思いますが、確認しているだけです。