There are some compromises that you'll need to make; there are certainly some control granularity issues. The pattern of access for file-based data and block-based data is significantly different.
In file-based data, you'll probably be sending longer streams of data and typically not have the "locality of reference" that you might have in block-based access where you may be doing transaction processing and so on. So the data residency in cache and the management of cache is dramatically different -- and many [
unified or multiprotocol storage
] systems don't have the capability to discern file-based access, apply dedicated resources, utilize optimized caching algorithms or manage data transfers. This is different from block-based systems that are typically tuned to handle individual blocks and employ cache residency algorithms.
As a result, a lot of these [unified or multiprotocol storage] systems don't have the granularity of control needed to understand how to handle file-based I/O versus block-based I/O. This leads to compromises in performance and could lead to variability in performance. As you move into more performance-critical environments, consistency of performance becomes more important. If a block-based application is combined on a system that has more dynamic file-based access, users can experience variability in performance because of resources allocated to the file-based side.
Listen to the unified storage FAQ audiocast.
Go to the beginning of the Unified Storage FAQ Guide.