.nfsXXXXファイルとは何で、どのように削除できますか?
環境
NFS
回答
.nfsXXXX
のような命名規則を持つファイルは、クライアントで現在開いているファイルがそのクライアントによって削除されたときにNFSクライアントによって作成されます- クライアントはファイルの名前を
.nfsXXXX
に変更し、これは他のクライアントやプロセスがそのファイルを利用するのを妨げます - 名前を変更したクライアントは、そのファイルがクライアントプロセスによって閉じられた後に削除する必要があります。この削除は、クライアントが切断された場合、リブートされた場合、または削除を発行するプロセスが終了した場合には行われないことがあります
- これらのファイルはONTAPプロセスによって生成されるものではなく、クライアントの要求に応じてのみ作成されます
- NFSクライアントとプロセスを
.nfsxxxx
ファイルを使って見つけるのは非常に時間がかかる場合があります - そのファイルを含むNFS共有にアクセスする可能性のあるすべてのNFSクライアントで、すべてのプロセスを確認する必要があります
lsof
などのユーティリティを使用して、.nfsxxxx
ファイルを使用しているプロセスを特定することができます.nfsXXXX
ファイルが作成されないようにするには、ファイルが開いているときに削除しないでください.nfsxxxx
ファイルが使用されていないと判断された場合は、削除してもかまいません。削除によって新しい.nfsxxxx
ファイルが作成される場合は、そのNFSクライアント上のプロセスがそのファイルを開いています.nfsxxxx
ファイルの作成と削除のデモンストレーション:
- NFSクライアントから、マウントされたNFS共有にファイルを作成し、tailコマンドで開きます
ctrl-z
でプロセスを中断するか、新しいターミナルを開いて残りのデモを完了します
shell# echo test > foo
shell# tail -f foo
test
^Z
[1]+ Stopped tail -f foo
- ファイル
foo
を削除して、NFSクライアントが.nfsxxxx
ファイルを作成するようにします
shell# rm foo
shell# ls -A
.nfs5ACF
- 以降の
rm
コマンドでは、NFSクライアントが再度ファイル名を変更するだけであることを確認します
shell# rm .nfs5ACF
shell# ls -A
.nfs6ACF
- lsofまたはfuserを使用して、ファイルを開いているプロセスを特定します
shell# lsof ./.nfs6ACF
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
tail 25725 root 3r REG 8,1 27603 6647 .nfs6ACF
shell# fuser .nfs6ACF
.nfs6ACF 25725o - 最後に、ファイルを開いたままのプロセスを終了し、
.nfsxxx
ファイルが削除されたことを確認しますshell# kill 25725
shell# ls -al
total x
drwxr-sr-x 2 root src 400 Mar 29 15:39 .
drwxrwsr-x 36 root src 3336 Mar 21 09:37 ..
追加情報
- クライアントがファイルを開いているかどうかをONTAPから判別できるかどうかは、使用するプロトコルによって異なります:
- NFSv3:通常はロックは存在しません。NFSv3はステートレスです。
- NFSv4.0または4.1:クライアントがファイルを開いている場合、
nfsv4
またはnfsv4.1
ロックが存在します。cluster2::> vserver locks show -vserver svm1 -volume unix -path /unix/.nfs000000000000006000000009
Vserver: svm1
Volume Object Path LIF Protocol Lock Type Client
-------- ------------------------- ----------- --------- ----------- ----------
unix /unix/.nfs000000000000006000000009
svm1_cifs_nfs_lif1
nfsv4 share-level 10.64.24.10
Sharelock Mode: write-deny_none
- ファイルにnfsv4またはnfsv4.1ロックが存在する場合にのみ、クライアントIPを特定できます。
- ロックが存在しない場合、NFSv3クライアントがファイルを使用しているかどうかを表示するコマンドはありません。
- FlexGroupsを使用して、ONTAPディレクトリを非同期的に削除するクライアント権限を管理する
注:9.8より前のONTAPリリースでは、nfsv4およびnfsv4.1タイプのロックのクライアントIPを取得するには、追加のdiagモードコマンドが必要です。