はじめに
OCI Object Storageバケットをファイルシステムとしてマウントが可能なOCIFSユーティリティが提供されました。
OCIFSを使用してObject Storageバケットをマウントした後、そのバケット内のオブジェクトに通常のファイルまたはディレクトリとしてアクセスできます。
インストールし使用してしてみました。
OCIFSユーティリティの前提条件
- OCIFS ユーティリティ ( ocifs ) パッケージは、Oracle Linux 8 以降で使用可能
- OCI Object StorageのバケットにアクセスできるシステムまたはOCI コンピュートインスタンス
- Object Storageのバケットは事前に作成
- ローカル・ディスク領域
- OCIFSは、Object Storageのオブジェクトをキャッシュするためにローカル・ディスク領域を消費する
OCIFSユーティリティをインストール
- 前提条件のクリア
- ocifsパッケージを含むoci_includedリポジトリを有効化
- OCI プラットフォームイメージのOracle Linux 8 / Oracle Linux 9 では有効化済み
- ocifsパッケージをインストール
$ sudo dnf install ocifs
OCI認証の設定
OCIFSユーティリティは APIキーベースの認証(デフォルト)またはインスタンスプリンシパル認証で認証します。
APIキーベースの認証
CLI 構成ファイル ( ~/.oci/config) に[DEFAULT]プロファイルと以下のエントリが必要です。( cli のインストールは 不要です )
- user
- tenancy
- region
- key_file
- finderprint
構成ファイルの例
[DEFAULT]user=ocid1.user.oc1..aaaaaaaaXXXXX
fingerprint=fa:56:8a:e9:42:c8:8a:07:49:73:XX:XX:XX:XX
tenancy=ocid1.tenancy.oc1..aaaaaaaaXXXXX
region=ap-tokyo-1
key_file=/home/opc/.ssh/private.pem
インスタンスプリンシパル認証
- コンピュート・インスタンスに一致するルールを使用して、動的グループを作成
- 動的グループにObject Storageの管理を許可するポリシーを作成
Allow dynamic-group <動的グループ名> to manage object-family in compartment <コンパートメント名>
OCIFSでのマウント
$ ocifs <バケット名> <ディレクトリ名>
ocifs_bucket バケットを ./mydir にマウントする例
$ mkdir mydir
$ ocifs ocifs_bucket mydir
マウント後は 通常のファイルシステムディレクトリとしてファイル操作が可能
$ cd mydir
$ vi abc.txt
$ cp $HOME/a.csv .
$ ls -l
total 0
-rw-r--r--. 1 opc opc 168 Aug 2 00:00 aba.txt
-rw-r--r--. 1 opc opc 5 Aug 2 00:00 a.csv
OCI Webコンソールなどで Object Storage にアップロードしたファイルも確認可能です。
$ ls -l mydir
total 0
-rw-r--r--. 1 opc opc 595 Aug 2 00:00 2023.txt
-rw-r--r--. 1 opc opc 168 Aug 2 00:00 aba.txt
-rw-r--r--. 1 opc opc 5 Aug 2 00:00 a.csv
インスタンスプリンシパルでの認証
インスタンスプリンシパルで認証する場合は --auth オプションを追加します。
$ mkdir mydir
$ ocifs --auth=instance_principal ocifs_bucket mydir
OCIFS のアンマウント
fusermount コマンドで アンマウントします。
fusermount -u mydir
留意点
- OCIFS は共有ファイル システムではありません。
- オブジェクト・データの破損を避けるため、OCIFSを使用して同じオブジェクト・ストレージ・バケット(または重複するバケットのサブフォルダ)を同時にマウントしないでください。
補足
root ユーザでのマウント/アンマウントも可能
# mkdir /mnt
# mount -t fuse.ocifs ocifs_bucket /mnt
# umount /mnt
おわりに
簡単に Object Storage バケットを ファイルシステムのように操作することができるようになりました。