*

Swiftの概要 ~ Swiftによるオブジェクトストレージシステムの構築(1)

公開日: 最終更新日:2014/07/23  |  By  |  Object Storage, OpenStack, Swift

(Swift関連の記事の一覧はこちらをご覧ください)

はじめまして、山縣と申します。
私はビットアイル総研にてオブジェクトストレージ関連の調査・評価を行っています。
その中でもとくに OpenStack Swift に注目しており、先月に実証実験として社内向けに Swift クラスターを構築し運用を開始しました。
そこでこのブログを通じてSwift のクラスタを実際に構築して触りながら理解してもらえるような記事を書いていこうと思います。
今回は初回ということもあり概要について説明したいと思います。

オブジェクトストレージとは?

Swift はオブジェクトストレージを構築するためのソフトウェアですが、そもそもオブジェクトストレージとはどのようなものなのでしょうか?
実は明確な定義についてはよくわからないのですが大体以下のようなものと考えられます。
  • データ(ドキュメント、画像ファイル、動画ファイルなど)をオブジェクトいう単位で管理・格納する
  • オブジェクトは可変サイズでありデータ本体に属性情報(メタデータ)を付与することができる
  • 独自のAPI (多くはHTTP,REST) によりデータの操作を行う
オブジェクトストレージの目的は大量のデータを信頼性を確保しつつ低コストで格納することにあります。
そのため複数のサーバを利用した分散システムとして構築され、オブジェクトの複製を持つことで
信頼性を向上するという方法が取られることが多いと思います。
ちなみに “クラウドストレージ” という言葉もあり、オブジェクトストレージとどう違うのか戸惑ってしまいます。
一般的にクラウドストレージという場合はサービスとして提供されているサービスそのものを指すことが多いようです。
オブジェクトストレージはもう少しシステム・インフラとしてのイメージが強い感じがします。

オブジェクトストレージの現状

現在、オブジェクトストレージは注目されているようでサービスやシステムを構築するためのソフトウェア、ハードウェアなどが多数リリースされています。
その中でもオブジェクトストレージを代表するサービスとしては Amazon Web Service (AWS) の S3 が上げられます。
S3 は世界8つの地域(リージョン)に展開しており、格納されているオブジェクト数が一兆個を超え高い信頼性をうたっています
S3 はオブジェクトストレージのデファクトスタンダードであり、多くのオブジェクトストレージシステムがS3 の API との互換性をサポートしています。
また Google も Google Cloud Storage を提供しており、Microsoft も Windows Azureでオブジェクトストレージを提供しています。
国内では IIJ GIO, Nifty Cloud, Cloudn (NTT Com) などクラウド事業者による提供も増え、競争も激しくなってきています。
一方オブジェクトストレージシステムを構築するためのプロダクトも増えてきています。今回紹介する Swift 以外にも 商用ソフトウェアである CloudianRiak CS (Basho), オープンソースではLeoFS(楽天)、STF(ライブドア)などもあります。
Cloudian は Nifty Cloud, Cloudn で採用されています。
ハードウェア製品では Dell のDXシリーズや EMC のAtmos2.0 などがあります。EMCの Atmos は AT&T のクラウドストレージサービスで採用されています。
以上のようにオブジェクトストレージを利用する場合サービスからプロダクトまで多くの選択肢があります。

OpenStack Swift とは?

いろいろなサービス・プロダクトを紹介しましたがいよいよ本題の Swift です。
OpenStack Swift はクラウド構築のためのソフトウェア基盤であるOpenStack の Core Project の一つとして開発が進められているオブジェクトストレージです。OpenStack はオープンソース(Apache License)として公開されており、誰でも自由に使うことができます。
Swift は OpenStack システム全体の中ではオブジェクトストレージの機能を提供し、Glance (=仮想マシンのイメージファイルを管理するシステム) のストレージとしても利用されます。
私のほうでは OpenStack 内の一システムではなく単独のオブジェクトストレージシステムとして利用することを想定し評価しています。
Swift は国内でのサービスとしての採用事例などは聞きませんが、海外では広く利用されています。つい最近 “Gartner: Top 10 cloud storage providers”  というニュース記事を読みましたが、こちらで取り上げれているサービスプロバイダの10社のうち4社が Swift を利用していることからもわかります。
このようにサービスでの利用実績も豊富ですので、自社内でのプライベートシステムとして構築するための選択肢としても検討できるのではないでしょうか?

Swift の機能・特徴

Swift は以下のような機能、特徴を持っています。
  • オブジェクトストレージの機能を提供しファイルをオブジェクトとして格納することができます。
  • マルチテナント(アカウント) に対応しています。
  • 各アカウントはコンテナとよばれるフォルダを複数作成することができ、オブジェクトはコンテナの中に配置されます。
    コンテナはフラットな構成となっておりコンテナの中にサブコンテナを作ることはできません。
  • アカウント、コンテナ、オブジェクトには Key-Value のメタデータを登録することができます。
  • オブジェクトの最大サイズは5GBです。
    ただし5GB以下の複数のオブジェクトに分割してマニフェストファイルを置くことで、一つの大きなオブジェクトとしてアクセスすることができます。
  • コンテナ、オブジェクトの操作はREST API により行われます。
  • Swift のデータは複製され(デフォルトで3つ)保管されることで信頼性を高めています。

Swift のシステム概要

Swift をシステムの観点からみると以下のよう特徴があります。
  • Linux 上で動くソフトウェアで プログラミング言語 Python により記述されています。
    Ubuntu では標準でパッケージに含まれておりインストールが容易です。
  • データは Linux のファイルシステム上に格納されます。
    Swift では XFSが推薦されていますが拡張属性をサポートしているファイルシステムであれば動くと思います。
    (ただし特別な理由がない限り XFS を使う方が良いと思います。)
  • Swift が格納するデータは大きく分けて アカウント情報、コンテナ情報、オブジェクトデータ、メタデータになります。
  • 複数の Linux サーバを組み合わせてひとつのクラスタを構成する分散システムです。
    Swift クラスタ本体にはSPOF(単一障害点)はありません。
  • サーバは大きく分けて Proxy サーバStorage サーバの2種類になります。
    Proxy サーバはフロントエンドで、クライアントからのAPI リクエストを受けてStorageサーバと通信をしながらリクエストを処理します。
  • Storage サーバは内部的には アカウント情報の処理をするシステム、コンテナ情報を処理するシステム、オブジェクトを処理する3つのシステムで構成されています。
    またStorage ノード間でのデータの同期に rsync を使っています。
  • Swift はConsistent Hash によりデータを複数のサーバに分散して保管します。
    またデータの一貫性については結果整合性となります。
  • Storage ノードはゾーンによってグループ化されます。
    Storage上に保管されるオブジェクトは複製(レプリカ)が存在しますが、各レプリカは異なるゾーンのサーバに保管されます。
    Storage サーバの保守をする場合、ゾーン単位で行うことになります。
  • Swift はデータを分散配置するにあたって Ring という静的なファイルを参照します。
    Ring ファイルはSwift クラスタを構成する全サーバに同一のものを配布します。
    Storageサーバの増設などによりクラスタ構成が変わる場合、Ring ファイルを更新し、再配布する必要があります。
    Ringファイルを更新することで Storageサーバが自律的にデータの再配置を行います。
  • 認証システムとして OpenStack の標準認証システムである KeyStone を利用することができます。

Swift に関する情報源

以上、駆け足になりましたが Swift の概要を説明しました。
なお Swift について参考となるサイトについて紹介します。
  1. http://docs.openstack.org/developer/swift/
    Swift の開発者向けのサイトになります。アーキテクチャの解説などが中心ですが、Administrator Documentation の項目には、インストールやデプロイメントに関するドキュメントもあります。
  2. http://docs.openstack.org/
    こちらは IaaS構築基盤である OpenStack 全体に関するドキュメントが載っています。Swift については OpenStack ObjectStorage の項に記述されています。
  3. http://openstack.jp/
    日本OpenStackユーザ会のサイトです。過去の勉強会の資料が “Documents” の項目に多数掲載されており Swift に関しての資料もあります。私もSwift を触り始めた当初、こちらで勉強させてもらいました。
さて次回からは実際に Swift のシステムを構築していきたいと思います。

関連記事

openstack-figure1-2x

COHO DataStream のCinder連携

OpenStack Cinder のストレージバックエンドとしてはCephが採用されているケースが多

記事を読む

no image

Grizzlyの新機能(1) ~ Swiftによるオブジェクトストレージシステムの構築(8)

by You Yamagata 2013.04.24(Swift関連の記事の一覧はこちらをご覧くださ

記事を読む

no image

RDOを使用したOpenStack+MidoNet環境のインストール

ビットアイル総合研究所 田波です。 今回は以前紹介したRDOを使用して、OpenStack+M

記事を読む

no image

OpenStack DBaas (Trove) を動かした話

本記事はOpenStack Advent Calendar 2015 12/17 のエントリー記事で

記事を読む

DSC_000001_opening

OpenStack Summit Tokyo

ついにOpenStack Summit が 10/27-30 に東京で開催されました。 弊研究

記事を読む

welcome

OpenStack Summit in Paris (Day1)

by Ikuo Kumagai (@kumagai19o)   こんに

記事を読む

docker_all

OpenStack Summit in Paris (Day3)

by Ikuo Kumagai (@kumagai19o) 少し遅れましたがOpenStack S

記事を読む

検証構成

RDOを使用したOpenStack Juno環境の構築

ビットアイル総合研究所 田波です。 今回はRDOを使用してOpenStack Juno環境を構築し

記事を読む

519RhQeJZML._SL500_AA300_

OpenStack Swift 書籍の出版のお知らせ

by You Yamagata 2014.04.02山縣です。 この度、インプレスR&D社よ

記事を読む

affinity_swift-get-node

Swift のグローバルクラスタ(2) affinity の設定

Swift のグローバルクラスタ(2) affinity 山縣です。Havana 版(1.10.0)

記事を読む

no image

ビットアイル総合研究所は、クラウド技術に関する調査&研究を通して、社会と会社に寄与していくことを目的に、ビットアイル・エクイニクスの企業内研究所として2011年8月に設立されました。

openstack-figure1-2x
COHO DataStream のCinder連携

OpenStack Cinder のストレージバックエンドとしてはCe

blog-ocata
Jujuで Ocataを含む様々なバージョンのOpenStack をデプロイする方法

祝OpenStack Ocata リリース!! ということで、早速デプ

newton
Juju Manual Cloud で OpenStack 環境構築

本当にご無沙汰しております。 この投稿はOpenStack Adve

top
HACK! THE Juju/MAAS

6/8~6/10まで幕張メッセで開催されたInterop 2016。皆

dpdk
OpenStack OVS VXLAN ネットワークの高速化

少し前の話になりますが、3月2日に開催された 日本仮想化技術株式会社様

→もっと見る

PAGE TOP ↑