[OpenAFS] AFS version of du
Jason Edgecombe
jason@rampaginggeek.com
Sun, 02 May 2010 10:36:49 -0400
Douglas E. Engert wrote:
>
>
> Richard Brittain wrote:
>> On Fri, 30 Apr 2010, Steve Simmons wrote:
>>
>>> On Apr 30, 2010, at 4:15 AM, Staffan H?m?l? wrote:
>>>
>>>> Is there a version of du that does not follow AFS mountpoints?
>>>>
>>>> If I try to do a 'du -sh *' in a directory that has some AFS
>>>> mountpoints it inevitably fails after some time. It also takes a
>>>> lot of time when it has to look through things in mounted volumes
>>>> (e.g. the backup volume that I have mounted in many places).
>>>>
>>>> I've tried -P and -x to make it skip mount points, but it doesn't
>>>> work (at least on CentOS 5 Linux).
>>>
>>> The short answer is that it might be coming coming, but it's going
>>> to be a while. Here's the detailed scoop as I understand it, based
>>> on some old mail exchanges I had with the findutils maintainer James
>>> Youngman and discussion on the findutils mailing list.
>>
>> This is very promising news. I was about to start a new thread about
>> problems with 'find', but since it is so closely linked with this
>> I'll just jump in here.
>>
>> Yesterday I was running 'find' and 'fs lsmount' across our cell to
>> explicitly look for volume mountpoints, and got some very strange
>> errors. On directories which exist and I had full access to, find
>> would sometimes throw a big pile of errors like:
>> find: ./users/a/: No such file or directory
>
>
> I have been working on an AFS audit tool written in Perl since find has
> too many issues. The heart of this uses File::Find and if a directory is
> found AFS::FS::lsmount( $rname ) is used to test if its a mount point
> and set File::Find::prune = 1; The Perl module AFS-2.6.2 was released
> on 4/1, and is working well!
>
> This same combination could be used to write a Perl du command that
> would not cross mount points.
>
> A list of volumes is input to the tool, and each volume is mounted
> temporarily. Using the AFS::ACL module ACLs are examined and if a sub
> directory has the same ACL as its parent, it is reported with the parent.
> (the ACL entries are sorted before the compare.) So our 2000 volumes
> with 600,000 directories get reduced down to 8000 entries to look at.
> These are further examined based on the type of volume and the uses and
> rights listed in the ACLs.
>
> If all the volumes in the cell are scanned, one can find volumes that
> have no mount points as well as volumes with multiple mount points.
>
>
>>
>> - and obviously did not recurse into that directory. It was acting
>> like it read the directory entries but failed to later stat() them.
>> I blamed GNU find for a while, but then observed the same behaviour
>> from Solaris 9 and OSX.
>>
>> This is definitely not a permission issue (l ACL but not r), but it
>> does seem to be related to crossing mount points, since I have never
>> seen an error running find inside a single volume. I finally got a
>> RHEL5 linux box to recurse my cell to the desired depth with no
>> errors, but only as long as it was doing nothing else. Running two
>> 'find's immediately generated errors (RHEL5 current, OpenAFS 1.4.12).
>>
>> My servers are a mix of 1.4.11 and 1.4.12 currently.
>>
>> I discovered that one user had made a mount point for a different
>> cell's root inside his home. RHEL5/openafs 1.4.12 happily crossed
>> over and starting searching the other cell, but I noticed that my
>> other test system (RHEL4/openafs 1.4.11) didn't follow. It would be
>> _really_ nice if tools didn't follow mount points to other cells, if
>> nothing else!
>>
>> Richard
>
Is there a third-party du-like program available that I can run? We're
looking at adding folder totals to filedrawers. Yes, we're looking at it
even though it might cause issues.
Jason