OpenStack Swift overview oscon2011

Post on 14-May-2015

4,621 views 0 download

Tags:

transcript

Wednesday, July 27, 11

Swift Project Technical LeadJohn Dickinson

Swift Overview

Wednesday, July 27, 11

What We’ll Cover

‣ Intro to Swift‣ Architectural Overview‣ Best Practices for Deploying‣ Future work

Wednesday, July 27, 11

Swift is Scalable Storage

‣ Scales as the cluster grows‣ Designed to run on commodity hardware‣ No single point of failure

Wednesday, July 27, 11

Swift is not

‣ RAID‣ Distributed Filesystem‣ CDN‣ SAN/NAS/DAS

Wednesday, July 27, 11

Swift Use Cases

‣ Multi-tenant ‣ Backups‣ Typically large

‣ Write-once, read-never

‣ Web Content‣ Typically small

‣ Write-many, read-very-many

Wednesday, July 27, 11

Swift Use Cases (cont.)

‣ Document management‣ Medical imaging‣ Disaster recovery‣ Caching‣ Storage appliances‣ Scientific data

Wednesday, July 27, 11

Example Usage

‣ Standard HTTP verbs‣ Standard HTTP response codes

Wednesday, July 27, 11

Designing Swift

‣ At scale, everything breaks‣ Design for failure

‣ The “Happy Path” is trivial

‣ At scale, even rare events happen a lot‣ “Simple is better than complex.”

Wednesday, July 27, 11

Swift History

‣ Rackspace Cloud Files (circa 2008)‣ Distributed Storage

‣ Centralized Metadata

Wednesday, July 27, 11

Swift History (cont.)

‣ Rackspace Cloud Files (circa 2010)‣ Redesigned from the ground up

‣ Distributed storage and metadata

‣ Worked closely with ops

Wednesday, July 27, 11

Modular Design of Swift

‣ Proxy Server‣ The Ring‣ Storage Servers‣ Consistency Servers

Wednesday, July 27, 11

Proxy Server

‣ Public face of swift‣ Determines appropriate storage nodes‣ https://swift.example.com/v1/account/container/object

‣ Coordinates responses

Wednesday, July 27, 11

The Ring

‣ Maps requests to storage nodes‣ Availability zones‣ Expandable without affecting most entities

Wednesday, July 27, 11

The Ring, in detail

‣ Started as a consistent-hashing ring‣ Availability zones‣ Became a static map of partitions to volumes‣ What is a partition?

‣ What is a volume?

Wednesday, July 27, 11

Storage Servers

‣ Account server‣ Container server‣ Object server

Wednesday, July 27, 11

Storage Servers (Account and Container)

‣ SQLite databases‣ Groups containers and objects into accounts‣ Simple schema‣ Table for listings

‣ Table for metadata

‣ Scale concerns?

Wednesday, July 27, 11

Storage Servers (Object)

‣ Use the file system to store files‣ Any file system that supports xattrs

‣ Files named by timestamp‣ Tombstones

‣ Directory structure‣ /mount/data_dir/partition/hash_suffix/hash/object.ts

‣ Directory metadata can easily exhaust RAM

Wednesday, July 27, 11

Consistency Servers

‣ Replicators‣ Updaters‣ Auditors

Wednesday, July 27, 11

How to Deploy

‣ Swift All-In-One (SAIO)‣ Small cluster‣ Large cluster

Wednesday, July 27, 11

How to Deploy (SAIO)

‣ All services in one VM‣ Use loopback devices for storage‣ Great for dev work and validation testing

Wednesday, July 27, 11

How to Deploy (Small Cluster)

‣ Two load-balanced proxies‣ Five storage nodes‣ This area needs work

Wednesday, July 27, 11

How to Deploy (Large Cluster)

‣ Five zones‣ Two proxies per zone‣ Many storage nodes per zone

Wednesday, July 27, 11

How to Deploy (Large Cluster, networking)

‣ 10g external network‣ 1g (or 10g) internal network‣ Use-case concerns‣ Internal proxy network divided by replica count

Wednesday, July 27, 11

How to Deploy (Large Cluster, IO)

‣ Dedicated Container and Account servers‣ Few, relative to object servers

‣ Many IOPS (i.e. SSDs)

‣ Cheap storage for Object servers

Wednesday, July 27, 11

Future Dev Work

‣ Better Ring‣ Layered zones

‣ Unique-of-zones-as-possible

‣ Tiered storage

‣ More modular deployment‣ Cabinets, not zones

‣ More features

Wednesday, July 27, 11

What Swift is “Missing”

‣ Auth‣ ID management

‣ Stats‣ Quotas

‣ Billing

‣ CDN

Wednesday, July 27, 11

Questions?

‣ #openstack on freenode‣ http://launchpad.net/swift‣ http://d.not.mn/swift_overview_oscon2011.pdf

Wednesday, July 27, 11

John Dickinson

‣ @notmyname‣ http://gplus.to/notmyname‣ me@not.mn‣ http://not.mn

Wednesday, July 27, 11