Network and Storage Protocols

Hunting for NFSv4 illegal filename

jld
4,391 Views

Context: cDot 8.3 serving data mostly over NFS, volumes langage set to fr.UTF-8

We work in a mixed NFSv3 (old legacy UNIX clients) and NFSv4 (EL5, EL6 & Ubuntu clients) environment.

 

Sometimes an ISO encoded filename is created by a user from a NFSv3 client. Such filename is invalid for NFSv4 and not displayed with the ls command, this is expected as UTF8 encoding of filenames is mandatory with NFSv4.

 

My problem is to spot the invalid filenames to fix them, and also correct user environment/application/system configuration on the NFSv3 client, to prevent further illegal names in the future. I know the convmv command in Linux, but scanning about 200M files is quite a challenge, so I am searching for something more direct to detect the invalid filenames.

 

When an illegal filename is refused to an NFSv4 client, the filer generated an event like those below:

 

> event log show -node * -messagename Nblade.Nfs4IllegalDirentName
Time                Node             Severity      Event
------------------- ---------------- ------------- ---------------------------
9/1/2015 09:24:39   XXX     ERROR         Nblade.Nfs4IllegalDirentName: Directory entry with file ID '10546843' on the volume with MSID '2147484683' cannot be listed. Directory entry name is illegal for NFSv4.
9/1/2015 08:12:59   XXX     ERROR         Nblade.Nfs4IllegalDirentName: Directory entry with file ID '9898938' on the volume with MSID '2147484680' cannot be listed. Directory entry name is illegal for NFSv4.

 

I would like to make use of these events to catch those illegal filenames : the MSID giving the volume name (easy with volume show -vserver nasc2 -msid xxxx), but how to use the file ID to retreive the file path ? As far as I have understood, the File ID is different from the inode number, so I do not know how to use this File ID. Any idea ?

 

 

Thanks

JL

 

1 ACCEPTED SOLUTION

shatfield
4,361 Views

try:

volume file show-inode -vserver <vserver> -volume <volume> -inode-number <file ID>

 

View solution in original post

2 REPLIES 2

shatfield
4,362 Views

try:

volume file show-inode -vserver <vserver> -volume <volume> -inode-number <file ID>

 

jld
4,353 Views

NetApp support gave me this alternate solution this afternoon:

 

   > set diag

   *> volume explore -format inode <msid.fileid> -dump name

 

but I prefer your way that is simpler and nicer.

Many thanks. This will help me a lot to cleanup my volumes.

 

 

JL

Public