BACKGROUND OF THE INVENTION

Field of the Invention

This invention relates to data storage systems and, more particularly, to storage systems configured to provide access to storage as a web service.

Description of the Related Art

Many different computing applications rely on some type of storage medium for the persistent storage of various kinds of application data. For example, common office applications and multimedia applications generate and use application data of various types and formats, such as documents, spreadsheets, still images, audio and video data, among others. Frequently, such data is stored for repeated access or use on behalf of a user. For example, a user may wish to store and work with a number of documents or other data over a period of time, and may expect that the data will be readily available in a predictable state when needed.

In conventional computing systems, the storage medium used by applications for persistent application data storage is most commonly a magnetic fixed drive or “hard drive,” although optical and solid-state storage devices are also used. Such devices are either integrated within a computer system that executes the applications or accessible to that system via a local peripheral interface or a network. Typically, devices that serve as application storage are managed by an operating system that manages device-level behavior to present a consistent storage interface, such as a file system interface, to various applications needing storage access.

This conventional model of application storage presents several limitations. First, it generally limits the accessibility of application data. For example, if application data is stored on the local hard drive of a particular computer system, it may be inaccessible to applications executing on other systems. Even if the data is stored on a network-accessible device, applications that execute on systems outside the immediate network may not be able to access that device. For example, for security reasons, enterprises commonly restrict access to their local area networks (LANs) such that systems external to the enterprise cannot access systems or resources within the enterprise. Thus, applications that execute on portable devices (e.g., notebook or handheld computers, personal digital assistants, mobile telephony devices, etc.) may experience difficulty accessing data that is persistently associated with fixed systems or networks.

The conventional application storage model also may fail to adequately ensure the reliability of stored data. For example, conventional operating systems typically store one copy of application data on one storage device by default, requiring a user or application to generate and manage its own copies of application data if data redundancy is desired. While individual storage devices or third-party software may provide some degree of redundancy, these features may not be consistently available to applications, as the storage resources available to applications may vary widely across application installations. The operating-system-mediated conventional storage model may also limit the cross-platform accessibility of data. For example, different operating systems may store data for the same application in different, incompatible formats, which may make it difficult for users of applications executing on one platform (e.g., operating system and underlying computer system hardware) to access data stored by applications executing on different platforms.

SUMMARY

Various embodiments of a distributed, web-services based storage system are disclosed. According to one embodiment, a system may include a web services interface configured to receive, according to a web services protocol, client requests for access to data objects. A given client request for access to a given data object may include a key value corresponding to the given data object. The system may also include a number of storage nodes configured to store replicas of the data objects, where each replica is accessible via a respective locator value, and where each of the locator values is unique within the system. The system may further include a keymap instance configured to store a respective keymap entry for each of the data objects, where for the given data object, the respective keymap entry includes the key value and each locator value corresponding to each stored replica of the given data object. The system may also include a coordinator configured to receive the client requests for access to the data objects from the web services interface. In response to the given client request, the coordinator may be configured to access the keymap instance to identify one or more locator values corresponding to the key value and, for a particular locator value, to access a corresponding storage node to retrieve a corresponding replica.

In a particular implementation of the system, the web services interface may be further configured to receive, according to the web services protocol, client requests to store data objects, where a particular client request to store a particular data object includes a key value corresponding to the particular data object. The coordinator may be further configured to receive the client requests to store data objects from the web services interface, and in response to the particular client request, the coordinator may be configured to store one or more replicas of the particular data object to one or more corresponding storage nodes. In response to storing a given replica of the particular data object, a given storage node may be configured to return a locator value corresponding to the given replica to the coordinator.

