📂

OCI FSSの仕様を理解する

2025/01/18に公開

はじめに

  • 記事作成の背景

筆者が案件でOCI FSSを使用した際に仕様の理解が不足していたため、仕様を理解するためのメモとして作成しようと思い本記事を執筆しました。
この記事がOCI FSSの仕様を理解するためのヒントになれば幸いです。

時間を見つけて、本記事を元にいくつか検証などを行い、記事を更新していきたいと思います。

  • この記事の目的

OCI FSSのおおまかな概要を理解できること。
OCI FSSの公式ドキュメントを参考にして、各ページに点在している内容を本記事に集約・要約すること。

  • この記事の対象読者

OCIでファイルシステムを使用したい方
OCI FSSの仕様を理解したい・思い出したい方

OCI FSSの概要説明

ref:
ファイル・ストレージの概要
File Storageに関するよくある質問
ファイル・システム内のパス
マウント・ターゲットの管理
NFSエクスポートおよびエクスポート・オプションの使用

OCI FSSの正式名称はOracle Cloud Infrastructure File Storage Serviceです。
これを省略してOCI FSSもしくは単にファイルシステムと表記されることが多いです。

OCI FSSは、ファイルシステムのデータを永続的に保存し、
ネットワーク経由でアクセスできるようにするための冗長で耐障害性のある共有ファイルストレージのマネージドサービスです。
スナップショットを使用し任意の時点へ切り戻すことができます。
主に共有ファイルシステムを必要とするアプリケーションに使用されます。

コアコンポーネントは以下の通りです。

  • ファイル・システム
  • マウント・ターゲット
  • エクスポート
  • NFSエクスポート・オプション
  • エクスポート・パス

主な特徴

コアコンポーネント

ファイル・システム

FSSにデータを格納するためのデータストレージです。
マウント・ターゲットをアタッチすることにより、ファイル・システムへアクセスすることが可能になります。
FastConnectもしくはVPNを使用することによりオンプレミスからのアクセスも可能です。
ファイル・システム作成時に1つのコンパートメントと1つの可用性ドメインを指定し作成します。
テナンシ毎に1可用性ドメインにつき最大100ファイルシステムを作成できます。

マウント・ターゲット

マウント・ターゲットを介してファイル・システムへアクセスします。
特定のサブネットに紐づきます。
サブネットについてはマウント・ターゲット用に独立していることが推奨されています。
1つのマウント・ターゲットに最大100ファイルシステムを紐づけることができます。
このマウント・ターゲットにIPアドレスが割り当てられ、それを使用してクライアントからマウント設定を行います。

エクスポート

クライアントからマウント・ターゲットに接続してファイルシステムにアクセスする際にこのエクスポートを使用して制御を行います。
マウント・ターゲットには1つ以上のエクスポートを含むエクスポート・セットが紐づけられます。

NFSエクスポート・オプション

クライアントがマウント・ターゲットに接続する際に付与されるアクセス権レベルを指定するパラメータです。
これを使用することで、後述するネットワーク・セキュリティレイヤーのみを使用するより詳細なアクセス制御を行うことができます。
例えば、

10.0.0.0/16 -> アクセス許可: 読み取り専用
10.0.1.0/24 -> アクセス許可: 読み取り/書き込み

のようにIPやCIDRブロックごとにクライアントの権限を制御したり
指定したUID,GUIDを匿名UID,GUID(Squash UID, Squash GID)としてマッピングできます。

エクスポート・パス

ファイル・システム作成時に、マウント・ターゲットと関連付けるために設定されるユニークなパスです。
このパスはファイルシステム内やクライアントのインスタンス内のディレクトリパスとは無関係です。
マウント・ターゲットに紐づいているファイルシステムを論理的に区別するために使用されます。

例えば、/test-fss というエクスポート・パスを作成したとします。
マウント・ターゲットのIPが 10.0.1.160 であるとします。

Oracle Linux 8 を使用したVMインスタンスの /mnt/test-fss にマウント設定を行う場合は以下のように行います。

$ sudo mount 10.0.1.160:/test-fss /mnt/test-fss
### 正常に設定されればレスポンスは無い

### マウントの確認
$ df -h | grep test-fss
10.0.1.160:/test-fss        9.3E     0  9.3E   0% /mnt/test-fss

オートスケーリング

ref:
OCI技術資料: ファイル・ストレージ概要
ファイル・システムの使用料及び測定

測定された使用率に基づき自動的にスケーリングされます。
使用率の計測は毎時サイクルで行われます。そのためFSSが使用率の計測結果を反映させるには最大1時間かかる可能性があります。
(計測値が更新される間にストレージ使用量が大きく変わった場合どうなるか気になるところですがよい検証方法が思いつかないため未確認)
最大で8エクサバイトまでスケーリング

計測に使用される値は meteredBytes です。

$ export FILE_SYSTEM_OCID=<file-system-ocid>
$ oci fs file-system get --file-system-id $FILE_SYSTEM_OCID | \
  jq '.data | { name: ."display-name", "metered-bytes": ."metered-bytes"}'

{
  "name": "test-fss",
  "metered-bytes": 0 ### ここの値が計測に使用される
}

ref: oci fs file-system get

データの冗長性

ref:
ファイル・システム・レプリケーション
File Storageに関するよくある質問

FSSは、別の可用性ドメインや別のリージョンにレプリケーションすることが可能です。
レプリケーションでは1つのファイルシステム毎に最大で3つのレプリケーションを作成できます。

主な概念的なコンポーネントは以下の通りです。
(このほかにもいくつかあります。)

  • ソース・ファイル・システム
  • ターゲット・ファイル・システム
  • レプリケーション・リソース
  • レプリケーション・ターゲット・リソース
  • レプリケーション・スナップショット

レプリケーションには、ソース・ファイル・システムにアタッチされたレプリケーションリソースを作成する必要があります。
レプリケーション・リソースはソース・ファイル・システムのデータをターゲット・ファイル・システムに同じファイルとディレクトリ構造、スナップショット、メタデータおよび権限設定でレプリケートされます。
ターゲット・ファイル・システムを別可用性ドメインや別リージョンにすることで冗長構成にすることが可能です。(もちろん同一ドメイン・同一リージョンでも可能です。)

このターゲット・ファイル・システムはエクスポートされていないもののみが指定できます。
レプリケーションされたターゲット・ファイル・システムは読み取り専用となり、レプリケーションによってのみ更新されます。

ソース・ファイル・システムとターゲット・ファイル・システムの推奨リージョンの組み合わせは以下を参照してください。
推奨ターゲット・リージョン

耐久性

ref:
File Storageに関するよくある質問

99.999999999%(イレブン・ナイン) の耐久性を有するとのこと

  1. NFSv3プロトコルのサポート

ドキュメントを見る限りだとNFSv3のサポートのみ明記されています。
(NFSv4はまだサポートされていない…?)

バックアップ機能

ref:
スナップショットの管理
OCI技術資料: ファイル・ストレージ概要 P26

スナップショットを使用したバックアップが可能です。

スナップショットはファイルシステム全体をスコープとして作成されます。
スナップショットはPoint-in-Time-Viewで作成され、保存されているすべてのファイルとスナップショット・データを暗号化して保存されます。
設定したスケジュールに従って自動的にスナップショットが作成されます。
スナップショットは ファイル・システムの ルートディレクトリに作成される .snapshot/ というディレクトリに保存されます。

また、このスナップショットを使用してFSSのクローンを作成することも可能(ソース・ファイル・システムと同一AD内でのみ作成可能)
このクローンはソース・ファイル・システムとは同期されていないため、お互いのデータ変更は反映されません。

セキュリティ機能

ref:
ファイル・ストレージのセキュリティについて
Identity and Access Managementの概要
ファイル・ストレージ・サービスの詳細(IAM)

以下のレイヤー・オプションでアクセス制御を行えるようです。

  • OCI ポリシー・レイヤー

OCI IAMで作成したポリシーで権限を制御し「リソース作成、リソースの変更、リソースのアクセス」を制御することができます。

  • ネットワーク・セキュリティ

NSG(ネットワークセキュリティグループ), NSL(ネットワークセキュリティリスト)を使用して
特定のIPアドレスやCIDRブロックからのみアクセス許可をしたり、ブロックを行うことができます。

  • NFS v.3 Unixセキュリティ
    今後のアップデートで追記予定

https://docs.oracle.com/ja-jp/iaas/Content/File/Concepts/securitylayers.htm#About_Security__NFS

  • NFS v.3 Kerberosセキュリティ
    今後のアップデートで追記予定

https://docs.oracle.com/ja-jp/iaas/Content/File/Concepts/securitylayers.htm#About_Security__kerberos

  • NFSエクスポート・オプション

ネットワーク・セキュリティレイヤー、NFS v.3 Unixセキュリティの両方へアクセス制御を適用するオプションです。
NFSエクスポート・オプションを使用して、関連付けられたマウント・ターゲットを介してIPアドレス・CIDRブロック別にエクスポートへのアクセスを制限できます。
また、ファイル・システムのr,rw,root-squashの設定を行えます。

暗号化機能

全てのデータはFSSへの保存中に暗号化されます。
現時点ではAESのみサポートされています。
OCI Vaultを使用して暗号化を行うことも可能です。

権限管理

OCI FSSに対するリソースタイプは以下の通りです。

  • 集約リソース・タイプ(後述する個々のリソース・タイプ全てを含むリソース・タイプ)
file-family
  • 個々のリソース・タイプ
file-systems
filesystem-snapshot-policies
mount-targets
outbound-connectors
export-sets
replications
replication-targets
work-requests
  • 記述例
### ポリシーの基本的な構文
### Allow group <group_name> to <verb> <resource-type> in compartment <compartment_name>

### test-fss-groupグループ所属のユーザーへ、テナンシにあるFSS操作の全権限を付与
Allow group test-fss-group to manage file-family in tenancy

### test-fss-groupグループ所属のユーザーへ、aaaコンパートメントにあるmount-targetsの読み取り権限を付与
Allow group test-fss-group to read mount-targets in compartment aaa

### test-fss-groupグループ所属のユーザーへ、bbbコンパートメントにある特定のFSSへのuse権限を付与
Allow group test-fss-group to use file-systems where target.file-system.id='ocid1.filesystem.oc1..xxxxxxx' in compartment bbb

料金体系

ref:
Oracle Cloudのコスト試算ツール
Cloud Storageの価格設定

基本的に従量課金です。
容量 * 時間 で計算を行います。
パフォーマンス・レベル Standard, ストレージ容量 1GB = $0.30/月

パフォーマン・レベル ストレージ容量 月額料金
Standard 1GB $0.30
20GB 20,000GB $9,000
40GB 40,000GB $12,000
80GB 80,000GB $24,000

おわりに

まとめ

OCI FSSについて仕様をまとめてみました。
詳細な仕様までは網羅しておりませんが、大まかな概要がつかめればいいなぁと思います。

誤りや不備がありましたらご指摘いただけると幸いです。
また、こういった仕様も追記するとよりわかりやすいなど要望ありましたらそちらも連絡いただけるとありがたく思います。
最後まで読んでいただきありがとうございました。

参考資料・ドキュメント

Discussion