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
-
事例
[横河レンタ・リース株式会社] AIの全社活用が加速 トヨタ・コニック・プロに学ぶ「AI PC調達」の秘訣 -
製品資料
[横河レンタ・リース株式会社] 人材不足時代の「PC調達」ガイド:知っておきたいリースとレンタルの違い -
製品資料
[横河レンタ・リース株式会社] PC調達に「レンタル」を選ぶことのメリットは? リース・購入との違いも解説 -
技術文書・技術解説
[セコムトラストシステムズ株式会社] SCS評価制度時代の「SASE選定」ガイド -
比較資料
[セコムトラストシステムズ株式会社] なぜ「SASE選定は難しい」と言われるのか? 多くの人が陥る失敗パターンを解説
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
半数がブルーカラー転向を視野に? ベテランエンジニアを追い込む“54歳の壁”
-
2
「Wi-Fi 7」経由でWindowsが乗っ取られる? 最高権限奪取の恐怖
-
3
パッチなしで「今すぐサーバを落とせ」 Kiteworks異例警告の波紋
-
4
LINEヤフーはなぜ「社内の管理者」すら信用しないインフラを作ったのか
-
5
「企業におけるAI導入検討度とIT投資優先度」に関するアンケート
-
6
情報漏えいはなぜ繰り返されるのか 今すぐ見直すべき「境界」
-
7
OpenAIやAnthropicでさえ制御不能 2026年夏「3大サイバー攻撃」の衝撃
-
8
「契約業務のAI活用」に関するアンケート
-
9
【基本情報技術者試験】メモリ不足でもアプリが動くのはなぜ? OSを支える「仮想記憶」
-
10
Copilot導入で陥る“目的化”の落とし穴 定着の鍵は「作り込まない」こと
ホワイトペーパーランキング PR
-
1
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
2
Microsoft 365のメールセキュリティ、3つの“死角”と追加で検討すべき対策とは
-
3
システムの保守がモダン化を阻む? 「変えない判断」から脱却する方法とは
-
4
AI駆動攻撃にどう対抗する? 超速の攻撃からエンドポイントを保護する方法
-
5
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
6
プログラミング不要で誰でも実現できる、ネットワーク運用管理の自動化とは
-
7
Linux初心者でも知らないとまずい「RHEL」「SLES」の違いとは?
-
8
東大教授と考える、AI時代の「データ主権」「信頼性」「ガバナンス」の在り方
-
9
「IT史に名を残すシステム障害」8選
-
10
最速72分でデータが流出? 最新の脅威トレンドや侵入手法から分かった防衛策
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー