Block storage, sometimes referred to as block-level storage, is a technology that is used to store data files on storage area networks (SANs) or cloud-based storage environments. Developers favor block storage for computing situations where they require fast, efficient, and reliable data transportation.
Block storage breaks up data into blocks and then stores those blocks as separate pieces, each with a unique identifier. The SAN places those blocks of data wherever it is most efficient. That means it can store those blocks across different systems and each block can be configured (or partitioned) to work with different operating systems.
Block storage also decouples data from user environments, allowing that data to be spread across multiple environments. This creates multiple paths to the data and allows the user to retrieve it quickly. When a user or application requests data from a block storage system, the underlying storage system reassembles the data blocks and presents the data to the user or application.
Block storage is not alone in the world of data storage. Developers also use other systems, such as object storage and file storage. While the ultimate goal of each is to provide data to users and applications, each of those storage methods goes about storing and retrieving data differently.
Object storage, which is also known as object-based storage, breaks data files up into pieces called objects. It then stores those objects in a single repository, which can be spread out across multiple networked systems.
In practice, applications manage all of the objects, eliminating the need for a traditional file system. Each object receives a unique ID, which applications use to identify the object. And each object stores metadata—information about the files stored in the object.
One important difference between object storage and block storage is how each handles metadata. In object storage, metadata can be customized to include additional, detailed information about the data files stored in the object. For example, metadata accompanying a video file could be customized to tell where the video was made, the type of camera used to shoot it, and even what subjects were captured in each frame. In block storage, metadata is limited to basic file attributes.
Block storage is best suited for static files that aren’t changed often because any change made to a file results in the creation of a new object.
File storage, which is also referred to as file-level or file-based storage, is normally associated with Network Attached Storage (NAS) technology. NAS presents storage to users and applications using the same ideology as a traditional network file system. In other words, the user or application receives data through directory trees, folders, and individual files. This functions similarly to a local hard drive. However, NAS or the Network Operating System (NOS) handle access rights, file sharing, file locking, and other controls.
File storage can be very easy to configure, but access to data is constrained by a single path to the data, which can impact performance compared to block or object storage. File storage also only operates with common file-level protocols, such as a New Technology File System (NTFS) for Windows or a Network File System (NFS) for Linux. This could limit usability across dissimilar systems.
In the following video, IBM's Amy Blea compares block storage and file storage:
Block storage allows for the creation of raw storage volumes, which server-based operating systems can connect to. You can treat those raw volumes as individual hard drives. This lets you use block storage for almost any kind of application, including file storage, database storage, virtual machine file system (VMFS) volumes, and more.
Take, for example, the deployment of virtual machines across an enterprise. With block storage, you can easily create and format a block-based storage volume to store the VMFS. A physical server can then attach to that block, creating multiple virtual machines. What’s more, creating a block-based volume, installing an operating system, and attaching to that volume allows users to share files using that native operating system.
Private cloud deployments are another excellent use of block storage. For a deeper dive into private clouds and block storage, check out the IBM Garage’s explanation of virtualization for extending virtualized private cloud using block and file storage.
Block storage's inherent flexibility makes it ideal for containers. Containers abstract applications from operating systems, much like virtualization abstracts operating systems from physical hardware. With block storage, you can quickly define and launch containers. Containers benefit from the speed of block storage and the native ability for a single host to mount multiple blocks.
Developers often deploy block storage using a Storage Area Network (SAN). SAN is a computer network that provides access to data storage. SANs present block storage to other networked systems as if those blocks were locally attached devices. For example, a server can attach to a SAN using a data network connection—such as Fibre Channel, Internet Small Computer System Interface (iSCSI), or Infiniband—to access a block as if it was a locally accessed volume. You can also configure multiple storage arrays on a SAN, and you can attach multiple servers to the SAN.
A SAN consists of many elements or layers. The first is the host layer, which consists of the server—running a network operating system—that is connected to the data network via a host bus adapter card, which is connected to the storage network using a cable. The host layer is connected to the fabric layer, which is a collection of devices, such as SAN switches, routers, protocol bridges, gateway devices, and cables. The fabric layer interacts with the storage layer, which consists of the physical storage devices, such as disk drives, magnetic tape, or optical media.
Block storage, on its own, does not provide much in the form of redundancy, making RAID arrays an important consideration for any mission-critical block storage implementation. RAID (redundant array of independent disks) protects data by writing it to two or more drives; if one disk fails, the information on the other disk(s) can usually replace it without users being aware of an interruption.
Open source solutions
Open source alternatives to traditional vendor-centric SAN solutions are on the upswing, with new projects emerging on an almost daily basis, while established projects continue to improve and add features. The open source project FreeNAS offers both block storage and software-defined RAID; Openfiler is another open source storage solution that includes support for block storage and RAID.
While open source shows significant promise in the storage sector, it does require expertise to guarantee success, which in turn means that today’s storage administrators will need to turn to vendors for support and service.
Block Storage as a Service (BSSaaS) falls into the much larger category of Enterprise Storage as a Service (ESaaS), where those looking for cloud-based storage can select from block, file, or object storage to support their data storage needs. For the most part, when working with ESaaS, users will also have to choose an IaaS or PaaS solution and deploy applications and servers directly in the cloud.
The ability to meet demand is critical when it comes to storage. Storage consumption has grown at an exponential rate. Since block storage is independent from compute resources, scaling out requires nothing more than creating additional block storage volumes at an ESaaS provider.
For enterprises using a hybrid cloud approach, scaling out may require the purchase of additional hard drives or RAID arrays, but the actual process of scaling out remains relatively the same. Provisioning additional block storage volumes is the primary requirement to increase the amount of available storage. Learn more about scale and block storage.
IBM Cloud Block Storage offers flash-backed, local-disk performance with SAN persistence and durability.
Object storage, also called object-based storage, is a data storage architecture for handling large amounts of unstructured data.
Learn how SANs can increase scalability, availability and application performance.
Containers are executable units of software that package application code together with its libraries dependencies, and can be run anywhere, whether it be on desktop, traditional IT, or the cloud.
IBM Cloud offers two block storage solutions. IBM Cloud Block Storage for VPC delivers feature-rich, high-performance SAN options for virtual servers and containers inside our logically isolated, software-defined IBM Cloud VPC network. IBM Cloud Block Storage (classic infrastructure) is available on all classic IBM Cloud compute and container options, including IBM Cloud Bare Metal Servers. Both solutions provide customizable IOPS, predictable billing, snapshots and more.