By
Published: 01 Sep 2004
In articles analyzing the pros and cons of NAS vs. SAN, the issue of file-level vs. block-level access often comes up. In particular, it's often said that databases operate "at the block-level". What is unique about the way a database accesses information that makes block-level access desirable? In a SAN environment, can a client request/receive individual pieces of the database (select blocks) rather than the entire database? I'm not certain where the efficiencies come in.
First, keep in mind that
block-level access and addressing is the basis for resolving I/O, whether it be an application performing raw (direct without file system) block I/O, access via a file system including
NAS, or object-based access. As an example, a database management system can perform I/O using raw, direct access to a storage device or LUN bypassing a file system. In this instance, the database management system performs some of the tasks that a file system would have normally performed, including keeping track of placement of data and mapping between database object addressing and logical block numbers (LBNs) on a storage volume. In the past, the reason for this was to bypass the overhead in some early file systems, or to bypass caching and buffering.
In NAS, I/O requests are made to the file system, which in turn issues the specific block requests and reads or writes to the storage volume. With object-based access, data that is stored via unique address identifiers is read and written to actual storage as blocks of data. Block-level access more closely aligns to the logical and physical data layout of the underlying storage subsystem.
In a SAN environment, a client could make a request to a database server that in turn would retrieve the specific blocks of data on behalf of the client. One of the challenges of block storage, however, is that it requires a level of serialization to maintain data consistency and coherency particularly for concurrent access. This is where file systems and NAS-based file access comes into play to serve as the serialization software for access to the block data.
In the past it was not recommended to put certain applications like database on NAS due to performance and integrity of the storage interfaces (network link). This has changed and now with proper configuration and design, databases are supported using NAS-based storage as are applications like Microsoft Exchange. For many applications, file-based access using NAS is just fine, but applications with serialized access to storage performance can be enhanced by not having to go through a NAS layer. After all, eventually NAS will perform a block I/O.
Read Randy Kerns' answer to this question.
Dig Deeper on SAN technology and arrays
When cloud durability is added to the mix, cloud providers are able to tout a high number of nines of availability.
Continue Reading
Cloud storage can be less expensive from a cost-per-gigabyte perspective, but it's important not to lose sight of other benefits as a value ...
Continue Reading
Using solid-state in the cloud can boost performance, but first be sure you look past cost per gigabyte and are aware of any constraints from ...
Continue Reading