NFS共有でtarアーカイブを抽出するときに、奇妙なエラーの根底に到達しようとしています。
アーカイブされたファイルに書き込み権限が設定されていない状態でアーカイブされたファイルを含むtarファイルを抽出すると、エラーが発生します。
エラーメッセージは次のように断続的に出力されます。
tar: test/doc/manpages/man1/Makefile.in: Cannot close: Input/output error
この動作を確認するために、2つの同一のtarファイルを設定しました。1つはアーカイブファイルがchmod
権限575(ユーザー読み取り/実行)に設定され、もう1つはchmod
権限が755(ユーザー読み取り/実行)に設定されています。書き込み/実行)。
両方のtarファイルは次のようにアーカイブされました。
tar czf test.tgz test
そして次のように抽出されます:
tar -xvzf test.tgz
ローカルファイルシステムで両方のアーカイブを抽出したときに、エラーは発生しませんでした。さらに、NFS共有でユーザー書き込みを使用してアーカイブを抽出すると、エラーは発生しません。アーカイブファイルに対するユーザーの書き込み権限なしでアーカイブセットをNFS共有に抽出すると、常にエラーが発生しました。
NFS共有は、次のエクスポートパラメータで構成されます。
/media/share 10.0.0.3(rw,sync,no_subtree_check,no_root_squash)
また、NFSマウントのクライアントfstabエントリは次のとおりです。
10.0.0.3:/media/share /media/share nfs4 rw,_netdev,auto,clientaddr=10.0.0.10 0 0
クライアントとサーバーの両方がUbuntu14.04.1を実行しています
nfs-common
クライアントとサーバーの両方のバージョンはv1:1.2.8-6ubuntu1.2
そしてその nfs-kernel-server
サーバー上のパッケージもv1:1.2.8-6ubuntu1.2
これらのエラーの原因を突き止めたいので、助けていただければ幸いです。
多くのトラブルシューティングを行った結果、私の場合、これらのエラーは、一部のクライアントマシンのfstabエントリのclientaddr
マウントオプションが誤ったIPアドレスに設定されていることに関連しているようです。各ホストを通過し、すべてのclientaddr
値が正しいことを確認し、ボリュームを再マウントすると、前述の両方のアーカイブをエラーなしで抽出できました。
NFSのマニュアルページ は、clientaddr
マウントオプションに関して、次のことを具体的に述べていることに注意してください。
サーバーがクライアントへのコールバック接続を確立できない場合、パフォーマンスが低下したり、ファイルへのアクセスが一時的にハングしたりする可能性があります。
したがって、私が見た問題は、サーバーが間違ったクライアントコールバックアドレスで構成されたクライアントへのコールバック接続を確立できないことに関連していると思われます。