Sun 7410 and ZFS
I just got home from the LISA conference this year. I took a full day course on ZFS while I was there. Aside from being very inclined to replace my Ubuntu home media server to BSD for the sole purpose of being able to use ZFS I also learned a bit on how to speed up our 7410.
As more and more time passes since we installed the 7410, I seem to get more people complaining the system is slow. Generally, these complaints seem to be correlating with when the full backups run. Well, it makes sense that things will slow down while I am doing a front-to-back read of the data.
It turns out that the reason for slowness might actually be because of a configuration error. When creating a share on the 7410 there is an option for “Update access time on read”. This option is on by default and the Sun employee who installed our system told us we should never need to change that. What does this mean? It means that every time a file is read the system updates the meta-data of that file with the timestamp it was last read. So for every file read, the system does a write. In fact, due to the copy-on-write nature of ZFS, the system ends up copying the entire file table tree up to the root of the tree. This is a very time expensive operation to do and severely impacts performance.
When is the access time of a file used? Generally, this would only be when you need to perform forensics on the filesystem if it was hacked. Perhaps there is some obscure program that needs the atime of a file. If you run into such a program or absolutely need the ability to tell when a file was last read for forensics purposes, then you should leave atime on. Otherwise, I would suggest turning this feature off. I have turned it off on our shares. Time will tell if things speed up or not.
