[GCP] GCEにGCSをマウントしてファイルシステム的に扱う方法
今回はGCEにGCSをマウントしてファイルシステム的に扱う方法について書きます。
GCEのアクセス権を変更する
GCEからGCSに対してファイル操作を行うには、GCEにGCSのアクセス権限を付与する必要があります。この操作を行わないとGCEからGCS上のファイルを操作出来ません。
- GCEを停止
- VMインスタンスの詳細画面より「編集」
- アクセススコープを「各APIにアクセス権を設定」に変更
- ストレージの項目を「フル」に変更(デフォルトでは「読み取り」のみ)
GCEにGCSバケットをマウント
gcsfuse -o nonempty bucket /path/to/mnt
[注意] GCSのディレクトリはマウント時点では不可視です
すべてのディレクトリを可視化
--implicit-dirs
をコマンドオプションに指定
基本的には不可視で一部を可視化
mkdir -p /path/to/implicit/dir
都度、可視化したいディレクトリの名前でディレクトリを作成
マウントを永続化
上記の方法ではGCEを再起動すると自動的にアンマウントされます。マウントを永続化したい場合は、GCEの起動時にマウントするように起動スクリプトを設定しましょう。
GCEのGUI管理コンソールから、
編集>カスタムメタデータ>
「項目:startup-script」
「値:sudo gcsfuse --implicit-dirs --dir-mode "777" -o allow_other backet /path/to/mnt」
を設定します。このとき、マウント先のディレクトリの所有権はrootである必要があるので、下記でrootに変更。
chown root:root /path/to/mnt
念のため、GCEで下記のマウントスクリプトが手動実行できるかを確認しておくとよいでしょう。
sudo gcsfuse --implicit-dirs --dir-mode "777" -o allow_other backet /path/to/mnt
GCSバケットファイルシステムの注意点
- ディレクトリ名の変更不可
- どうしても変更したい場合
cp -r [名称変更したいdir] [新名称]
の後に
rm -r [名称変更したいdir]
と愚直に行うしかないようです。(2020年1月11日現在)
なお、名称を変更したいディレクトリが多くのファイルを内包する場合、上記の方法は非常に時間がかかります。
参考:バケット操作するためのCLIコマンド「gsutil」について
今回はここまでです。ではでは!