August 28, 2008, Thursday, 240

Starfish Distributed Filesystem

From DBWiki

Jump to: navigation, search

Contents

Introduction

Starfish is a new type of clustered file storage system that keeps very large amounts of data safe and accessible - even in the face of massive hard drive and storage node failures. The system is free for use if your storage requirements are less than 1 Terabyte.

To be more specific, Starfish is a highly-available, fully decentralized, clustered storage file system. It provides a distributed POSIX-compliant storage device that can be mounted like any other drive under Linux or Mac OS X. The resulting fault-tolerant storage network can store files and directories, like a normal file system - but unlike a normal file system, it can handle multiple catastrophic disk and machine failures.

Starfish is priced very competitively for storage systems greater than 1TB - a typical system is usually 1/2 to 1/10th of the cost of other proprietary solutions. For example, a 10TB proprietary storage solution costs roughly $150,000 per year to operate. An equivalent 10TB Starfish solution can cost as little as $12,000 per year to operate.

The storage network automatically provides file mirroring, disaster recovery, and high-availability in the event of multiple storage or metadata node failures. Like the starfish, this file system can be damaged severely, continue to function, and regrow itself over time.

More information regarding Starfish:

Is Starfish Right for You?

Starfish scales well and is intended for server farm environments.
Enlarge
Starfish scales well and is intended for server farm environments.

Starfish is designed for highly-available services such as web server farms, enterprise-wide data storage and retrieval, digital media storage systems, computing clusters, or long-term data storage. If your storage solution uses Windows CIFS, Samba or NFS - Starfish might be a good fit for your needs.

The Starfish Clustered Distributed Filesystem is currently used by Digital Bazaar to store multiple terabytes worth of digital content. One terabyte is roughly 125,000 high quality MP3s, or 210 uncompressed DVDs. Content companies are charged with storing a great deal of digital content produced every year. For example, a single television station can produce close to 10 Terabytes of video footage a year. After 3 years, you can have quite a large storage nightmare on your hands. To make matters worse, inexpensive data backup systems do not exist to deal with this sort of data backup problem.

As digital video and audio become more prevalent, companies will have to find a solution for storing massive amounts of data for long periods of time. A storage system that addresses these problems must be easy to setup, administer and roll forward. The storage system must also be tolerant of failures and achievable with very modest IT budgets. Starfish is such a networked storage system.

Goals of the Starfish Filesystem

The goal of the Starfish Filesystem is to solve the problems of scalability, cost, ease of use and high-availability in massive storage systems.

Scalability

Starfish storage peers are simple servers built from commodity components, but provide high-availability when utilized in a storage cluster.
Enlarge
Starfish storage peers are simple servers built from commodity components, but provide high-availability when utilized in a storage cluster.

Starfish was designed to scale linearly from the beginning.

For example, if more storage is needed, all one must do to add another 1TB of storage is add another server to the storage cluster ($1,000 as of Jan. 2007). The storage network will automatically detect and bring the new storage peer into the cluster. Typically, to expand a proprietary storage cluster, the cost is around $5,000 to $10,000 per server.

Ease of Use

Starfish is auto-configuring - the only pieces of information a starfish peer needs is:

  • The name of the starfish peer
  • The name of the storage network
  • A directory to store files into or a mount point

File mirroring is performed automatically, so is file recovery, re-joining an active storage network, and synchronizing with storage peers.

Cost

Clusters are increasingly being built from commodity components - proprietary solutions are not providing a high enough price/performance ratio. There are a number of large companies that use commodity-grade components in their IT infrastructure - Google being one of the biggest.

Hardware fails, it is a fact of life. The key is to make the software smart enough to detect failure and continue to operate regardless of failures. Starfish embraces the approach of having non-homogenized, commodity servers running fault-tolerant software to provide a storage solution. By taking this approach, costs are reduced to mere fractions of the cost of a proprietary solution.

High-Availability

Starfish enables file requests to be completed, even in the event of catastrophic disk and machine failures.
Enlarge
Starfish enables file requests to be completed, even in the event of catastrophic disk and machine failures.

High-availability means the ability for a system to be available most, if not all, of the time - regardless of numerous sub-system failures.

Starfish accomplishes high-availability by being up to N-way redundant to failure scenarios. This means, no centralized metadata servers, no central switching points. Instead Starfish uses a distributed P2P-based storage and metadata architecture. Storage peers can join and leave the network without severely impacting the operation of the storage cluster. This feature comes in handy if parts of your cluster are temporarily taken offline for maintenance purposes.

The storage cluster can lose all but one storage node without failing completely. That means that if there is at least one node remaining, the Starfish Filesystem will respond to file system requests that it can serve with the remaining storage node. This is important if you don't want your applications to fail if the data it needs is available on an unaffected portion of the cluster.

Current Features

  • Scalable Storage - Scalable to thousands of terabytes worth of storage. Storage expands as you add commodity hard disks and storage peers to the system.
  • No Downtime - Storage is scalable at run-time.
  • N-way Redundancy - Allows failure of all but one storage server in the network and will continue to serve files that are available. NOTE: This does not include file Mirroring yet!
  • Decentralized Metadata - Starfish does not require a centralized meta-data server for proper operation of the file storage network.
  • Efficient Messaging - Uses IPv4 multicast for automatic configuration and efficient distribution of file system messages.
  • Auto-discovery - Auto-discovers clustered file system resources.
  • Auto-configuration - Each peer performs configuration via multicast.
  • Unix Enhanced - The storage peer can run on Linux, Mac OS X, Solaris, FreeBSD, and many other recent Unix-based operating systems.
  • No Kernel Modifications - No Linux kernel modifications are needed for the storage client - Starfish runs with a standard Linux kernel (2.6.14 or greater).
  • Secure Operating Environment - The file system runs in user-space, thus it is very easy to debug and will not cause security problems or operating system crashes due to buggy kernel code.
  • Distributed Configuration - Does not require any configuration information regarding every participant in the clustered storage network.
  • POSIX-compatible - POSIX-compatible file system that supports all of the following POSIX file system calls: getattr, readdir, getdir, chmod, chown, fsync, mkdir, mknod, readlink, rename, rmdir, statfs, symlink, truncate, unlink, utime, read, write, release, fsync, flush, fgetattr, ftruncate, listxattr, getxattr
  • Extended Attribute Support - Limited extended attribute support for files, directories and symbolic links.

Future Features

  • Metadata Read/Write Optimization - Optimizing meta-data operations. Ongoing...
  • Subnet Limiting - Limit access to storage peers and storage clients on the current subnet. May 2008
  • Write Support for Extended Attributes - Support for free-form extended file attributes. July 2008
  • High-Availability Mirroring - Automatically provides high-availability, file mirroring and fault-tolerance during node failure without any further configuration. August 2008
  • IPv6 Support - Auto-configuration, messaging and data transfer over IPv6. September 2008
  • POSIX ACL - Support for POSIX Access Control Lists. October 2008
  • Multi-layered Security - Includes multi-layered security via a distributed group of storage network, directory and file permissions. November 2008
  • Cluster-wide Extents Locking - Cascading peer-to-peer based locking and unlocking scheme for files and sections of a file. December 2008
  • Encryption Transport - Data is encrypted and digitally signed from end to end regardless of the knowledge of late joiners to the clustered storage network. January 2009
  • Clustered Resource Voting - Capability to vote on clustered storage network actions for decisions that cannot be made by a single node. February 2009
  • Read/Write Optimization - Optimization of the system is described via super-node servers that can join and leave the network without affecting the availability of the clustered storage network. April 2009

Download

You can download the Starfish software and source code from our Starfish Software Download page.

Frequently Asked Questions

You may peruse the Starfish Frequently Asked Questions list to see if there are any questions that you have that have been answered.

License

It is our intention to release older versions of the Starfish File system under an Open Source (OSI-approved) license. More than likely, we will use the Adaptive Public License. Our customers pay for stable, optimized releases of the Starfish Storage Network Software. For now, the Starfish File system License allows you to do the following:

  • Use the file system for any purpose.
  • Use the file system for free as long as you don't exceed 1 TB worth of total storage, or use more than 10 storage peers.
  • Access and modify the source code distributed with the binary.

You must pay for the software if:

  • You package and re-sell the Starfish Distributed File system as a complete or partial storage solution.
  • You exceed usage of 1 TB worth of total storage via Starfish.
  • You exceed more than 10 storage peers in a single storage network.

You can contact us if you are interested in licensing the Starfish filesystem for unlimited use. The cost is around 1/2 to 1/10th of the cost of all current solutions on the market - there is preferential pricing for start-up companies, non-profits and academic institutions. Support contracts are also available if you would like to extend Starfish to meet your business needs, or require help designing or configuring your Starfish file system solution.

For specifics, please refer to the full text of the Starfish Filesystem License.

Contributing

If you would like to send us performance information, patches, bug reports, or suggestions - there are several ways you can do so.

  • Starfish Code Contribution
    • Information related to contributing source code and software patches to Starfish.
  • Starfish General Discussion
    • Discussion regarding configuration and use of Starfish.
    • Medium e-mail traffic volume. On average 1-2 e-mails per week.
    • RSS feed is available.
    • Your membership is hidden from mailing list subscribers.
  • Starfish Developer Discussion
    • Discussion regarding development, testing and integration of Starfish file system technology.
    • Medium e-mail traffic volume. On average 1-2 e-mails per week.
    • RSS feed is available.
    • Your membership is hidden from mailing list subscribers.
  • Starfish Bugs and Design Issues Wiki
    • A page where you can post bugs and design issues related to Starfish. We check it regularly.
  • Starfish Bugzilla
    • Not setup yet, but we'll put one up when we start being overrun by bugs.