Object-Based Storage Devices


When I first heard about Object-Based Storage devices, I thought this was an object-oriented database idea. I've had some bad experiences with OODBs, so I wasn't all that interested, but as it turns out, OSDs are not at all about OODBs.

The idea behind OSDs is pretty straightforward. A traditional file server consists of a file server, running a high level operating system, and one or more disks. Regardless of the speed of the disks, the file server ultimately limits the bandwidth between clients and the disks.

An OSD moves some of the processing power of the server onto the disk itself and provides a higher-level interface to the files. First, the disk knows the relationship between chunks of data on the disk (those are the objects) and the interface to the data is as an object. The disk manages the layout on disk. Second, the disk can store metadata about the objects and thus provide greater functionality. For example, the object could have access controls attached to it. Or the object might be set to have a life of 84 months, making it undeletable until that time has expired. Third the disk has an IP number and is thus a first-class network citizen in its own right.

In this scenario, the file server is actually not a server at all, its simply a manager. When you need access to particular files, the file manager tells you which disks to talk to to retrieve the files, but the disks themselves talk directly to the client. Thus the bandwidth is not limited by a file server, but by the bandwidth of the underlying network--on a switched network, this could be significant. The end result is a file system that is easier to build (since the disks already have most of the smarts built-in) and that scales linearly with the number of disks.

There is an iSCSI standard for object-based storage devices that has just been released and an open source project, Lustre.