I’ve been reading and talking to folks about software-defined-storage (SDS) and software-defined-everything and found out that we often use the terms ‘SDS’ and ‘virtual storage’ interchangeably. This doesn’t sound right. It is useful to distinguish between these terms as they are better used for two distinct concepts. Let me see if I can offer a better real world definition, or at least description, for these terms.
Storage virtualization is typically used to describe an abstraction of storage technology. The latter may be a storage array, which, via virtualization, appears to us as several arrays, each with its unique LUNs. The opposite is also conceivable: manifest a single block space by virtualizing a set of arrays. So, if you’re running an application that performs block I/O, it can talk to the virtual array as if it were a physical box, with its addresses, controllers, and redundancy. Virtualization helps to make an efficient use of the underlying hardware. Instead of managing actual boxes with various capricious demands and hard limits, look at them as if they were well behaved units of your own specification. Under the covers, your virtual storage SAN maps to actual physical storage but the complexities of the latter are conveniently hidden. Good.
Virtual storage can do more. For example, your application can use a virtual SAN based on Server San technology (such as EMC ScaleIO). As far as your app is concerned, it has access to shared block space. Under the hood, though, Server SANs map to various storage media. Mostly, these are servers’ DAS aggregated into a large pool of block storage. Your app doesn’t know the difference, but your storage admin can do wonders they wouldn’t be able to achieve with physical boxes:
- Elastically grow or shrink the capacity: mix and match physical media types and multi-vendor, multi-model compute resources
- Scale capacity and performance smoothly and linearly without downtime and with no rip-and-replace upgrade
- Deliver predictable high-performance and throughput
Your app doesn’t care; it keeps humming as always, oblivious of the underlying magic that provides it with its block storage view of the world.
Virtual Storage is Cool
Software-defined storage is frequently used to address the general environment of storage operations. SDS provides a full stack of storage technologies and unified management thereof. Capabilities such as backup, replication, disaster recovery, block or file access, private/public/hybrid clouds, storage federation (multi-site) and more are all under one software umbrella of global model and management. It is very likely that the stack contains multiple virtualization layers. However, the key in SDS is the ability to view storage-as-a-service (there’s even an acronym: STaaS) with end-user self-service portal, policy driven provisioning, automation, orchestration and more. Admins become service definers, not cable pushers and pullers or CLI poets. EMC ViPR is the quintessential SDS platform. Software-defined storage is what modern data centers are made of. In fact, modern data centers are software-defined data centers (SDDC), where SDS is at the core and the rest of the stack, networking, compute and applications are all virtualized and software-defined.