OSSクラウド基盤 OpenStackの全て【第6回】
OpenStackの大容量ストレージサービス、Swiftの仕組み
OpenStackのオブジェクトストレージサービス「Swift」の特徴、アーキテクチャ、利用するためのツールを紹介。Swiftは専用アプリケーションを用いて、大容量データを高速に取り扱うのに最適化されたサービスである。
今回から2回にわたり、OpenStack ObjectStorage(Swift)の全体像と具体的な利用手順を紹介する。今回はSwiftの特徴、アーキテクチャ、利用するためのツールなどの全体的な紹介を行い、次回は具体的な利用手順について解説する。
OpenStack ObjectStorage(Swift)とは
Swiftを一言で説明すると、Amazon Simple Storage Service(Amazon S3)のようなオブジェクトストレージサービスを実現するオープンソースソフトウェア(OSS)だといえる。一般にオブジェクトストレージとは、通常のPC上のファイルなどとは違い、任意のアプリケーションで自由に読み書きすることはできないが、専用アプリケーションを用いて大容量データ(オブジェクト)を高速にアップロード/ダウンロードするのに最適化されたストレージサービスである。さまざまな用途が考えられるが、典型的なところではバックアップデータなど大容量データの格納に適している。
Swiftは、ユーザーがオブジェクトストレージとして利用できる以外に、内部的にもNovaの仮想マシン(VM)イメージを管理するOpenStack ImageService(Glance)のバックエンドストレージとしても利用できる(参考:注目のOpenStackプロジェクトの全体像 ~コミュニティーと主要コンポーネント)。
Swiftの歴史
本連載の第2回「注目のOpenStackプロジェクトの全体像 ~コミュニティーと主要コンポーネント」でも触れた通り、SwiftはもともとRackSpaceのCloudFilesと呼ばれる商用オブジェクトストレージサービスで使用されていたコードを基に、オープンソース化したものである。2010年7月の発表当初から、OpenStack Compute(Nova)と並んでOpenStackプロジェクトを支える主要コンポーネントの1つである。
Swiftの特徴
利用インタフェース
利用手順の詳細は次回で紹介するが、Swiftをストレージサービスとして利用する方法は何種類か存在する。
APIによる利用
Swiftをストレージサービスとして利用するための最も基本的な手順は、SwiftのREST APIを用いてアクセスすることである(参考:公式ドキュメント「OpenStack ObjectStorage Deveoper Guide」)。このAPIは、Swiftの基になったRackSpaceのCloudFilesのREST APIと基本的に同じものであるため、CloudFiles用の各種ライブラリをそのまま利用することができる。GitHubから、Java、Python、C#、Ruby、PHPといったさまざまな言語のライブラリが提供されている。
Swiftの第二版(Bexar)からは、必要最低限なAmazon S3互換APIもサポートされており、これを利用してAmazon S3などと透過なストレージサービス(参考:Achieving S3 API compatibility with OpenStack Swift using SMEStorage)を提供している会社もある。
GUI、CLIによる利用
Swiftを利用するための最も一般的な方法は、GUI(Graphical User Interface)ツールを使用することである。代表的なツールとしてはCyberduckやCloudBerryがある。これらは、SwiftまたはAmazon S3のRESTプロトコルを使用してアクセスする。
なお、シェルスクリプトなどの中からCLI(Command Line Interface)ツールによってSwiftにアクセスしたい場合、curlコマンドなどを用いることも可能である。これについてはクラウドインテグレーション事業者のクリエーションラインによる日本語の詳しい検証報告があるので参照されたい(参考:OpenStack Storage(Swift)調査報告書)。
ファイルシステムインタフェースでの利用
Linuxの場合、s3fsと呼ばれるツールがあり、Amazon S3のストレージ領域をあたかも通常のファイルシステムであるかのようにmountできる。これは、LinuxのFUSE(Filesystem in Userspace)と呼ばれる仕組みを利用して実装されている。
Swiftでもcloudfuseと呼ばれるツールを用いて同様のことが可能である。FUSEは、細かいアクセスを繰り返す場合はあまり効率が良くないが、一般のアプリケーションを無修正のまま使えるため、特に大量のアップロード/ダウンロードを行いたい場合は便利に使える。
ストレージサービスとしての仕様
本節では、Swiftのストレージサービスとしての主要な仕様を列挙する。
- データの格納単位は「オブジェクト」と呼ばれる。一般的にいうファイルに対応すると考えればよい
- オブジェクトは「コンテナ」に格納される。コンテナとは、一般的にいうフォルダもしくはディレクトリに相当する概念であるが、1階層のみ作成可能である
- オブジェクトのサイズの上限は5Gバイトである(Amazon S3のオブジェクトサイズの上限は、現在5Tバイトまで拡大されているため、相対的にかなり小さく見える。しかし、Swiftにはsegmentationと呼ばれる概念があり、最大5Gバイトのオブジェクトを複数まとめて1つの巨大なオブジェクトとして扱える仕組みが導入されている)
- ユーザーもしくはグループごとに、オブジェクト単位の粒度でアクセス制御を行うことができる
このように、基本的な機能は一通り使用することができる。
拡張性
後述のアーキテクチャの節で説明する通り、SwiftもNovaと同様にモジュラーな構造になっており、オブジェクトの実体を保持するサーバ(Object Server)を追加することによって、運用中に動的に全体容量を増加させることができる。
対故障性
Swiftが格納するデータは、メタデータも含めて複数のサーバに分散・冗長化して格納されるため、1台のサーバが故障しても直ちにデータが失われることはない。
また、Swiftにはzoneと呼ばれるサーバをグループ化する概念がある。zoneは、サーバ、ネットワーク、電源など、可能な限りお互いに隔離された構成とすることが推奨されている。前述の冗長化されたデータは、このzoneをまたがってレプリケーションされる(デフォルトでは3重)ため、Swiftによるオブジェクトストレージサービスの運用者は、zoneをうまく設計することにより対故障性を高く保つことができる。Swiftの運用管理マニュアルでは、各種の設定値や指針について、RackSpaceの運用環境で得られたベストプラクティスも紹介されている。
アーキテクチャ
図1にSwiftのアーキテクチャを示す。
Swiftの基本的な構成要素には以下の5種類のサービスがある。ぞれぞれの役割は以下の通りである。
Swiftを構成する5つの要素
| サービス名 | 役割 |
|---|---|
| Auth Server | ユーザーアクセスに対する認証・認可を担当する |
| Account Server | アカウントとコンテナの対応を管理する |
| Container Server | コンテナとオブジェクトの対応を管理する |
| Object Server | オブジェクトのデータの実体を管理する データの実体は、ext3やXFSなど、ホスト上の一般的なファイルシステムの中にバイナリデータの塊として格納される |
| Proxy Server | エンドユーザーと、Account、Container、Object Server群の間に入り、通信処理を中継する |
これらのサーバ群は、Ringファイルを参照しながら協調動作する。Ringファイルは各種の論理的な名前と実体の対応関係を保持する。特徴的な点として、Ringファイルの更新は管理者の責任ということが挙げられる。つまり、容量追加のためにObject Serverを追加した場合には、管理者が全サーバのRingファイルを更新する必要がある。一般にSwiftのようなクラスタ構成を取る場合、そのクラスタを構成する個々のサーバの死活監視処理がボトルネックやトラブルの原因となることが多い。しかしSwiftでは、自分で死活監視処理をせずに外出しする、割り切ったシンプルな設計となっている。
なお、上記5種類のサーバ群の他に、SwiftにはReplicator、Updater、Auditorと呼ばれる処理がある。
Replicatorは、ネットワークやディスク装置が故障した場合などに、レプリカの冗長度を保つためにレプリケーション処理を行う。
Updaterは、何らかの理由によって内部管理情報の更新が間に合わなかった場合などに、更新処理要求をキューイングしておいて遅延更新を行う。例えば、高負荷時にオブジェクトのアップロードを行ったときに、Container Serverへの情報更新が間に合わないことがある。この場合、一時的にアップロードしたはずのオブジェクトが一覧に表示されないなどの現象が見られることを意味する。これは、クラウド時代特有のeventual consistencyと呼ばれる性質の1つである。
Auditorは、サーバ単位で内部のデータ整合性のチェックを行い、必要があれば他のサーバ上のレプリカからコピーを行って整合性を回復する。
なお、Auth Serverは次版で名称と位置付けが変更される見込みである。これは、これまでNovaとSwiftが認証・認可機構を独立に実装しており、仕様に違いがあったものを、OpenStack全体で統合していくことを目指す動きの一環である。
まとめ
今回は、Swiftの特徴、アーキテクチャ、利用するためのツールなどの全体的な説明を行った。Swiftがシンプルなアーキテクチャを特徴とすることや、商用サービス由来であることもあり、既に実用の域に達していることをご理解いただけたと思う。
次回は、比較的小規模な構成を題材に取り、実際にSwiftの動作環境を構築して利用するための具体的な手順を紹介する。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
関連記事
新着ホワイトペーパー PR
-
製品資料
[株式会社キーエンス] なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは -
製品資料
[株式会社セールスフォース・ジャパン] 「CRMは設計と無関係」は本当か? PLMとの融合で実現する高速開発 -
事例
[日本ヒューレット・パッカード合同会社] AIエージェントの時代にどう備える? 「新たな働き手」を支える3要素とは -
製品資料
[日本ヒューレット・パッカード合同会社] “横並びの自動化”から脱却、AI活用で生産性と競争力を高める秘訣 -
製品資料
[サイボウズ株式会社] AIが「わざわざ使うツール」になっていない? 業務で自然に使う導線にする秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
2
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
3
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
4
なぜ「Gemini 4 Argon」は出遅れたのか? Googleが狙う“逆転のシナリオ”
-
5
「中堅・中小企業のネットワーク・セキュリティ運用実態」に関するアンケート
-
6
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
7
「Wi-Fi 7」経由でWindowsが乗っ取られる? 最高権限奪取の恐怖
-
8
情報漏えいはなぜ繰り返されるのか 今すぐ見直すべき「境界」
-
9
情シスの約8割が転職や退職を意識 調査で分かった“辞めたくなる最大の理由”
-
10
【漫画付き】ひとり情シス協会が明かす、RAG導入でしくじる企業「2つの共通点」
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
3
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
4
財務部門がAIを最大限に活用する方法 無駄のない戦略的リーダーシップへの道
-
5
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
6
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
7
なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは
-
8
生成AIを開発に導入しても効果が見えない? 実証実験で分かった成果と課題
-
9
経産省DX指針から読み解く、受発注業務デジタル化ロードマップ
-
10
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー