This is primarily a performance question and the universal answer for performance questions is, "it depends." In general certain applications like databases do their own buffering of data and then it's important to do block I/O rather than having the file system doing caching. It will be more efficient and yield better performance and use of memory resources. Others that aren't performance critical can do file access very effectively. This is all changing somewhat as file systems have been improved and databases have improved in their ability to do file I/O. There is an issue with the type of storage you use.
NAS devices today do only file I/O as a remote file system (in reality, the NAS controller is really turning your file system request into a block I/O for storage that it controls). Direct attached or SAN attached storage handle block I/O. When you are using NAS for file I/O, a redirector (software on your client system), transfer the file request over a LAN to the remote file server or NAS device. So, it won't work for block I/O on that path.
There has been a "rule-of-thumb" used in the past about always using block I/O for transaction processing but that needs to be reexamined in light of your requirements and the current capabilities of products. I hope this helps.
Evaluator Group, Inc.
Editor's note: Do you agree with this expert's response? If you have more to share, post it in our Storage Networking discussion forum.
This was first published in March 2002