概要
Google Cloud Storage (GCS) を macOS 上のファイルシステムにマウントして使う方法を紹介します
macOS の場合権限周りが面倒なので注意しましょう
環境
- macOS 10.14.4
- osxfuse 3.9.0
- Cloud Storage FUSE 0.23.0
インストール
macOS の場合は Homebrew が使えます
osxfuse
というパッケージに依存しているので事前にインストールしておきます
brew cask install osxfuse
brew install gcsfuse
PATH
に gcsfuse
コマンドが通らなかったので自分は以下も実行しています
ln -s /usr/local/Cellar/gcsfuse/0.23.0/bin/gcsfuse /usr/local/bin/
fstab
など mount コマンドから制御したい場合は以下も実行しましょう (今回は使いません)
ln -s /usr/local/Cellar/gcsfuse/0.23.0/sbin/mount_gcsfuse /sbin/
osxfuse の使用を許可する
おそらく mojave など最新のバージョンだと必須です
Homebrew でインストールした際に警告文も出ているので対応します
システムの環境設定からプライバシーの設定を開き「許可」を選択します
バケットの作成 (任意)
事前に作成できている場合は不要です
また gsutil
コマンドを使うので設定がまだの場合は事前にインストールしておいてください
gsutil mb gs://gcsfuse-test-20190513
gsutil ls
でバケットが作成できているか確認しましょう
ちなみにバケット名は GCS 内でユニークなので注意してください
必要な場合は mb
コマンドの -c
オプションでストレージクラスを指定してください
認証する (任意)
gcsfuse
アプリケーションが Google Cloud Platform にアクセスするためのトークンを取得します
gcloud auth application-default login
でブラウザで OAuth の画面が表示されるのでアクセスするユーザを選択してアクセスを許可しましょう
gcloud auth application-default print-access-token
でトークンが表示されれば OK です
マウントする
ではマウントします
マウント用のディレクトリを作成しましょう
sudo mkdir /gcsfuse-test
gcsfuse gcsfuse-test-20190513 /gcsfuse-test
Using mount point: /gcsfuse-test
Opening GCS connection...
Opening bucket...
Mounting file system...
File system has been successfully mounted.
これで成功しました
df -h
でちゃんとファイルシステムとしてマウントされているかも確認できます
gcsfuse-test-20190513 1.0Pi 0Bi 1.0Pi 0% 0 1125899906842624 0% /gcsfuse-test
これで OK です
試しにファイルなどを touch して GCS 側にもファイルがあるか確認してみましょう
touch hoge.txt
アンマウントする
アンマウントは普通に umount
コマンドを実行すれば OK です
umount /gcsfuse-test
ディレクトリにまだいたり読み書きしてビジー状態の場合は解除してから umount
してください
トラブルシューティング
マウント時に以下のエラーが出る場合は認証情報がうまく設定されていません
再度 gcloud auth application-default login
でログインしてみてください
Opening GCS connection...
daemonize.Run: readFromProcess: sub-process: mountWithArgs: getConn: DefaultTokenSource: google: could not find default credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information.
更に以下が出る場合はマウントしようとしているパスに gcsfuse
でアクセスできる権限が付与されているか確認してください
もしくはシステム環境設定でちゃんと osxfuse
の使用が許可されているか確認してください
daemonize.Run: readFromProcess: sub-process: mountWithArgs: mountWithConn: Mount: mount: loadOSXFUSE: exit status 1
最後に
macOS 上で gcsfuse を使ってみました
ポイントはやはり権限周りで特に osxfuse の利用を許可するところで少しハマりました
使ってみた感じとしてはネットワークのレイテンシーがある分重いですが十分使えると思います
軽量なファイルであればそこまで気にならないと思いますが重いファイルであれば ls
なども時間がかかるので頻繁にアクセスするのは避けたほうが良いと思います
基本は日時バックアップなどのディレクトリとして一日一回更新するようなファイルの置き場に使うのが良いと思います
0 件のコメント:
コメントを投稿