Difference between Object Storage And File Storage

IMO, Object storage has nothing to do with scale because someone could build a FS which is capable of storing a huge number of files, even in a single directory.

It is also not about the access methods. HTTP access to data in filesystems has been available in many well known NAS systems.

Storage/Access by OID is a way to handle data without bothering about naming it. It could be done on files too. I believe there is an NFS protocol extension that allows this.

I would muster this: Object storage is a (new/different) ''object centric'' way of thinking of data, its access and management.

Think about these points:

What are snapshots today? They are point in time copies of a volume. When a snapshot is taken, all files in the volume are snapped too. Whether all of them like it or not, whether all of them need it or not. A lot of space can get used(wasted?) for a complete volume snapshot while only a few files needed to be snapped.

In an object storage system, you will rarely see snapshots of volumes, objects will be snapshot-ed, perhaps automatically. This is object versioning. All objects need not be versioned, each individual object can tell if it is versioned.

How are files/volumes protected from a disaster? Typically, in a Disaster Recovery(DR) setup, entire volumes/volume-sets are setup for replication to a DR site. Again, this does not bother whether individual files want to be replicated or not. The unit of disaster protection is the volume. Files are small fry.

In an object storage system, DR is not volume centric. Object metadata can decide how many copies should exist and where(geo locations/fault domains).

Similarly for other features:

  1. Tiering - Objects placed in storage tiers/classes based on its metadata independent of other unrelated objects.

  2. Life - Objects move between tiers, change the number of copies, etc, individually, instead of as a group.

  3. Authentication - Individual objects can get authenticated from different authentication domains if required.

As you can see, the change in thinking is that in an object store, everything is about an object.

Contrast this with the traditional way of thinking about and management and access larger containers like volumes(containing files) is not object storage.

The features above and their object-centric-ness fits well with the requirements of unstructured data and hence the interest.

If a storage system is object(or file) centric instead of volume centric in its thinking, (irrespective of the access protocol or the scale,) it is an object storage system.


There are some very fundamental differences between File Storage and Object Storage.

File storage presents itself as a file system hierarchy with directories, sub-directories and files. It is great and works beautifully when the number of files is not very large. It also works well when you know exactly where your files are stored.

Object storage, on the other hand, typically presents itself via. a RESTful API. There is no concept of a file system. Instead, an application would save a object (files + additional metadata) to the object store via. the PUT API and the object storage would save the object somewhere in the system. The object storage platform would give the application a unique key (analogous to a valet ticket) for that object which the application would store in the application database. If an application wanted to fetch that object, all they would need to do is give the key as part of the GET API and the object would be fetched by the object storage.

Hope this is now clear.