For the pros, this question represents "Beginner's Storage 101." But the storage tech literature always talks about "block level" versus "file level" data, without ever clearly explaining the key differences and relevance. Can someone please do so, once and for all, in layman's language so all us "uninitiated" can understand? Thank you.
Any two devices communicating over a network have to agree on how they will communicate. Standard protocols are the implementations of those communications agreements. There can be and there are many networking protocols.
Storage devices and subsystems typically are slaves to the filing systems that write data to them and read from them. The filing systems are typically file systems or database systems. Examples of filing systems are the NTFS file system in Windows 2000 and NT, the FAT file system in DOS, the many flavors of the Unix File system (UFS), the Veritas File system (VxFS), Oracle databases, Informix databases, Sybase databases.
Filing systems do two things: First, they represent data to end users and applications. This data is typically organized in directories or folders typically in some hierarchical fashion. I talk about this in my new book as data representation. The second thing filing systems do, is organize where data is placed in storage. These filing systems have to scatter the data around the storage container to make sure that all data can be accessed with reasonable performance. They do this by directing the storage block addresses where the data is going to be placed. I refer to this as a data structure function. Today, these are actually all logical block addresses as the disk drives keep their own internal block translation tables. That might be more than you need to know for now, but it could be useful for some.
So the filing system sends commands to "slave" storage to write data to certain blocks and retrieve it from certain blocks. This is what is commonly called block-level storage. In my new book I talk about this as storing. Storing functions are based on master/slave relationships, not client server.
It is also possible for systems to request data using the user-level data representation interfaces (File level storage). This is done by the client using the data's filename, its directory location, URL, or whatever. This is a client/server model of communicating. The server in this case receives the filing request and then looks up the data storage locations where the data is stored and retrieves it using storing level functions (block level storage). The server does not send the file to the client as blocks, but as bytes of the file. File level protocols do not have the capability of understanding block commands. Likewise, block protocols cannot convey file access requests and responses.
One of the confusing things in this is that filing and storing are tightly integrated. Neither can work without the other. But when it comes to understanding how storing and filing traffic is transferred over a network; both are independent of the wiring (networking or bus) that supports their communications. In other words, storing and filing traffic can exist on the same network using different storage application protocols.
Hope this helps.
This was first published in March 2001