When someone asks about block storage versus object storage it can several things, but usually one of two questions are being asked. The first question is usually a literal one – when is block storage used and when is object storage used?
The second potential question is around performance of different options out there for stateful storage. The first question is the place to start though.
Most of my experience comes from two places. First, from a standard Linux environment when you would be mounting a local block device (SSD or spinning drive) or using storage via the network with something like iSCSI or NFS. Second, we also work a lot with a software called Ceph in our private clouds. Ceph, in my opinion, is a rock solid way to provide network attached highly available block storage, object storage, and a file system.
Ceph is a rock solid way to provide network attached highly available block storage, object storage, and a file system.
Of note, for the Ceph people who might read this, I am not covering that Ceph itself is an object based system underneath the hood. That is definitely not what people are asking when they ask “block storage vs object storage”!
Block Storage is meant for a single VM, container, or bare metal server to use as it’s persistent data storage. This is worth repeating – a single server will mount the block storage at any given time. Block storage will be attached over a network via the kernel of the server, VM, or container. For Ceph, this is provided by a Linux kernel module called rbd.
The server mounting the block storage will now be able to access that storage just like it would a local block device. Your Linux will just use it as a file system. No other magic, programming, etc. is needed. As long as the network and the network storage system is working properly – off you go.
Object Storage is actually quite a bit different than block storage and not really fair to say “block storage vs object storage“. If you are familiar with FTP, object storage is actually much closer to it than to block storage.
For example, for FTP, you will have a program (client) that you use from the your computer and a destination FTP server that will receive the file you are transferring. In order to use Object Storage, you will need a program on the sending server that can talk to an “object storage” receiving server. The Object Storage concept was popularized by Amazon and their naming convention of “S3 Gateway” has been adopted as the receiving service name. It is API driven so there are many libraries in pretty much all languages (like PHP, Python, JS, etc.) that exist already that can act as the client.
Unlike block storage, object storage can be accessed by various clients at the same time, but it is not a file system. It is typically a giant repository of individual “objects”. Those objects been placed with some identifier by your client so that when that object is needed again, you can just request that object by the identifier.
Hope that helps. Questions about my take on object storage vs block storage? Please ask them in the comments below or find me on LinkedIn.
If you are wondering why this is written from an OpenStack perspective – check out Why is OpenStack Important for Small Business.