※本ページは、”Exadata Versatility: NFS on Exascale ACFS for Scalable, Shared File Access“の翻訳です。

(訳注:本記事はオンプレミス環境のExascaleでの内容になります。Exadata Cloud 環境の Exascale 環境には適用されません。)


Alex Blythは、「ExascaleボリュームでのACFSファイルシステムを作成」という優れたブログを書いています。Alexは、ボリュームの作成、アタッチメント、使用などのタスクを含む、Exascale環境内でACFS形式のボリュームを作成および構成する方法の詳細を示します。

このブログでは、上記のブログを拡張して、ACFSファイルシステムの上にNFSエクスポートをレイヤー化するプロセスを説明します。ACFSボリュームが存在してマウントされると、NFSを使用してネットワークを介してそのリソースをシームレスに共有できます。NFS経由でExascale ACFSボリュームをエクスポートすると、クラスタ間、およびExadata以外のプラットフォームやアプリケーションとのシームレスなファイル共有が可能になります。これは、データベース・インフラストラクチャに直接接続することなく、アプリケーション、ツールまたはユーザーがログ、エクスポート、レポート、共有構成などのファイルにアクセスする必要がある環境で特に役立ちます。このユースケースでは、Exadataストレージのユーティリティをデータベース・ワークロードを超えて、異機種環境での汎用ファイル・アクセスに拡張します。

Exadata Versatility: NFS on Exascale ACFS for Scalable, Shared File Access

Exascale ACFSでのNFSのオーバーレイ

この図は、Exadata ExascaleのACFSボリュームでのNFSでのエクスポートに関連するプロトコル・レイヤーおよび機能フローをキャプチャし、次の設定に役立つ内容を記載します。Exascale ACFS環境でNFSアクセスを可能にするコンポーネントおよびフローを視覚的に接続します。

次の項では、Exadata上のOracle ACFSボリュームにNFSファイル・システム・オーバーレイを設定するためのステップバイステップ・ガイドを示します。さらに調査する前に、Oracle ACFS NAS Maximum Availability Extensions (Oracle ACFS NAS|MAX)という用語は、ACFSおよびClusterwareリソースを使用してACFSまたはSMB over ACFSの実行をサポートする一連のテクノロジを指していることを明確にしておくと役立ちます。

 

ACFSボリュームの確認

前述の参照したブログでは、ACFSボリュームが作成され、設定プロセス中にacfs2という名前が付けられます。このブログでは、一貫性を維持し、前のブログとの整合性を確保するために、同じボリューム名acfs2を使用しています。このACFSボリュームが存在することを確認します。df -hコマンドは、サイズ、使用状況、使用可能な領域など、マウントされたファイルシステムに関する詳細情報を提供します。出力例を示します。ACFS固有の統計の詳細は、acfsutil info fsコマンドを使用できます。

[root@exadpmvm05 ~]# df -h /acfs2
Filesystem                Size  Used Avail Use% Mounted on
/dev/exc/acfsvol2          50G  651M   50G   2% /acfs2

構成済およびマウント済/アクティブなACFSファイル・システムを表示するには、いくつかのsrvctlユーティリティ・コマンドを使用できます。これらのコマンドを実行して構成を確認することをお薦めします。

[root@exadpmvm05 ~]# srvctl config filesystem
Volume device: /dev/exc/acfsvol2
Canonical volume device: /dev/exc/acfsvol2
Accelerator volume devices:
Mountpoint path: /acfs2
Mount point owner: root
Mount point group: root
Mount permissions: owner:root:rwx,pgrp:root:r-x,other::r-x
Mount users: oracle
Type: ACFS
Mount options:
Description:
ACFS file system is enabled
ACFS file system is individually enabled on nodes:
ACFS file system is individually disabled on nodes:

[root@exadpmvm05 ~]# srvctl status filesystem
ACFS file system /acfs2 is mounted on nodes exadpmvm05

 

ACFSマウント・ポイントへのファイルのステージング

作成される新しいNFSマウント上のデータにクライアントがアクセスできるようにするには、まず必要なディレクトリとファイルを取り込む必要があります。必要なファイルはすべて、NFSを使用してエクスポートされるACFSマウント・ポイントに転送する必要があり、クライアントが意図したとおりにデータを読取りまたは変更できるように、適切な権限を設定する必要があります。たとえば、以下の例では sample.txt のテキスト・ファイルは、NFSクライアントによるアクセスを目的としたサンプル・ファイルとしてロードされています。

[root@exadpmvm05 acfs2]# ls -la /acfs2
total 8870586
drwxr-xr-x  5 root  root  32768 Jul  8 13:25 .
drwxr-xr-x 21 root  root   4096 Jul  4 09:45 ..
-rw-rw-r--  1 root  root 529792 Jul  7 02:07 sample.txt

ACFS環境が確認され、NFSクライアントからアクセスするためのデータが準備されたので、NFS環境を設定します。

 

NFSエコシステムの設定

まず、nfs-utilsパッケージがExadataにインストールされているかどうかを確認します。パッケージがインストールされている場合は、RPM問合せの実行時にパッケージ名とバージョンが表示されます。

詳細の前に、関する短いノートで用語の明確化します。

  • nfs-utils :Oracle Linuxの実際のパッケージ名で、NFSサーバーの実行に必要なツールを提供
  • NFS Server : NFSを介してディレクトリを共有するネットワーク・サービスを指す
[root@exadpmvm05 ~]# rpm -q nfs-utils
nfs-utils-2.3.3-59.0.2.el8.x86_64

テキスト・ブロックに示されている出力には、nfs-utils-2.3.3-59.0.2.el8.x86_64が表示されます。nfs-utilsパッケージは、LinuxでNFSサーバーを構成、管理および実行するために必要な重要なユーティリティおよびバックグラウンド・サービスを提供します。nfs-utilsがインストールされている場合は、出力にバージョン番号が表示されることがあります。nfs-utilsがインストールされていない場合、出力にはインストールされていないことが示され、Oracleでテストされたパッケージおよび依存関係のインストールが必要になります。nfs-utilsをインストールすると、サーバー・ディレクトリをネットワーク経由でエクスポートできるため、クライアントはNFSプロトコルを介してファイル・システムをマウントおよびアクセスできます。

 

nfs-utils RPMパッケージのインストール

nfs-utilsがインストールされていない場合は、パッケージのインストールが必要です。インストールは、スクリプトを使用して手動または自動で実行できます。このコード・ブロックは、コマンドラインで直接dnfコマンドを実行するか、デプロイメント・スクリプトに組み込む方法を示しています。Alex Blythには別の優れたブログ「Exadata Databaseサーバー更新用のULNミラーの作成」があります。このブログでは、Exadata固有のyum/dnfチャネルにアクセスする方法について説明し、ExadataシステムがOracleによってテストされたパッケージおよび依存関係を使用してのみ構成されるようにしています。このブログは、Oracleによってテストされた正しいソフトウェア・チャネルを使用してExadataシステムを構成し、汎用リポジトリの使用によって発生する可能性のある互換性および依存関係の問題を回避するために、必読の資料です。

[root@exadpmvm05 ~]# sudo dnf install nfs-utils

このコマンドは、NFSサーバーの機能に必要なNFSユーティリティーおよび依存関係をダウンロードしてインストールします。ユーザーは、サポートおよび互換性を維持するために、Exadata固有のyum/dnfチャネルが使用されていることを確認する必要があります。

nfs-utilsは、再起動後にファイル・システムを再エクスポートします。ただし、ACFSおよびEDVファイル・システムでは、EDVおよびACFSの追加の依存関係を処理するために、Oracle ACFS NAS|MAXまたは別のスクリプト・ソリューションが必要です。詳細は、次の「Oracle ACFS NAS|MAX」の項を参照してください。

 

NFSサーバーの起動と有効化

nfs-utilsがインストールされたことを確認したら、以下のコマンド・ボックスで示すようにNFSサーバーを有効にして起動します。動詞「start」と「enable」は重なり合っているように見えるので、それが何を意味するのかについて、いくつかの説明があります。

  • enable: ブート時に自動的に開始するようにサービスを構成します。–nowフラグは、現在のセッションでサービスをただちに開始します。
  • start: このコマンドは、指定されたサービスをただちに開始しますが、ブート時に開始することはできません。
# Preferred
[root@exadpmvm05 ~]# sudo systemctl enable --now nfs-server 

# OR else use:
[root@exadpmvm05 ~]# sudo systemctl start nfs-server

# NOTE: Use one of the two above commands. If the chosen command exits 
# without errors, the NFS Server has been started/enabled

前述のコマンド・シーケンスでは、NFSサーバー・サービスを有効にして起動し、ExadataでNFSエクスポートを処理できるようにしています。

 

NFSサーバーのステータスの確認

NFSサーバーが正しく動作していることを確認するために、そのステータスをチェックできます。

[root@exadpmvm05 ~]# sudo systemctl status nfs-server
   nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
   Active: active (exited) since Tue 2025-07-08 14:56:34 PDT; 2h 5min ago
  Process: 165802 ExecStart=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl 
             reload gssproxy ; fi (code=exited, status=0/SUCCESS)
  Process: 165785 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS)
  Process: 165783 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
 Main PID: 165802 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 319999)
   Memory: 0B
   CGroup: /system.slice/nfs-server.service

Jul 08 14:56:34 exadpmvm05.us.oracle.com systemd[1]: Starting NFS server and services...
Jul 08 14:56:34 exadpmvm05.us.oracle.com systemd[1]: Started NFS server and services.

ステータス・メッセージは、NFSサーバー・サービス(nfs-server.service)が有効化され、テスト・システムで現在アクティブであることを示します。

  • 「loaded: loaded」という接頭辞が付いた行は、サービスが正しくインストールされ、ブート時に自動的に起動するように設定されていることを確認します。
  • 「active: active (exited)」ステータスは、サービスのメイン・プロセスが起動し、初期化が正常に完了したことを意味します。
  • 他のログ・メッセージは、NFSエクスポートのリフレッシュやrpc.nfsdなどの依存コンポーネントの起動などの前提条件のアクションがエラーなしで完了したことを示しています。

テキストボックス内のメッセージは、NFSサーバーが正しく設定され、初期化され、NFS共有を処理する準備ができていることを確認します。

 

クライアント・サブネット・アクセスの有効化

このブログのサポートに使用されるテスト環境では、クライアント・アクセスは、acfs2という名前のACFSボリュームのIPアドレス10.31.13.234を持つマシンに明示的に付与されます。このアクセスを有効にするには、目的のクライアントのエクスポート権限を指定して、Exadataサーバーに/etc/exportsファイルへのエントリが追加されます。この構成では、NFSを介して/acfs2ファイル・システムへの読取りおよび書込みアクセスが10.31.13.234で指定されたクライアントのみに許可されるため、ACFSボリュームの制御されたセキュアな共有が可能になります。特に、エクスポート・オプション内で指定されているFSIDまたはファイル・システムIDのオプションがあります。NFSセマンティクスを使用する特定のACFS機能(rw、sync、fsid=XXXなど)の適切な操作には、エクスポート・オプションが必要です。指定したエクスポート・オプションは次のとおりです。

  • rw: これは「読み書き」の略です。これにより、NFSクライアントは共有ディレクトリに対して読取りと書込みの両方を行うことができます。
  • sync: このオプションを使用すると、サーバーがクライアントのリクエストに応答する前に、ファイルへのすべての変更(書込み、データおよびメタデータの更新)が安定したストレージにコミットされます。これにより、データの信頼性が向上しますが、操作が完了前にディスク書込みの確認を待機するため、パフォーマンスに影響する可能性があります。
  • fsid: NFSエクスポートの一意の識別子を提供します。NFSクライアントは、エクスポートされた異なるファイル・システムを区別するのに役立ちます(特に、2つのパスが同じ基礎となるデバイスを指している場合など)。

単一のIPアドレスのかわりに/17マスクを使用したサブネット全体のアクセスが必要な場合は、/etc/exportsエントリでネットワーク範囲を指定できます。この構成を次に示します。

エクスポート・リファレンス・ページには、エクスポート・オプションおよび構文に関する信頼できるドキュメントがあり、NFSエクスポートがセキュアかつ正しく構成されていることを確認するのに役立ちます。エクスポートを構成する場合は、このドキュメントを参照してください。

# Enabling access for a specific client
[root@exadpmvm05 ~]# sudo sh -c 'echo "/acfs2 10.31.13.234(rw,sync,fsid=2343)" >> /etc/exports'

# Enabling access for a client subnet (this setting supercedes the command above)
[root@exadpmvm05 ~]# sudo sh -c 'echo "/acfs2 10.31.0.0/17(rw,sync,fsid=2343)" >> /etc/exports'

# Verify that /etc/exports is properly populated.
[root@exadpmvm05 ~]# cat /etc/exports
/acfs2 10.31.13.234(rw,sync,fsid=2343)
/acfs2 10.31.0.0/17(rw,sync,fsid=2343)

 

NFSエクスポートの変更のアクティブ化

エクスポート・ファイルを更新してNFS共有とその許可されたクライアントを定義したら、これらの変更を適用して有効にする必要があります。コマンドexportfs -raを実行すると、NFSサーバーに/etc/exportsファイルの再読取りとNFSアクティブ・エクスポート表の更新が指示されます。これにより、新規または変更されたエクスポートがNFSサーバーによってすぐに認識され、NFSサービス全体を再起動することなくクライアントが使用できるようになります。基本的に、このコマンドは構成の変更をシームレスにアクティブ化し、指定されたクライアントが意図したとおりにNFS共有にアクセスできるようにします。

[root@exadpmvm05 acfs2]# sudo exportfs -ra

 

エクスポートがアクティブ化されました。確認する時間です。sudo exportfs -vコマンドは、サーバー上のすべてのアクティブなNFSエクスポートの詳細で詳細なリストを提供します。エクスポートされたディレクトリだけでなく、クライアント・アドレスおよび適用された特定のエクスポート・オプションも表示されます。このコマンドを実行すると、クライアントから現在アクセスできるファイルシステムの検証が可能になり、エクスポートが有効になったことを確認できます。テスト設定からの出力が表示されます。

[root@exadpmvm05 acfs2]# sudo exportfs -v
/acfs2          10.31.13.234(sync,wdelay,hide,no_subtree_check,fsid=2343,sec=sys,rw,secure,no_all_squash)
/acfs2          10.31.0.0/17(sync,wdelay,hide,no_subtree_check,fsid=2343,sec=sys,rw,secure,no_all_squash)

 

NFSサーバーがインストールされ、ACFSボリュームが適切にマウントおよびエクスポートされたら、次のステップは共有ファイルシステムにアクセスするようにNFSテスト・クライアントを構成することです。ExadataサーバーのIPアドレスとエクスポートされたディレクトリ(/acfs2)がわかっている必要があります。NFSクライアント・システムでは、LinuxマシンかmacOSワークステーションかにかかわらず、NFSユーティリティがすでにインストールされている必要があります。最新のほとんどのシステムではNFSサポートが組み込まれていますが、組み込まれていない場合は、適切なNFSクライアントパッケージをインストールする必要があります。

 

NFSクライアントでのNFSマウントの実行

ACFSボリュームをマウントするために、NFSクライアント上のローカル・ディレクトリが作成され、マウント・ポイントとして使用されます。次に、mountコマンドを使用して、Exadata NFSサーバーの実際のIPまたはDNS名でNFSエクスポートに接続します。構成が正しく、ネットワーク接続が機能している場合、クライアントはACFSエクスポート内のファイルをローカル・ディレクトリであるかのように参照、読取りおよび書込みできます。問題が発生した場合は、ファイルおよびディレクトリのアクセス権の確認が必要であり、接続性を保証するには、サーバーとクライアントの両方でファイアウォールの設定とアクセス制御の検証が必要です。テストまたは使用が完了すると、オプションでシェアをアンマウントできます。ここではアンマウントについては説明しません。

# Create local mount directory on the NFS client
[root@nfsclient ~]# mkdir ~/acfs2

# Connect to the NFS export using the IP address of the server
[root@nfsclient ~]# sudo mount -v -t nfs 10.31.13.232:/acfs2 ~/acfs2
mount.nfs: timeout set for Tue Jul  8 16:19:00 2025
mount.nfs: trying text-based options 'vers=4.2,addr=10.31.13.232,clientaddr=10.31.13.234'

 

NFSクライアントがエクスポートしたACFSボリュームをExadataからマウントすると、共有ファイルシステムにローカル・ディレクトリであるかのようにシームレスにアクセスできます。クライアントのマウント・ポイントに移動すると、NFSクライアントにはACFSボリュームに存在するすべてのファイルおよびフォルダが表示され、サーバーによって設定された権限に従ってデータの読取り、書込みおよび変更が可能になります。この直接的な可視性により、容易なコラボレーション、データ転送、およびクライアント側のアプリケーションやワークフローとの統合が可能になります。

次のコマンド実行によって示されたマウントの成功は、NFS構成が機能し、acfs2 ACFSファイルシステムが標準のNFSプロトコルを介してネットワーク経由で外部クライアントにすぐに使用可能であることを示しています。

[root@nfsclient ~]# cd ~/acfs2
/root/acfs2

[root@nfsclient acfs2]# ls -la
total 8870632
drwxr-xr-x 5 root root  32768 Jul  8 13:25 .
dr-xr-x--- 8 root root    254 Jul  8 16:09 ..
-rw-rw-r-- 1 root root 529792 Jul 7 02:07 sample.txt

NFSクライアントから参照できるファイルは、NFSサーバーで使用可能にしたファイルと同じであることに注意してください。また、サーバーで加えられた変更は、クライアントに即時に反映され、共有データの一貫したビューが確保されます。

 

Oracle ACFS NAS|MAX

ACFSのNFSサポートをできるだけ簡単に構成するために、Oracle ACFSでは、Oracle ACFS NAS|MAXと呼ばれる拡張機能を提供しています。この拡張機能が提供する主な利点の1つは、OSブートアップと、Oracle ACFSファイル・システムとEDV (またはADVM)ボリューム・デバイスの外観の間のタイミングの大幅な短縮です。従来のNFSでは、ブート時にnfs-utilsサービスが/etc/exportsファイルのエクスポートを処理します。ただし、現時点では、Oracle ACFSファイル・システムおよびEDV (またはADVM)ボリューム・デバイスは使用できません。したがって、起動時にNFSの自動エクスポートを実行するには、sysadminがカスタム初期化スクリプトを提供するか、Oracle ACFS NAS|MAXを使用する必要があります。どちらの場合も、Oracle ACFSファイル・システムとEDV (またはADVM)ボリューム・デバイスが使用可能になった後の動的エクスポートを処理する必要があります。Oracle ACFS NAS|MAXでは、必要なファイル・システムごとに一意のFSIDも自動的に確保されます。

 

ACFSを使用した高可用性NFS

Oracle ACFS NFS|MAXでは、NFS + ACFS\EDV\ADVMの構成を簡略化することに加えて、システム可用性の大幅な向上も提供されます。ACFSは、Exadata上のOracle ClusterwareのRACまたはOracle Restart以外の構成で構成できます。これは大きなボーナスです! ACFSボリュームはクラスタ・マウントされ、プライマリ・ノードが使用できなくなった場合は自動的に別のノードにフェイルオーバーされ、継続的なアクセスが保証されます。この設定は、特に外部システムとの統合やクラスタ間データ交換が必要なワークロードにおいて、中断のないファイル共有が重要な本番環境に最適です。

NFSの高可用性は、Oracle ACFS NAS Maximum Availability Extensions (Oracle ACFS NAS|MAX)を使用して実現されます。統合されたアーキテクチャにより、メンテナンス操作やハードウェア障害中でも、共有データへの中断のないアクセスが保証されます。シームレスなフェイルオーバーとNFSクライアントの中断の最小化を実現することで、ミッションクリティカルなエンタープライズ環境に必要な高可用性を提供します。Oracle ACFS NAS|MAXはACFS上に構築されており、これにより、NFS共有はACFSの管理インタフェースと利点を活用できます。ノード障害、フェイルオーバーまたはサービスの再起動が発生しても、ACFSボリュームからのNFSエクスポートは回復力を維持します。Oracle Clusterwareは、ノード間のNFSサービスのフェイルオーバーを管理し、エクスポートされたファイル・システムに継続的にアクセスできるようにします。その結果、ACFSでバックアップされたNFSマウントにアクセスするクライアントは、メンテナンスまたは障害イベント中でも、Exadataのミッションクリティカルな可用性に合せた中断を最小限に抑えることができます。このアプローチにより、ACFSマウントされたNFSは、エンタープライズ・グレードの共有ストレージ・サービスに対して実行可能で堅牢な選択肢となります。

 

Oracle ACFSおよびOracle ACFS NASのリソース|MAX

Oracle ACFS NAS|MAXまたはOracle ACFS NFSサポートの追加アプリケーションのさらなる調査に関心のある方は、次のリソースで詳細なガイダンスを提供します。

 

NFSマルチシステム・アクセス: 重要な考慮事項

複数のクライアント(場合によっては異なるクラスタ)からNFSボリュームにアクセスする場合は、データの整合性を維持するために特定の注意事項とベスト・プラクティスに注意することが重要です。NFSは基本的なファイル・ロック・メカニズムを提供しますが、最終的には、クライアントがアクセスを調整し、アプリケーションで適切なファイルまたはレコード・レベルのロックを利用する必要があります。調整されたロックがないと、複数のクライアントによる同時アクセスによって、競合状態、データ破損、またはファイルの内容の不注意な上書きが発生する可能性があります。Exascale NFSサーバーは共有ファイル・システムを示し、上位レベルの同期を強制したり、競合する操作を防止したりしません。したがって、クライアントはベスト・プラクティスを実装する必要があり、マルチクライアント環境で作業する際の潜在的な問題を回避するために、ファイル・ロックを尊重し、同時読取りおよび同時書込みを適切に管理するアプリケーションのみを有効にすることをお薦めします。

まとめ

ACFSで構成されたExascaleボリューム上のNFSファイルシステムをオーバーレイすると、様々な環境間で重要なデータを共有するための堅牢で柔軟なソリューションが提供されます。このアプローチでは、NFSを介して外部システムへのシームレスな標準ベースのファイル共有を拡張しながら、Exadata Exascaleストレージの高度なスケーラビリティ、高可用性およびデータ管理機能を利用します。ACFSとNFSの長所を組み合わせることで、組織はストレージ・アクセスを統合し、クロス・プラットフォーム・ワークフローをサポートし、パフォーマンスや信頼性を損なうことなくコラボレーションを促進できます。Exadata Exascaleは、企業がセキュアでスケーラブル、将来に対応したアーキテクチャを構築することを可能にし、最新のデータドリブンな運用のための理想的な基盤となります。インフラストラクチャの価値と俊敏性を最大限に高めようとしている場合、Exadata Exascaleの広範で比類のない機能は、最も要求の厳しいストレージおよび共有ニーズに最適な選択肢です。

謝辞

経験豊富なExadata製品マネージャー、技術者、オペレーション・スペシャリストであるAlex Blythからの貴重なインサイトとサポートを提供に感謝します。