Jump to: navigation, search

Swift

Revision as of 23:30, 17 February 2013 by Ryan Lane (talk | contribs) (Text replace - "__NOTOC__" to "")

OpenStack Object Storage ("Swift")

Source code
Bug tracker
Blueprints
Developer doc

Related projects

  • Python Swift client
  • Storage API documentation

Documentation

Other resources

What is Swift ?

The OpenStack Object Store project, known as Swift, offers cloud storage software so that you can store and retrieve lots of data in virtual containers. It's based on the Cloud Files offering from Rackspace.

Features

When you install Swift, you can install multiple copies services that will track and retrieve the objects you want to store. Here's a description of what you get with OpenStack Object Store:

  • object server that stores objects (files less than 5 GB currently, support for large objects is in the works)
  • a container server that keeps track of the objects
  • a proxy server that handles all requests from the other server
  • an authorization server so that your cloud storage is contained and authorized
  • an account server that keeps track of all the containers

Since Rackspace already has this system in production, we share our configuration but you can determine your own best performance and availability based on your hardware and networking capabilities.

Additional features include the following necessary design and implementation choices:

  • Storage, retrieval, deletion of objects - this is a basic requirement of any object storage system.
  • Updates to objects - objects are immediately available to be read, but container listings are designed to handle object updates even under high load or a failure situation.
  • Replication - keeps the entire system consistent despite potential problems like network outages or drive failures.
  • Integrity audits - quarantines objects when the crawling auditor finds a problem, and replaces the bad file with a replica file.
  • Statistics - you can view account statistics (those are tracking containers of objects) and access logs. This feature is extensible as a plugin that you can define for different types of logs.