質問
まず、新しいワークステーションにログインします。
myAcct@ws5: mkdir /users/adminAcct/foo/parentDir/childDir
mkdir: cannot create directory ‘/users/adminAcct/foo/parentDir/childDir’: Permission denied
Permission denied
childDirが存在してもエラーが発生します。
childDirにアクセスすると、このエラーが変わります。 iPythonを使用するos.path.isdir()
か、シェルを使用してこれを実行できますls
。
myAcct@ws5: ls /users/adminAcct/foo/parentDir/childDir
file.cfg
myAcct@ws5: mkdir /users/adminAcct/foo/parentDir/childDir
mkdir: cannot create directory ‘/users/adminAcct/foo/parentDir/childDir’: File exists
私はいつも「ファイル存在」エラーを返すことができるようにしたいです。
背景
--x
親ディレクトリに対するグループ権限があります/users/adminAcct/foo/parentDir
。サブディレクトリが/users/adminAcct/foo/parentDir/childDir
存在し、 r-x
そのディレクトリに対するグループ権限があります。これはもともとPythonの問題でしたが、シェルで再作成できました。私は、NFSを介してマウントされたホームディレクトリを持つクラスタの一部であるCentOS 6ワークステーションを使用しています。この/users
ディレクトリは/etc/fstab
オプションで見つけてインストールされます(rw,vers=3,hard,intr,addr=<some IP addr>)
。カーネルはLinux ws5.MyCompany.com 2.6.32-431.17.1.el6.x86_64 #1 SMP Wed May 7 23:32:49 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
コンテキスト
mkdirはサブディレクトリにアクセスした後もしばらくの間エラーを返しますFile exists
。しばらくすると、mkdirはPermission denied
エラーを返します。これにより、これらのワークステーションで/users/adminAcct/foo/parentDir/childDir
Airflow CeleryExecutorワーカーを起動して実行すると、断続的に問題が発生しますAIRFLOW_HOME
。いつこの問題が再発するかを予測することはできません。
答え1
ウォールクロックベースのタイムアウトを持つNFSクライアントキャッシュプロパティ。
これによりパフォーマンスが向上しますが、場合によっては「少し誤った」結果が表示されることがあります。クライアントの仕組みの性質は、ファイルの存在などに対する標準のUNIX保証を常に満たすわけではありません。
この問題を軽減する1つの方法は、クライアント側のキャッシュを無効にするかnoac
()ディレクトリエントリのキャッシュを無効にすることです(lookupcache=none
)。https://linux.die.net/man/5/nfs