25 NFS Ganesha #
NFS Ganeshaは、オペレーティングシステムカーネルの一部としてではなく、ユーザアドレススペースで動作するNFSサーバです。NFS Ganeshaを使用することで、Cephなど独自のストレージメカニズムをプラグインして、任意のNFSクライアントからアクセスできます。詳細については、8.3.6項 「NFS Ganeshaの展開」を参照してください。
NFSゲートウェイ経由でCephにアクセスすると、ネイティブのCephFSと比較してアプリケーションのパフォーマンスが大幅に低下する場合があります。これは、プロトコルオーバーヘッドが増加し、クライアントとストレージ間の余分なネットワークホップによって追加の遅延が発生するためです。
各NFS Ganeshaサービスは次のような階層状の設定から構成されます。
ブートストラップ用の
ganesha.conf
サービスごとのRADOS共通設定オブジェクト
エクスポートごとのRADOS設定オブジェクト
ブートストラップ設定は、コンテナ内でnfs-ganesha
デーモンを起動するために最小限必要な設定です。各ブートストラップ設定には%url
ディレクティブが含まれます。このディレクティブにより、必要に応じてRADOS共通設定オブジェクトから追加の設定が読み込まれます。共通設定オブジェクトには追加の%url
ディレクティブを含めることができます。このディレクティブはエクスポートRADOS設定オブジェクトで定義された各NFSエクスポートを対象とするものです。
25.1 NFSサービスの作成 #
Cephサービスの展開内容を指定する方法としては、YAMLフォーマットのファイルを作成して、展開したいサービスの仕様を記載することをお勧めします。サービスの種類ごとに個別の仕様ファイルを作成できます。また、複数(もしくは、すべて)の種類のサービスを1つのファイルで指定することも可能です。
選択した方法に応じて、NFS Ganeshaサービスを作成するために関連するYAMLフォーマットのファイルのアップデートまたは作成が必要になります。ファイルの作成の詳細については、8.2項 「サービス仕様と配置仕様」を参照してください。
ファイルのアップデートまたは作成が完了したら、次のコマンドを実行してnfs-ganesha
サービスを作成してください。
cephuser@adm >
ceph orch apply -i FILE_NAME
25.2 NFS Ganeshaの起動または再起動 #
NFS Ganeshaサービスを起動してもCephFSファイルシステムは自動的にエクスポートされません。CephFSファイルシステムをエクスポートするには、エクスポート設定ファイルを作成します。詳細については、25.4項 「NFSエクスポートの作成」を参照してください。
NFS Ganeshaサービスを起動するには、次のコマンドを実行します。
cephuser@adm >
ceph orch start nfs.SERVICE_ID
NFS Ganeshaサービスを再起動するには、次のコマンドを実行します。
cephuser@adm >
ceph orch restart nfs.SERVICE_ID
単一のNFS Ganeshaデーモンを再起動したいだけなら、次のコマンドを実行します。
cephuser@adm >
ceph orch daemon restart nfs.SERVICE_ID
NFS Ganeshaが起動または再起動した時点では、NFS v4に90秒の猶予タイムアウトが設定されています。猶予期間中、クライアントからの新しい要求はアクティブに拒否されます。したがって、NFSが猶予期間の場合、クライアントで要求の低速化が発生することがあります。
25.3 NFS回復プールのオブジェクトの一覧 #
NFS回復プールのオブジェクトを一覧にするには、次のコマンドを実行します。
cephuser@adm >
rados --pool POOL_NAME --namespace NAMESPACE_NAME ls
25.4 NFSエクスポートの作成 #
NFSエクスポートは、Cephダッシュボードで作成することも、コマンドラインで手動で作成することもできます。Cephダッシュボードを使用してエクスポートを作成するには、第7章 「NFS Ganeshaの管理」を参照してください。具体的には、7.1項 「NFSエクスポートの作成」を参照してください。
NFSエクスポートを手動で作成するには、エクスポート用の設定ファイルを作成します。たとえば、次の内容が含まれるファイル/tmp/export-1
。
EXPORT { export_id = 1; path = "/"; pseudo = "/"; access_type = "RW"; squash = "no_root_squash"; protocols = 3, 4; transports = "TCP", "UDP"; FSAL { name = "CEPH"; user_id = "admin"; filesystem = "a"; secret_access_key = "SECRET_ACCESS_KEY"; } }
新しいエクスポートの設定ファイルを作成して保存したら、次のコマンドを実行してエクスポートを作成します。
rados --pool POOL_NAME --namespace NAMESPACE_NAME put EXPORT_NAME EXPORT_CONFIG_FILE
例:
cephuser@adm >
rados --pool example_pool --namespace example_namespace put export-1 /tmp/export-1
希望するcephx
ユーザIDとシークレットアクセスキーが含まれるように、FSALブロックを修正する必要があります。
25.5 NFSエクスポートの確認 #
NFS v4は疑似ファイルシステムのルートにエクスポートのリストを作成します。NFS Ganeshaサーバノードの/
をマウントすることで、NFS共有がエクスポートされたことを確認できます。
#
mount
-t nfs nfs_ganesha_server_hostname:/ /path/to/local/mountpoint#
ls
/path/to/local/mountpoint cephfs
デフォルトでは、cephadmがNFS v4サーバを設定します。NFS v4はrpcbind
デーモンともmountd
デーモンとも対話しません。showmount
のなどのNFSクライアントツールは設定済みエクスポートを表示しません。
25.6 NFSエクスポートのマウント #
エクスポートされたNFS共有をクライアントホストにマウントするには、次のコマンドを実行します。
#
mount
-t nfs nfs_ganesha_server_hostname:/ /path/to/local/mountpoint
25.7 複数のNFS Ganeshaクラスタ #
複数のNFS Ganeshaクラスタを定義できます。これにより、次のことが実現できます。
CephFSへのアクセスのために分離されたNFS Ganeshaクラスタ。