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
-
技術文書・技術解説
[アトラシアン株式会社] IT運用や従業員サポートは生成AIでどう変わる? 使い方や導入の流れは? -
製品資料
[株式会社みらい翻訳] 音声翻訳活用の課題を解決、“本当に使える”ツールの特徴とは? -
製品レビュー
[Wrike Japan 株式会社] 400店舗を支えるWalmart Canada、散在する情報やアナログな管理をどう変えた? -
事例
[Wrike Japan 株式会社] 年間100件超のDXプロジェクトを統合管理、JERAはどのように実現した? -
事例
[Wrike Japan 株式会社] グローバルなクリエイティブ業務を合理化、エスティーローダーに学ぶ実践のコツ
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「Copilot」はなぜ放置される? “議事録要約止まり”を脱する処方箋
-
2
9割が頓挫する「AI内製化」 差がついたのはツールより設計力
-
3
JSONをやめてPythonで送る トークン消費を約7割抑えるAIの設計
-
4
見落としが多発、AI普及&データ急増に伴うネットワーク課題の意外な原因とは?
-
5
技術力だけでは「上に行けない」 シヤチハタCDOが語る、情シスが次の役割をつかむ条件
-
6
脱VMwareの前提が崩れる BroadcomのVDDK公開停止で確認すべき点
-
7
「Microsoft 365」が乗っ取られる 跡形もなくMFAを破る手口
-
8
AI全部入り「Microsoft 365 E7」に企業が二の足を踏む訳 移行意向はわずか4%
-
9
OpenAIが叫ぶ法規制の裏で 情シスが今すぐ固めるべきAI防衛策
-
10
IBM iのブラックボックス化を打破 資産継承と進化を実現する「IBM Bob」の実力
ホワイトペーパーランキング PR
-
1
5回聞くだけじゃ足りない? トヨタ式「なぜなぜ分析」の正しい実践方法
-
2
生成AIで文書活用を進めるには? 効率化と安全性をどう両立する
-
3
AIエージェントで多様な日常業務を効率化するための入門ガイド
-
4
JR西日本ITソリューションズが「監視業務の属人化」を解消した方法とは?
-
5
インシデント対応工数を約3割削減、東京ガスの事例に学ぶ監視体制刷新のコツ
-
6
国税庁の次世代基幹システム「KSK2」稼働開始に向けて、対応すべき変更点とは?
-
7
5分で分かる「セキュア大容量ファイル転送サービス」の機能とメリット
-
8
「スクラム」と「カンバン」の違いとは? アジャイル型開発手法を徹底比較
-
9
ドラマで分かる、標的型攻撃メールの被害を受ける企業と回避できる企業の分岐点
-
10
「脱Excel」か「Excel快適化」か? 現場にやさしい業務改善の進め方
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー