Abstraction, and hardware abstraction more specifically, serves to hide the differences between the underlying hardware and the software that lives above it. The original purpose around abstraction was to simplify software development so that it didn’t need to be written specifically for a particular make and model of hardware. The so-called abstraction layer essentially translates generalized software functions into platform-specific hardware functions, and vice versa. The net-net of this development is a much broader range of hardware the software can run on.
Basic Hardware Abstraction
Virtualization: The Evolution of Abstraction
I believe most would agree that abstraction makes a lot of sense. I know operating system manufacturers would certainly agree. But how does this affect you and me? Well, good question. Since abstraction allows for a much broader range of hardware to run the same software, it makes the hardware more of a commodity. When things become more commoditized, they become cheaper. That’s good right?
As commodity hardware became more powerful, the concept of virtualization took the ‘consumer front seat’. Actually, the idea of virtualization has been around in computer science since the 1960’s, but it was something that only happened inside of mainframes, which was not commoditized, and which only the largest companies could afford.
I believe that abstraction naturally leads to the concept of virtualization. If you remember, abstraction ‘serves to hide the differences between the underlying hardware and the software that lives above it’. Well, virtualization is nothing more than another type of abstraction, albeit a very fancy one, which ‘serves to hide the differences between the underlying hardware and the multiple software’s that live above it’. Instead of a single piece of hardware running a single operating system, it can now run multiple operating systems independently and simultaneously (aka Virtual Machines). Now that my operating systems and applications are decoupled from the underlying hardware platform, life gets much easier as hardware breaks or wears out. Pretty cool! (not to mention the myriad of advanced features and flexibility that comes along with that decoupling, which are beyond the scope of this article).
Advanced Hardware Abstraction with Virtual Hardware Presentation
Did You See That Bridge?
Have you ever heard this said, “You probably crossed ten bridges on your way to work this morning and didn’t realize it.”? This is also true about abstraction. There are many different types of abstraction you work with every day and probably didn’t realize it. Think about it. Anything that you don’t interact or communicate with natively requires some type of abstraction. Examples of common abstractions in technology are: audio devices, printers, monitors, storage devices, mice, and joysticks.
So why does all of this matter to storage (as was indicated by the title)? Just as compute abstraction affected the server market, so too is storage abstraction affecting the storage market. The idea of abstracting or decoupling the data from the hardware is precisely the same concept. There are a mind-boggling array of storage platform choices available in the world today and the landscape is changing all the time. But what doesn’t change? The fact that you have data, and need to store it and protect it. So for what reason would the world adopt compute virtualization and not storage virtualization? Well, there is no good reason. Because to say that one makes sense and not the other is to negate the first since they are one in the same concept.
Advanced Hardware Abstraction with Virtual Storage Presentation
Compute and storage are very different concepts in and of themselves. Compute is an execution principle where storage is a persistence principle. They are incomparable since their ‘units’ are different, but I would venture to say that the demand for storage resources (TBs/PBs/EBs) far exceeds the demand for compute resources (GHz). While their respective demands are growing at an amazing rate, the growth in the storage space is almost beyond comprehension. When we speak about individual companies having a total storage need (at present time) of 10 exabytes (10 million Terabytes), we have completely blown the concept of ‘pack-rat’ out of the water, or out of the solar system for that matter.
In order to survive in this storage crazed world, an advanced system of storage abstraction (aka. storage virtualization) needs to be adopted to deal with the various storage platforms and advances being made almost on a weekly basis. Thankfully an advanced system like this exists out there. I will leave it to you to seek it out. 😉
Ready for more? See Part 2 of this series here.