問題タブ [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.
git - NFS 共有上の Git リポジトリへのプッシュが失敗する
現在、ローカル ディスクに Git リポジトリがあります。それらはグループによって共有され、SSH (git-shell を使用) 経由でアクセスされます。
スペースの問題のため、リポジトリを NAS 上の NFS 共有に移動したいと考えています。私はこれを実験しており、奇妙な問題に遭遇しました。まったく同じパーミッションを持つ新しい (そしてむき出しの) リポジトリは問題なく複製できますが、変更のプッシュ (touch foo && git add foo && git commit && git push origin master) は「Couldn't set refs/heads/master」というエラーで失敗します。 」および「書き込みに失敗しました」。
ここで、ローカル ディスクでこのシナリオを繰り返すと、refs/heads/master はユーザーがプッシュしたものによって所有されます。逆に、NFS 共有では、その所有者をプッシュしようとしているユーザーに変更しても、エラーはスローされません。ただし、どちらの場合も、ユーザーは、リポジトリ全体を所有し、グループの書き込み権限を持つグループのメンバーです。さらに、このグループのメンバーであるユーザーとして SSH を使用してログインすると、NFS 共有とローカル ディスクの両方で、(予想どおり) refs/heads/master にアクセスできます。
その結果、私はここで途方に暮れています。グループのアクセス許可により、ユーザーが refs/heads/master を上書きできるようになっているため、別のファイル所有者がプッシュを失敗させる理由がわかりません。さらに、そのファイルに chmod 777 があっても、ファイルを chown しない限り、プッシュは失敗します。
誰かがこの奇妙さに光を当てることができれば、私は最も感謝しています. 前もって感謝します!
shell - ディレクトリが NFS 経由でマウントされているかどうかを (sh で) 確認する方法
df -t nfs $ディレクトリ
ディレクトリが NFS マウントされている場合は 2 行の出力が返され、そうでない場合は 1 行が返されます。
df の一部のバージョンでは、NFS マウントされていない場合に終了ステータス 1 が返されますが、GNU coreutils 5.3.0 では返されません ...
は洗練されていないと感じており、同僚はエラーを十分にチェックしていないと言っています。これを行うより良い方法はありますか?
java - setLastModifiedがNFS共有で機能しない
Solarisサーバーの1つにNFS共有をマウントしています。パス/appdata/ anpは、サーバーAからサーバーBにマウントされます。共有の下:
/appdata/anp
私はという名前のフォルダを持っています
/appdata/anp/factory
上記のディレクトリに、インポート/更新する必要のあるデータを含むファイルをデータベースに配置します。データベースにデータをインポートした後、インポートしたデータの操作結果に基づいて、ファイルを成功/失敗ディレクトリに移動します。
/appdata/anp/factory/success
/appdata/anp/factory/failure
上記のディレクトリのいずれかにファイルを移動し、次を使用してファイルの最終変更時刻を現在のシステム時刻に更新します。
file.setLastModified
これはブール値を返します。問題は、この更新操作を実行しているときはいつでも、そのファイルのタイムスタンプを現在のシステム時刻に更新できないことです。
誰かがシナリオが何であるか知っていますか
file.setLastModified
失敗を返します。NFSのアクセス許可も確認しましたが、すべて問題ないようです。setLastModifiedが失敗を返す可能性があるケースを知る方法はありますか?
私が本当にこれに私の髪を引っ張っているのを手伝ってください!:(
django - Django ImageField を nfs にアップロードします。(ロックはありません)
Django ImageField を使用して nfs ストレージにアップロードしたいのですが、次のエラーが発生します。
[Errno 37] 利用可能なロックがありません
これは /etc/fstab/ にあります:
173.203.221.112:/home/user/project/media/uploads/ /home/user/project/media/uploads nfs rw,bg,hard,lock,intr,tcp,vers=3,wsize=8192,rsize=8192 0 0
また、lockf() の代わりに flock() を使用するように django にパッチを適用しようとしましたが、まだ機能していません。
http://code.djangoproject.com/ticket/9400
何が問題なのですか?
svn - 存在しないディレクトリ /home/.svn にアクセスしようとすると、svn commit が失敗する
次のエラーで svn commit に失敗しました:
さて、ここでの最初の問題は、svn が /home/user/.svn を探す必要があることです。存在しない /home/.svn をわざわざ探す理由がわかりません。
入出力エラーはsvnとは関係ありません
これは、NFS マウント システムの結果にすぎません。残念ながら、私はそれがどのように設定されているかをほとんど制御できません。
とにかく質問: .svn ファイルを探す場所を svn に明示的に伝えるにはどうすればよいですか? それが不可能な場合、どうすればこれを回避できますか?
svn バージョン: 1.6.5
performance - git ステータスのパフォーマンスを改善する方法
NFS 上にある Linux マシンに 10 GB のリポジトリがあります。初回git status
は36分、2回目以降git status
は8分。Git はファイルのキャッシュを OS に依存しているようです。、のような最初のgit
コマンドだけが、レポ全体をパック/再パックすることを含み、巨大なレポには非常に長い時間がかかります。このような大規模なリポジトリで使用したことがあるかどうかはわかりませんが、この問題に遭遇した人はいますか?commit
status
git status
git gc
、を試しましgit clean
たgit repack
が、所要時間はまだ/ほとんど同じです。
サブモジュールや、リポジトリをより小さなものに分割するなどの他の概念は役立ちますか? もしそうなら、より大きなレポを分割するのに最適なのはどれですか。大規模なレポで git コマンドにかかる時間を改善する他の方法はありますか?
nfs - NFSファイルをCコードで開く
nfsディレクトリに移動するパス名を使用してC/C ++ / Javaコードでファイルを開くと、NFSがステートレスですべての場合に読み取りおよび書き込み構文はどのように機能しますか?試しましたが、NFSマウントされたファイルにアクセスするサンプルコードが見つかりません。私の現在の理解では、状態を維持するのはNFSクライアントの仕事であり(読み取りおよび書き込みポインターなど)、アプリケーションは同じ構文を使用します。
関連する質問は、VFSとUFSに関するものです。現在のUNIXマシンのすべてのファイルは、最初にvnodeを介してアクセスされ、次に(ローカルとリモートに応じて)iノードまたはrnode構造にアクセスされますか?
svn - TortoiseSVN は、ネットワーク共有に保存された作業コピーで非常に遅いログを表示します
Samba ネットワーク共有に保存されている作業コピーを使用しています。うまくいくようです。を除外する...
Windows では、「svn log -l 100 -v」を実行できます。作業コピーで、1 秒未満で結果を取得します。ただし、TortiseSVN を使用して右クリックしてログを表示すると、30Mbps を超えるネットワーク帯域幅を使用しているときに数分間ハングします。
Tortise がネットワークに保存された作業コピーを処理するために必要な既知の問題や構成はありますか?
python - sqliteおよびNFSとの安全なファイル同期を確保する方法
最近、アプリケーションのワークスペースファイル形式をsqliteに変換しました。NFSでの堅牢な操作を保証するために、一般的な更新ポリシーを使用して、ローカルハードディスクの一時的な場所に保存されているコピーにすべての変更を加えます。保存する場合にのみ、元のファイルを一時ファイルと一緒にコピーして、元のファイル(NFS上にある可能性があります)を変更します。元のファイルを開いて排他ロックを維持するだけなので、他の誰かが開こうとすると、他の誰かがそれを使用していることが警告されます。
問題は次のとおりです。一時ファイルを元のファイルに保存し直すときは、元のファイルのロックを解除する必要があります。これにより、小さなウィンドウではありますが、他の誰かが元のファイルにアクセスして取得するためのウィンドウが提供されます。
私はこれを回避するいくつかの方法を考えることができます:
(1)sqlを使用して、一時の内容を元のファイルに単純にダンプします。つまり、元の、vacummの元にテーブルをドロップし、一時から選択して、元のファイルに挿入します。ただし、NFSに保存されているsqliteファイルに対してSQL操作を行うのは好きではありません。これは汚職の問題で私を怖がらせます。私はこのように考えるのは正しいですか?
(2)さまざまな追加ファイルを使用して、元のファイルに温度をコピーしているときに他のファイルが侵入するのを防ぐためのガードとして機能します。ミューテックスとしてファイルを使用することは、せいぜい問題があります。また、アプリケーションがクラッシュした場合に余分なファイルがぶら下がるという考えも好きではありません。
誰かがこれに対して別の解決策を持っているかどうか疑問に思います。他のアプリケーションが侵入して元のファイルを取得しないようにしながら、一時ファイルを元のファイルにコピーしますか?
私はpython2.5、sqlalchemy 0.6.6、sqlite3.6.20を使用しています
ありがとう、ディーン