2013年7月23日火曜日

40.Google Cloud Storageの新機能 (2013/07/23)

このエントリーをはてなブックマークに追加


Ryo Yamasaki(@vierjp)です。

Cloud Platform Blog: New in Google Cloud Storage: auto-delete, regional buckets and faster uploads
によると、Google Cloud Storageに新機能が追加されたとのことなので調べてみました。
せっかくなのでメモを公開。



◯Object Lifecycle Management

Cloud Storage上のデータを一定期間経過後に自動で削除できます。
AppEngineのDatastoreのバックアップデータなんかを一定期間経過後に自動で削除するように設定しておくと便利そう。

bucketに対してこの設定をするので、そのbucket内に配置したファイル全てにこの削除ルールが適用される。
よって、バックアップデータの保持期間のポリシー毎にbucketを分けるのが良さげ。

削除ルールには二種類のパターンがあって、
・期間を指定(日単位)
・バージョニング機能を使っている場合に保持する世代数を指定(保持しておく最新のバージョン数を指定)


・lifecycle_config.xml の記述例 (365日後に削除)
<?xml version="1.0" ?>
<LifecycleConfiguration>
    <Rule>
        <Action>
            <Delete/>
        </Action>
        <Condition>
            <Age>365</Age>
        </Condition>
    </Rule>
</LifecycleConfiguration>

・以下のコマンドでルールを適用する
gsutil lifecycle set lifecycle_config.xml gs://bucket_name


・既存のルールを取得したい場合には以下のコマンドを実行する
gsutil lifecycle get gs://bucket_name > lifecycle_config.xml

設定を無効にしたい場合には以下のような設定が空のxmlファイルを作成してそれをセットする。
<?xml version="1.0" ?>
<LifecycleConfiguration/>



◯Regional Buckets

Cloud Storageのbucketは US, EUというレベルでも指定できるが、
この機能ではさらに細かいリージョンのレベルで指定することが可能。

「bucketのリージョン」を「使用しているCompute Engineのリージョン」と同じにすれば転送速度が速くて良い、とのこと。


・ロケーションの種類
Google Cloud Platformでの「ロケーション」には、とりあえず以下の3つの概念があるようだ。

・国家・大陸 (national/continental)・・・US, EU (現状この2つ)
・リージョン ・・・ US-CENTRAL1 等
・ゾーン・・・・・・us-central1-a 等
(下に行くほど狭い概念になる)


App Engineは「国家・大陸」のレベルで指定できる。(ただしEUはプレミアプランのみ)
Cloud Storage「国家・大陸」のレベルか「リージョン」レベルを指定できる。
Compute Engineではインスタンスや永続ディスク(PD)を作成する際に「ゾーン」を指定する。
(「ゾーン」は「リージョン」の下位に紐づくので、「ゾーン」を指定すると自ずと「リージョン」も決まる)


・「Regional Buckets」の作成方法
bucket作成時に以下のように 「-l」(location)オプションでリージョンを指定する。
gsutil mb -c DRA -l US-CENTRAL1 gs://myregionalbucket

・現在Cloud Storageで指定できるリージョン
US-EAST1
US-EAST2
US-EAST3
US-CENTRAL1
US-CENTRAL2
US-WEST1

・現時点で存在するCompute Engineのリージョン
US-CENTRAL1
US-CENTRAL2
EUROPE-WEST1


当然リージョンは一致しているだろうと思ったら違った。
Cloud Storageで指定できる「US-EAST」と「US-WEST」はCompute Engineには無いし、
Compute Engineで指定できるEUROPE-WESTはCloud Storageで指定できないらしい。

ということは現時点で指定するなら「US-CENTRAL1」か「US-CENTRAL2」ということになるだろうか。


・Durable Reduced Availability (DRA) でのみ利用可能?
ブログには「Durable Reduced Availability (低可用性・低価格のストレージ) で使える」と書いてある。
Cloud Storageのドキュメントにはその点についての記述が見つからないし、
ドキュメント内のコマンドの例でもDRAのオプション(「-c DRA」)を指定していない。

しかし実際にDRAオプションを指定せずにコマンドを実行した場合、エラー(500エラー)となって失敗した。
DRAオプションを指定したら成功した。

システムエラーなので絶対これが原因とは断言しづらいけど、
やはりブログに書いてある通りDRAの場合のみ指定できるように思える。



◯gsutil - Automatic Parallel Composite Uploads

Google I/O のセッションにもあった「大きいファイルの分割Uploadするテクニック」を自動でやってくれるらしい。
大きいファイルを扱う場合に楽になりそう。


.botoファイルで以下の設定をすることが可能。

・parallel_composite_upload_threshold
閾値の指定 ここで指定した値を超えるサイズのファイルが自動で分割Uploadされる

・parallel_composite_upload_component_size
分割ファイルのサイズ

この自動分割アップロード機能を完全に無効にしたい場合には、「parallel_composite_upload_threshold」の値を「0」にする。
(自分で分割したファイルをアップロード・サーバー上で結合したい場合にこの機能が邪魔になることがあるらしい)

・分割アップロードされた一時ファイルはサーバー上で結合された後に削除される。
・結合前に転送に失敗した場合は、リジュームを活用して再度アップロードされる。
・この場合も結合まで成功したら一時ファイルは削除される。
・アップロードが正常に完了するまで一時ファイルは残る。



◯Durable Reduced Availability Storage (DRA Storage)

これは以前からある機能だけど、関連するので補足。

Durable Reduced Availability Storage は可用性が低いけど料金が安いストレージ。
Pricing and Support - Google Cloud Storage — Google Developers

ドキュメントによれば、データのバックアップに向いているという話。
> (データのバックアップには) 高耐久性(durability)が重要ですが、最高の可用性(availability)は必須ではありません。

バックアップ時に落ちてて失敗してたら結構嫌な気もするけど、、高耐久性の方が重要そう。
「高可用性のbucket」だとしても失敗は把握できるようにしておくべきだから、
トレードオフとしてアリな気がする。


・DRAバケットの作成方法
gsutil mb -c DRA gs://<bucketname>/



・既存のバケットからデータを(事実上の)コピーするコマンド
gsutil cp -D -R gs://<standard_bucket>/* gs://<durable_reduced_availability_bucket>


現時点では「既存の標準バケット」を「DRAバケット」に変更したり、
「標準バケット」から「DRAバケット」に直接オブジェクト(ファイル)のコピーはサポートしていない。
新規にbucketを作成して、一度ダウンロードしてから再度アップロードする必要がある。

そのため「-D」で「daisy chain」オプションを指定する。
直接コピーはできないが、このコマンドを実行すると
一度ローカルのPCにデータをダウンロードして、それから新しいバケットにアップロードする形になるので
コマンド一発で「ダウンロード→アップロード」できる。

ただしこの場合に注意点が2つ。
・「ダウンロード + アップロード」をしているのでそれら両方に対して料金がかかる。
・このコマンドを実行する前にコピー先のbucketにデフォルトのACLを設定しておくべし。
 (サーバー上でのコピーではなく新規Uploadなので、コピー前のACL(アクセスコントロール)情報は失われる)



◯参考リンク

Cloud Platform Blog: New in Google Cloud Storage: auto-delete, regional buckets and faster uploads
Object Lifecycle Management - Google Cloud Storage — Google Developers
Regional Buckets - Google Cloud Storage — Google Developers
mb - Make buckets - Google Cloud Storage — Google Developers
Durable Reduced Availability Storage - Google Cloud Storage — Google Developers



そのうちバージョニングも勉強しなきゃなぁ、と思いつつ今回はここまで。ノシ



このエントリーをはてなブックマークに追加