Filesystem monitoring question

Eric Anderson anderson at centtech.com
Fri Nov 18 15:48:51 GMT 2005


Cornelis Swanepoel wrote:
> Before all else let me just say that my programming experience is confined
> to userland but I am very eager to learn about interaction with the FreeBSD
> kernel.
> 
> There are many possible answers to this question. Can you explain
> 
>>more about exactly what you need?
> 
> 
> 
> 
> This will be a server setup from scratch to accomodate the requirements.
> Currently the share is a full partition but it can be setup on the new
> server as a directory.
> A number of SMB and NFS clients, around 30, will need to write to this
> directory.
> Writing to the directory is 24/7 since some clients VPN into the network
> from different time zones.
> 
> When they have completed a write operation I need to trigger some code that
> will act upon the file just written.
> This code generates a unique id for the file, stats the file, compresses the
> file(if over set limit), generates a preview of the file and stores some
> info about the file and its owner in a MySQL db and a log on a seperate
> machine.
> It then moves the file to a different location on the same machine (which is
> inaccesible to the NFS and SMB clients) and renames it as its unique
> identifier.
> 
> At this point it is out of my hands.
> 
> 
> Depending on what you can and cannot access ... If everything .. goes
> 
>>through VFS, that would work. But if
>>
> 
> it's a production server, you might not be able to get permission to
> 
>>fiddle with the kernel.
> 
> 
> 
> 
> This machine will be built from scratch and any kernel fiddling is possible.
> 
> ktrace might do everything you need, but I understand that it has an
> 
>>impact on system performance under load. I don't know if that matters
>>to you at all. It also might be awkward if the SMB and NFS servers
>>are kernel processes. (I just don't know; I've only used ktrace on
>>ordinary user-land processes, and not even much of that.)
> 
> 
> 
> 
>>From the limited research I've done it seems that ktrace might not be the
> answer and I've been looking more into kqueue.
> I will definitely look into the VFS option.
> 
> As I said at the start, this is all new to me and I greatly appreciate the
> feedback so far.
> 
> If my explaination of the requirements is lacking please let me know
> specifically and I can elaborate.
> 
> Thanks again and any further suggestions would be much appreciated.

Here's a non-optimal way, but just tossing it in anyway:  make a clone 
of nullfs (call it monitorfs say), modify it so that it outputs the 
write's using a printf (or any other more efficient method).  Then you 
kldload your monitorfs module, and your tool watches the output.

Eric


-- 
------------------------------------------------------------------------
Eric Anderson        Sr. Systems Administrator        Centaur Technology
Anything that works is better than anything that doesn't.
------------------------------------------------------------------------


More information about the freebsd-hackers mailing list