OCIFSでオブジェクト・ストレージをLinuxからマウントしてみる


オブジェクト・ストレージに配置したデータをLinuxのOS上から参照する、または、OS上のファイルを簡単にオブジェクト・ストレージに配置できると便利です。

オブジェクト・ストレージにアップロード/ダウンロードを行う方法はいくつかありますが、ここでは、**OCIFSユーティリティ**を使ってOracle Linux 8のインスタンスからオブジェクト・ストレージのバケットをファイルシステムのようにマウントして利用していきたいと思います。

また、以前はOCIFSでは最大50GiBのファイル・サイズまでという制限があったのですが、ドキュメントを見ると最近はオブジェクト・ストレージと同じく最大10TiBのファイル・サイズまで扱えるようになったようです。


前提条件や利用方法、制限事項などは、必ず以下のOCIFSのドキュメントを参照するようにしましょう。

- 参考資料
  - [Oracle Cloud Infrastructureドキュメント：OCIFSユーティリティ](https://docs.oracle.com/ja-jp/iaas/oracle-linux/ocifs/index.htm)



特に以下の点には要注意です。

- OCIFSは**共有ファイル・システムではない**。OCIFSを使用して同じバケットを複数同時にマウントするとデータの破損の可能性がある。また、バケットがマウントされている間は、コンソール、CLIまたはAPIなどを使ってバケット・オブジェクトを直接変更しないようにする必要がある。
- 実態はあくまでオブジェクト・ストレージであってファイル・システムではないので、以下のような点に注意。
  - 通常のファイルとディレクトリのみサポートされる。シンボリック・リンク、物理リンクおよび特殊ファイル(ブロック、文字、fifo、特殊ファイル)はサポートされない
  - ファイルシステム上のファイル属性（権限、ユーザーおよびグループの所有権、アクセス/変更/変更時間）は永続的なものではない
- ファイル操作を行う際にローカルのキャッシュ領域を必要とする。（大きなファイル操作が発生する場合はその分ローカル領域も必要）



それでは実際に使ってみます！



## 前提条件

必要となるリソースを準備しておきます。

- インスタンス

  - Oracle Linux 8以降が必要です。今回はあらかじめ作成してあるOracle Linux 8のコンピュート・インスタンスを利用します。

    - ```
      [opc@tk-inst-ol8 ~]$ cat /etc/oracle-release 
      Oracle Linux Server release 8.10
      [opc@tk-inst-ol8 ~]$ 
      ```

  - ローカル・ディスク領域

    - OCIFSではオブジェクトのキャッシュのためローカル・ディスク領域が必要です。**書き込み、読み取り対象となるオブジェクトを保持できるだけの十分な空き領域**が必要です。**キャッシュがいっぱいになると操作が失敗する可能性があります。**

  - CLI構成ファイル

    - OCIFSではAPIキー認証を行います。OCI CLIと同じ構成ファイルを利用できます。今回はあらかじめOCI CLIがインストールされて構成済みのインスタンスを利用するので、同じ構成ファイルを使っていきます。

- オブジェクト・ストレージのバケット

  - 今回はあらかじめ作成してあるTokyoリージョンのバケットを利用します。

  

## OCIFSのインストール

OCIFSは以下のコマンドでインストールします。

```
sudo dnf install ocifs
```



以下の通り実行しました。インストールはすぐできました。

```
[opc@tk-inst-ol8 ~]$ sudo dnf install ocifs
Oracle Linux 8 BaseOS Latest (x86_64)                                                              300 kB/s | 4.3 kB     00:00    
Oracle Linux 8 BaseOS Latest (x86_64)                                                               79 MB/s |  87 MB     00:01    
Oracle Linux 8 Application Stream (x86_64)                                                         325 kB/s | 4.5 kB     00:00    
Oracle Linux 8 Application Stream (x86_64)                                                          71 MB/s |  67 MB     00:00    
Oracle Linux 8 Addons (x86_64)                                                                     302 kB/s | 3.5 kB     00:00    
Latest Unbreakable Enterprise Kernel Release 7 for Oracle Linux 8 (x86_64)                         265 kB/s | 3.5 kB     00:00    
Latest Unbreakable Enterprise Kernel Release 7 for Oracle Linux 8 (x86_64)                          78 MB/s |  55 MB     00:00    
Dependencies resolved.
===================================================================================================================================
 Package                  Architecture              Version                             Repository                            Size
===================================================================================================================================
Installing:
 ocifs                    x86_64                    1.2.0-6.el8                         ol8_oci_included                      81 k
Installing dependencies:
 fuse                     x86_64                    2.9.7-19.0.1.el8                    ol8_baseos_latest                     82 k

Transaction Summary
===================================================================================================================================
Install  2 Packages

Total download size: 163 k
Installed size: 373 k
Is this ok [y/N]: y
Downloading Packages:
(1/2): fuse-2.9.7-19.0.1.el8.x86_64.rpm                                                             594 kB/s |  82 kB     00:00    
(2/2): ocifs-1.2.0-6.el8.x86_64.rpm                                                                 538 kB/s |  81 kB     00:00    
------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                               1.0 MB/s | 163 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                            1/1 
  Installing       : fuse-2.9.7-19.0.1.el8.x86_64                                                                               1/2 
  Installing       : ocifs-1.2.0-6.el8.x86_64                                                                                   2/2 
  Running scriptlet: ocifs-1.2.0-6.el8.x86_64                                                                                   2/2 
  Verifying        : ocifs-1.2.0-6.el8.x86_64                                                                                   1/2 
  Verifying        : fuse-2.9.7-19.0.1.el8.x86_64                                                                               2/2 

Installed:
  fuse-2.9.7-19.0.1.el8.x86_64                                       ocifs-1.2.0-6.el8.x86_64                                      

Complete!
[opc@tk-inst-ol8 ~]$ 
```



## APIキーの準備

OCI CLI用に構成ファイルとユーザーのAPIキーの登録が済んでいることを確認します。

```
[opc@tk-inst-ol8 ~]$ ls .oci/
config  oci_api_key.pem  oci_api_key_public.pem
[opc@tk-inst-ol8 ~]$ 
[opc@tk-inst-ol8 ~]$ cat .oci/config 
[DEFAULT]
user=ocid1.user.oc1..aaaxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
fingerprint=xxxxxxxxxxxxxxxxxxxxxxxxxx
key_file=/home/opc/.oci/oci_api_key.pem
tenancy=ocid1.tenancy.oc1..aaxxxxxxxxxxxxxxxxxxxxxxxxxxxx
region=ap-tokyo-1
[opc@tk-inst-ol8 ~]$ 
```



## オブジェクト・ストレージ・バケットの準備

あらかじめTokyoリージョンに作成してある以下のバケットを利用します。

![image-20250205103103072.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/4a9813ce-54f6-67e4-c7cd-9542beaae1b7.png)




## バケットのマウントとオブジェクトの表示

マウントするディレクトリを作成し、以下のocifsコマンドでバケットをマウントします。

```
ocifs [オプション] <バケット・パス> <ディレクトリ名>
```

実施してみます。

```
[opc@tk-inst-ol8 ~]$ pwd
/home/opc
[opc@tk-inst-ol8 ~]$ mkdir ~/ocifsdir
[opc@tk-inst-ol8 ~]$ 
[opc@tk-inst-ol8 ~]$ ls
ocifsdir
[opc@tk-inst-ol8 ~]$ 
[opc@tk-inst-ol8 ~]$ ocifs tk_test_bucket ocifsdir
[opc@tk-inst-ol8 ~]$ 
[opc@tk-inst-ol8 ~]$ cd ocifsdir/
[opc@tk-inst-ol8 ocifsdir]$ ll
total 4
-rw-r--r--. 1 opc opc     2896397 Feb  5 04:11 OCI_IaaS_NewFeature_FY25Q2_pub.pdf
drwxr-xr-x. 2 opc opc           6 Feb  5 02:48 testfolder1
-rw-r--r--. 1 opc opc          10 Feb  5 04:13 test.txt
-rw-r--r--. 1 opc opc 12135139840 Feb  5 02:48 tk_windows10-1.vmdk
-rw-r--r--. 1 opc opc 24643941888 Feb  5 02:48 WinDev2306Eval-disk1.vmdk
[opc@tk-inst-ol8 ocifsdir]$ 
[opc@tk-inst-ol8 ocifsdir]$ cat test.txt 
testtest

[opc@tk-inst-ol8 ocifsdir]$ 
```

バケット内に格納されているオブジェクトの情報と同じ情報がLinux OS上からも見え、ファイルの中身も見ることができました。

![image-20250205131806543.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/9dff4989-e50b-24af-4317-eaa405944efa.png)




オブジェクトはファイルシステム上にキャッシュされると書いてあるのでキャッシュを確認してみます。デフォルトのキャッシュ・ディレクトリは、~/.ocifs/ です。

```
[opc@tk-inst-ol8 cache]$ pwd
/home/opc/.ocifs/tk_test_bucket/cache
[opc@tk-inst-ol8 ocifsdir]$ ll
total 4
-rw-r--r--. 1 opc opc     2896397 Feb  5 04:11 OCI_IaaS_NewFeature_FY25Q2_pub.pdf
drwxr-xr-x. 2 opc opc           6 Feb  5 02:48 testfolder1
-rw-r--r--. 1 opc opc          10 Feb  5 04:13 test.txt
-rw-r--r--. 1 opc opc 12135139840 Feb  5 02:48 tk_windows10-1.vmdk
-rw-r--r--. 1 opc opc 24643941888 Feb  5 02:48 WinDev2306Eval-disk1.vmdk
[opc@tk-inst-ol8 ocifsdir]$ 
```

さきほどマウントしたディレクトリで表示した内容と同じ情報が確認できました。



## オブジェクトのアップロード

オブジェクトのマルチパートアップロードにも対応しているようですので、大きめのファイルをオブジェクト・ストレージに配置してみます。

[OCIFSマルチパート・アップロード・オプション](https://docs.oracle.com/ja-jp/iaas/oracle-linux/ocifs/index.htm#ocifs_multipart_upload_options)

![image-20250205140423107.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/60de8a5f-1933-a33a-f014-a9aebe90eaa2.png)


デフォルトで100MB以上のファイルはマルチパートに分割されるようなので、ローカル領域に1000MBのファイルを作成してから、マウントしたディレクトリにコピーを行ってみます。

```
[opc@tk-inst-ol8 ~]$ dd bs=1M count=1000 if=/dev/zero of=1000M_file
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 0.359915 s, 2.9 GB/s
[opc@tk-inst-ol8 ~]$ 
[opc@tk-inst-ol8 ~]$ ls
1000M_file  ocifsdir  test_rename1.txt
[opc@tk-inst-ol8 ~]$ cp 1000M_file ./ocifsdir/
[opc@tk-inst-ol8 ~]$ ll ocifsdir/
total 1024004
-rw-rw-r--. 1 opc opc  1048576000 Feb  5 04:26 1000M_file
-rw-r--r--. 1 opc opc     2896397 Feb  5 04:11 OCI_IaaS_NewFeature_FY25Q2_pub.pdf
drwxr-xr-x. 2 opc opc           6 Feb  5 02:48 testfolder1
-rw-r--r--. 1 opc opc          10 Feb  5 04:13 test.txt
-rw-r--r--. 1 opc opc 12135139840 Feb  5 02:48 tk_windows10-1.vmdk
-rw-r--r--. 1 opc opc 24643941888 Feb  5 02:48 WinDev2306Eval-disk1.vmdk
[opc@tk-inst-ol8 ~]$ 
```

OCIFS上にコピーが完了しました。

また、コピー中にバケットのステータスを確認したところ、マルチパートアップロードの近似サイズが増えていたので、確かにマルチパートアップロードが行われていそうです。

![image-20250205132719864.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/427e882f-1694-44ae-f65a-23cfc63ab79e.png)

バケット側でも正常に1000MBのファイルがアップロードされていることが確認できました！

![image-20250205133100862.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/b900e3a5-23ff-8b43-eb49-63b4710df008.png)



続いて、もう少し大きいサイズで試したいので、まずローカル上に5000MBのファイルを生成してみます。

```
[opc@tk-inst-ol8 ~]$ dd bs=1M count=5000 if=/dev/zero of=5000M_file
5000+0 records in
5000+0 records out
5242880000 bytes (5.2 GB, 4.9 GiB) copied, 64.2315 s, 81.6 MB/s
[opc@tk-inst-ol8 ~]$ 
[opc@tk-inst-ol8 ~]$ df -h
Filesystem                  Size  Used Avail Use% Mounted on
devtmpfs                    5.7G     0  5.7G   0% /dev
tmpfs                       5.7G     0  5.7G   0% /dev/shm
tmpfs                       5.7G   49M  5.7G   1% /run
tmpfs                       5.7G     0  5.7G   0% /sys/fs/cgroup
/dev/mapper/ocivolume-root   36G   20G   17G  55% /
/dev/mapper/ocivolume-oled   10G  410M  9.6G   4% /var/oled
/dev/sda2                  1014M  363M  652M  36% /boot
/dev/sda1                   100M  6.0M   94M   6% /boot/efi
tmpfs                       1.2G     0  1.2G   0% /run/user/986
tmpfs                       1.2G     0  1.2G   0% /run/user/1000
[opc@tk-inst-ol8 ~]$ 
```

この時点で、/ 領域は20G使用済み、空き17Gです。OCIFSディレクトリにコピーしていきます。

```
[opc@tk-inst-ol8 ~]$ 
[opc@tk-inst-ol8 ~]$ cp 5000M_file ocifsdir/
[opc@tk-inst-ol8 ~]$ 
```

しばらくしてコピーが完了しました。バケット側からも無事アップロード完了したことが分かります。

![image-20250205134403702.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/25ac01b9-b193-1ec3-fc3f-50846348f5b2.png)

空き領域の変化を見てみます。

```
[opc@tk-inst-ol8 ~]$ df -h
Filesystem                  Size  Used Avail Use% Mounted on
devtmpfs                    5.7G     0  5.7G   0% /dev
tmpfs                       5.7G     0  5.7G   0% /dev/shm
tmpfs                       5.7G   49M  5.7G   1% /run
tmpfs                       5.7G     0  5.7G   0% /sys/fs/cgroup
/dev/mapper/ocivolume-root   36G   25G   12G  68% /
/dev/mapper/ocivolume-oled   10G  410M  9.6G   4% /var/oled
/dev/sda2                  1014M  363M  652M  36% /boot
/dev/sda1                   100M  6.0M   94M   6% /boot/efi
tmpfs                       1.2G     0  1.2G   0% /run/user/986
tmpfs                       1.2G     0  1.2G   0% /run/user/1000
[opc@tk-inst-ol8 ~]$ 
[opc@tk-inst-ol8 ~]$ ll .ocifs/tk_test_bucket/cache/
total 6144008
-rw-rw-r--. 1 opc opc  1048576000 Feb  5 04:26 1000M_file
-rw-rw-r--. 1 opc opc  5242880000 Feb  5 04:37 5000M_file
-rw-r--r--. 1 opc opc     2896397 Feb  5 04:11 OCI_IaaS_NewFeature_FY25Q2_pub.pdf
drwxr-xr-x. 2 opc opc           6 Feb  5 02:48 testfolder1
-rw-r--r--. 1 opc opc          14 Feb  5 02:58 test_rename1.txt
-rw-r--r--. 1 opc opc          14 Feb  5 02:48 test_rename5.txt
-rw-r--r--. 1 opc opc          10 Feb  5 04:13 test.txt
-rw-r--r--. 1 opc opc 12135139840 Feb  5 02:48 tk_windows10-1.vmdk
-rw-r--r--. 1 opc opc 24643941888 Feb  5 02:48 WinDev2306Eval-disk1.vmdk
[opc@tk-inst-ol8 ~]$ 
```

使用済みが25GBに増えました。これはキャッシュが増えたのだと考えられます。

キャッシュ・ディレクトリが配置されているストレージ・デバイスが一杯になると、一部のOCIFS操作は失敗する可能性があるということなので、大きなファイル操作を行う場合には十分なキャッシュ領域を確保する必要がありそうです。

[参考：OCIFSキャッシュ・オプション](https://docs.oracle.com/ja-jp/iaas/oracle-linux/ocifs/index.htm#ocifs-cache-options)

また、デフォルトの設定だと、マウントされている限りキャッシュはパージされないようです。

![image-20250205134317369.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/85c5a344-15f2-6b4e-7a72-889914049ec4.png)


## バケットのアンマウント

アンマウントするのは、

```en-us
fusermount -u <ディレクトリ名>
```

または、sudoしてから、

```en-us
umount <ディレクトリ名>
```

です。



```
[opc@tk-inst-ol8 ~]$ fusermount -u ocifsdir/
```

アンマウントできました。

アンマウントしたら使用済み領域が19Gに減りました。

```
[opc@tk-inst-ol8 ~]$ df -h
Filesystem                  Size  Used Avail Use% Mounted on
devtmpfs                    5.7G     0  5.7G   0% /dev
tmpfs                       5.7G     0  5.7G   0% /dev/shm
tmpfs                       5.7G   49M  5.7G   1% /run
tmpfs                       5.7G     0  5.7G   0% /sys/fs/cgroup
/dev/mapper/ocivolume-root   36G   19G   18G  52% /
/dev/mapper/ocivolume-oled   10G  387M  9.7G   4% /var/oled
/dev/sda2                  1014M  363M  652M  36% /boot
/dev/sda1                   100M  6.0M   94M   6% /boot/efi
tmpfs                       1.2G     0  1.2G   0% /run/user/986
tmpfs                       1.2G     0  1.2G   0% /run/user/1000
[opc@tk-inst-ol8 ~]$ 
[opc@tk-inst-ol8 ~]$ cd .ocifs/tk_test_bucket/
[opc@tk-inst-ol8 tk_test_bucket]$ ls
[opc@tk-inst-ol8 tk_test_bucket]$ 
```

キャッシュ・ディレクトリの中身がパージされて何もなくなっていることも確認できました。



## ローカル・ストレージ領域以上のサイズのファイルを操作してみる （2025/02/10追記）

続いて、マルチパート・アップロードで大きなサイズのファイルをアップロードする際にローカルのキャッシュ領域がファイルサイズ分必要になるのかどうかを試してみます。

ローカル・ストレージに10Gのファイルを作成します。この時点でローカル・ストレージの空き領域はあと7.4Gとなっています。

キャッシュ領域を超えるサイズが書き込もうとするとどうなるか確認するため、この10GファイルをOCIFS領域にコピーしてみたいと思います。

```
[opc@tk-inst-ol8 ~]$ dd bs=1M count=10000 if=/dev/zero of=10G_file
[opc@tk-inst-ol8 ~]$ df -h
Filesystem                  Size  Used Avail Use% Mounted on
devtmpfs                    5.7G     0  5.7G   0% /dev
tmpfs                       5.7G     0  5.7G   0% /dev/shm
tmpfs                       5.7G  129M  5.6G   3% /run
tmpfs                       5.7G     0  5.7G   0% /sys/fs/cgroup
/dev/mapper/ocivolume-root   36G   29G  7.4G  80% /
/dev/sda2                  1014M  363M  652M  36% /boot
/dev/sda1                   100M  6.0M   94M   6% /boot/efi
/dev/mapper/ocivolume-oled   10G  682M  9.4G   7% /var/oled
tmpfs                       1.2G     0  1.2G   0% /run/user/986
tmpfs                       1.2G     0  1.2G   0% /run/user/1000
[opc@tk-inst-ol8 ~]$ 
```



OCIFS領域に10Gのファイルをコピーしていきます。しばらく時間がかかります。

```
[opc@tk-inst-ol8 ~]$ cp 10G_file ocifsdir/
```



別ターミナルでコピー中のローカル領域の変化を見てみます。

```
[opc@tk-inst-ol8 ~]$ ls -alrt ocifsdir/
total 4194248
drwx------. 6 opc opc        4096 Feb 10 03:47 ..
-rw-r--r--. 1 opc opc 24643941888 Feb 10 05:52 WinDev2306Eval-disk1.vmdk
-rw-r--r--. 1 opc opc 12135139840 Feb 10 05:52 tk_windows10-1.vmdk
-rw-r--r--. 1 opc opc          10 Feb 10 05:52 test.txt
drwxr-xr-x. 2 opc opc           6 Feb 10 05:52 testfolder1
-rw-r--r--. 1 opc opc     2896397 Feb 10 05:52 OCI_IaaS_NewFeature_FY25Q2_pub.pdf
-rw-r--r--. 1 opc opc  5242880000 Feb 10 05:52 5000M_file
-rw-r--r--. 1 opc opc  1048576000 Feb 10 05:52 1000M_file
drwxr-xr-x. 3 opc opc        4096 Feb 10 05:56 .
-rw-rw-r--. 1 opc opc  2805465088 Feb 10 05:58 10G_file
[opc@tk-inst-ol8 ~]$ ls -alrt .ocifs/tk_test_bucket/cache/
total 4194244
drwxr-xr-x. 3 opc opc          19 Feb 10 03:45 ..
-rw-r--r--. 1 opc opc 24643941888 Feb 10 05:52 WinDev2306Eval-disk1.vmdk
-rw-r--r--. 1 opc opc 12135139840 Feb 10 05:52 tk_windows10-1.vmdk
-rw-r--r--. 1 opc opc          10 Feb 10 05:52 test.txt
drwxr-xr-x. 2 opc opc           6 Feb 10 05:52 testfolder1
-rw-r--r--. 1 opc opc     2896397 Feb 10 05:52 OCI_IaaS_NewFeature_FY25Q2_pub.pdf
-rw-r--r--. 1 opc opc  5242880000 Feb 10 05:52 5000M_file
-rw-r--r--. 1 opc opc  1048576000 Feb 10 05:52 1000M_file
drwxr-xr-x. 3 opc opc        4096 Feb 10 05:56 .
-rw-rw-r--. 1 opc opc  2964848640 Feb 10 05:58 10G_file
[opc@tk-inst-ol8 ~]$ df -h
Filesystem                  Size  Used Avail Use% Mounted on
devtmpfs                    5.7G     0  5.7G   0% /dev
tmpfs                       5.7G     0  5.7G   0% /dev/shm
tmpfs                       5.7G  129M  5.6G   3% /run
tmpfs                       5.7G     0  5.7G   0% /sys/fs/cgroup
/dev/mapper/ocivolume-root   36G   33G  3.4G  91% /
/dev/sda2                  1014M  363M  652M  36% /boot
/dev/sda1                   100M  6.0M   94M   6% /boot/efi
/dev/mapper/ocivolume-oled   10G  722M  9.3G   8% /var/oled
tmpfs                       1.2G     0  1.2G   0% /run/user/986
tmpfs                       1.2G     0  1.2G   0% /run/user/1000
[opc@tk-inst-ol8 ~]$ opc@tk-inst-ol8 ~]$ 
```

マウントしたディレクトリとキャッシュ・ディレクトリ両方で徐々に10Gのファイル・サイズが増えていきます。dfコマンドで確認すると空き容量も徐々に減っていきます。



バケット側を見てみると、マルチパートアップロードの近似カウントが1件存在しており、マルチパートアップロードが進んでいる様子が分かります。
![image-20250210150009500.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/e40c923c-fefc-3eae-d833-1dabdec5f7c5.png)


そしてcpコマンドは途中で以下のエラーで失敗しました。

```
[opc@tk-inst-ol8 ~]$ cp 10G_file ocifsdir/
cp: error writing 'ocifsdir/10G_file': No space left on device
[opc@tk-inst-ol8 ~]$ 
```

マルチパートアップロードになっていても、やはりファイル・サイズ全体分のローカル空き領域がないとOCIFSに書き込むことはできないようです。

コピーに失敗した後は、OCIFSディレクトリとキャッシュ・ディレクトリの領域は開放され、7.4Gの空き領域に戻りました。

```
[opc@tk-inst-ol8 ~]$ ls -alrt ocifsdir/
total 4
drwx------. 6 opc opc        4096 Feb 10 03:47 ..
-rw-r--r--. 1 opc opc 24643941888 Feb 10 05:52 WinDev2306Eval-disk1.vmdk
-rw-r--r--. 1 opc opc 12135139840 Feb 10 05:52 tk_windows10-1.vmdk
-rw-r--r--. 1 opc opc          10 Feb 10 05:52 test.txt
drwxr-xr-x. 2 opc opc           6 Feb 10 05:52 testfolder1
-rw-r--r--. 1 opc opc     2896397 Feb 10 05:52 OCI_IaaS_NewFeature_FY25Q2_pub.pdf
-rw-r--r--. 1 opc opc  5242880000 Feb 10 05:52 5000M_file
-rw-r--r--. 1 opc opc  1048576000 Feb 10 05:52 1000M_file
drwxr-xr-x. 3 opc opc         179 Feb 10 06:00 .
[opc@tk-inst-ol8 ~]$ ls -alrt .ocifs/tk_test_bucket/cache/
total 0
drwxr-xr-x. 3 opc opc          19 Feb 10 03:45 ..
-rw-r--r--. 1 opc opc 24643941888 Feb 10 05:52 WinDev2306Eval-disk1.vmdk
-rw-r--r--. 1 opc opc 12135139840 Feb 10 05:52 tk_windows10-1.vmdk
-rw-r--r--. 1 opc opc          10 Feb 10 05:52 test.txt
drwxr-xr-x. 2 opc opc           6 Feb 10 05:52 testfolder1
-rw-r--r--. 1 opc opc     2896397 Feb 10 05:52 OCI_IaaS_NewFeature_FY25Q2_pub.pdf
-rw-r--r--. 1 opc opc  5242880000 Feb 10 05:52 5000M_file
-rw-r--r--. 1 opc opc  1048576000 Feb 10 05:52 1000M_file
drwxr-xr-x. 3 opc opc         179 Feb 10 06:00 .
[opc@tk-inst-ol8 ~]$ 
[opc@tk-inst-ol8 ~]$ df -h
Filesystem                  Size  Used Avail Use% Mounted on
devtmpfs                    5.7G     0  5.7G   0% /dev
tmpfs                       5.7G     0  5.7G   0% /dev/shm
tmpfs                       5.7G  129M  5.6G   3% /run
tmpfs                       5.7G     0  5.7G   0% /sys/fs/cgroup
/dev/mapper/ocivolume-root   36G   29G  7.4G  80% /
/dev/sda2                  1014M  363M  652M  36% /boot
/dev/sda1                   100M  6.0M   94M   6% /boot/efi
/dev/mapper/ocivolume-oled   10G  722M  9.3G   8% /var/oled
tmpfs                       1.2G     0  1.2G   0% /run/user/986
tmpfs                       1.2G     0  1.2G   0% /run/user/1000
[opc@tk-inst-ol8 ~]$ 
```



## まとめ

以下、そのほかの注意点も含めてまとめます。

- OCIFSを使うとOracle Linux上でオブジェクト・ストレージのバケットをマウントしてOS上からファイル操作ができるので便利。
- OCIFSは共有ファイル・システムではない。OCIFSを使用して同じバケットを複数同時にマウントするとデータの破損の可能性がある。また、バケットがマウントされている間は、コンソール、CLIまたはAPIなどを使ってバケット・オブジェクトを直接変更しないようにする必要がある。
- ただし実態はあくまでオブジェクト・ストレージであってファイルシステムではないので、以下のような点に注意。
  - 通常のファイルとディレクトリのみサポートされる。シンボリック・リンク、物理リンクおよび特殊ファイル(ブロック、文字、fifo、特殊ファイル)はサポートされない
  - ファイルシステム上のファイル属性（権限、ユーザーおよびグループの所有権、アクセス/変更/変更時間）は永続的なものではない
- ファイル操作を行うにはローカルファイルシステム上のキャッシュ領域が利用されており、特に大きなファイル操作を行う場合は十分な空き領域を確保する必要がある点に注意。
- デフォルトでマルチパート・アップロードに対応している。
- そのほか、ネーミングルールの制限もある
- 制限事項の詳細はドキュメント参照
  - [OCIFSのマウントの制限](https://docs.oracle.com/ja-jp/iaas/oracle-linux/ocifs/index.htm#ocifs-mount-restrictions)



ということで、使い方に注意しながら使っていきましょう！