Google Cloud Platform(1) Advent Calendar 2016の25日目です(今何年何月何日でしたっけ?ごめんなさい…)
GCS Fuseとは
Google Cloud StorageのFuseアダプタです。
GCSバケットをファイルシステムとしてマウントできます。
MacとLinuxに対応してます。
ソースコードはGitHubに公開されています。
GCP公式のリポジトリで公開されていますが、コミュニティサポートのみのオープンそースツールです。
GCSの安いストレージをファイルシステム代わりに使えるとかめっちゃ便利やんけ、安価な無限ストレージゲット!うおおお!と思った方。
3割正解。残りは…。
今回はそんな話。
GCS Fuseを使ってみる
さっそく使いましょう。
インストール
今回はMacで。HomeBrewでインストールします。
-
brew cask install osxfuse
でOSX Fuseをインストールする -
brew install gcsfuse
でGCS Fuseをインストールする - 再起動する
- 終わり
使う前に
gcloud auth login
でGCPアカウントにログインしましょう。
そのアカウントでGCSにアクセスします。
マウント
-
gsutil mb gs://hogehoge
バケット作成 -
gcsfuse hogehoge /path/to/mount
でマウント-
gs://
いらないです。
-
- あとは普通にローカルファイルとしてコピーとかできます。
使ってみた感想
おっせえ…
まあこれに尽きるわけですが。
でも普通に考えれば当たり前ですね。
ローカルのファイルシステムに書き込んでるわけじゃなくてGCSにアップロード・ダウンロードしているのでその分だけ時間がかかります。
でもドキュメントによるとgsutilと同じスピードは出るらしい。
だから普通にgsutil cpとか使ってるときくらいの心の余裕を持ちましょう,ということです。
その他にもこんな点が。
- GCSのファイル取得とかたまに失敗する
- SLA的にそんなもん
- 諦めない心が必要
- 転送料金かかるよ
- わりと何してもGCSの有料コマンドになる
- 頻繁に更新するようなファイルだと毎回ダウンロード・アップロードしちゃう。
- ここらへんにまとまってます。
パフォーマンスに関して
ローカルファイルに比べたら圧倒的に遅いです。
ドキュメントでは小さいファイルを一個だけ扱ったりしまくってると遅くなるから注意しろといってます。
でかいファイルか、一度に複数のファイルを扱えば良くなるみたいです。
レートリミット
GCSへのアクセスにはデフォルトでレートリミットがかかります。
マウント時のオプションでいくつか指定できます。
デフォルトだと5リクエスト/秒です。
キャッシュ
マウント時にキャッシュ時間の設定もできますね。
まとめ
大体以下のような用途では使えるのかな、と思います。
- たまにしかアクセスしないファイル置き場
- バックアップとか
- 自分で編集する類のファイルは向いてない(保存する都度通信しちゃう)
- アプリの設定ファイル置き場(これが一番な気がする)
- 複数インスタンスとかで設定ファイルを共有したいときには便利かも
- Readonlyで。
あれ?別にFUSE使わなくてもよくね?って感じにはなるけどまあそんな感じです。
NASくらいのつもりで使うとイライラMAXになるから使い所を見極めて正しく使うといいと思います。