SwiftはOpenStackを構成するコンポーネントの中で、オブジェクトストレージの機能を担当しています。Amazon Web Serviceの提供するAmazon S3に相当するサービスを提供するために開発が進められています。オブジェクトストレージには以下のような特徴があります。
通常のファイルシステムがファイル単位だったり、さらに下位の概念としてハードディスクなどはブロック単位でのI/Oを行いますが、Swiftはオブジェクト単位でデータを取り扱います。
HTTPベースの、いわゆるREST APIでデータを扱います。
大規模、大容量のデータを扱うのには向いていますが、データ単位がオブジェクトなので、細かいデータをやり取りする必要があるデータベースなどの処理には向いていません。Webサービスのバックエンドとして、例えば商品データのイメージ画像など、あまり頻繁に更新されないデータを保管するストレージと考えると良いかもしれません。
Swiftは、オープンソースによるオブジェクトストレージとして注目されています。特に、格納したオブジェクトデータをノード間で複製(デフォルトで3冗長)して信頼性を高めているので、ハードディスクを大量に搭載できる低価格なサーバーを3台用意し、Swiftをインストールすればオブジェクトストレージが出来上がります。
Swiftを利用するにはOpenStackの認証系を担当するKeystoneとだけ連携すればよいので、Swift単独でオブジェクトストレージを構築するユーザーもいるようです。
OpenStackの次期バージョンであるIcehouseに向けて実装が進められている機能として「イレジャーコーディング(Erasure Coding:消失訂正符号処理)」があります。
現在のSwiftでは、複製によるデータ保護を行っていますが、これはちょうどRAID 1(ミラーリング)に似ています。
Erasure CodingはRAIDでいえばRAID 5やRAID 6のように、データをバラバラにしてディスクに分散して保管することで容量効率を高める仕組みです。ノード障害が発生した時に回復するために、RAID 5のパリティに相当するデータを生成し、Swiftを構成するノードに格納しておきます。
Swiftを構成するノード数が多くなると、容量と冗長性のバランスが単純な複製よりも効率良くなるので、Swiftを使ってさらに大規模なオブジェクトストレージを構築したい時にErasure Codingは有効な機能といえるでしょう。
Copyright © ITmedia, Inc. All Rights Reserved.