25 NFS Ganesha #
NFS Ganeshaは、オペレーティングシステムカーネルの一部としてではなく、ユーザアドレススペースで動作するNFSサーバです。NFS Ganeshaを使用することで、Cephなど独自のストレージメカニズムをプラグインして、任意のNFSクライアントからアクセスできます。詳細については、5.4.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フォーマットのファイルのアップデートまたは作成が必要になります。ファイルの作成の詳細については、5.4.2項 「サービス仕様と配置仕様」を参照してください。
ファイルのアップデートまたは作成が完了したら、次のコマンドを実行してnfs-ganesha
サービスを作成してください。
cephuser@adm >
ceph orch apply -i FILE_NAME
25.2 NFS Ganeshaの起動または再起動 #
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エクスポートを作成するには、次のコマンドを実行します。
希望するcephxユーザIDとシークレットアクセスキーが含まれるように、FSALブロックを修正する必要があります。
cephuser@adm >
rados --pool POOL_NAME --namespace NAMESPACE_NAME put export-1 export-1
25.5 NFSエクスポートの確認 #
NFS v4は疑似ファイルシステムのルートにエクスポートのリストを作成します。NFS Ganeshaサーバノードの/
をマウントすることで、NFS共有がエクスポートされたことを確認できます。
root #
mount
-t nfs nfs_ganesha_server_hostname:/ /path/to/local/mountpointroot #
ls
/path/to/local/mountpoint cephfs
デフォルトでは、cephadmがNFS v4サーバを設定します。NFS v4はrpcbind
デーモンともmountd
デーモンとも対話しません。showmount
のなどのNFSクライアントツールは設定済みエクスポートを表示しません。
25.6 NFSエクスポートのマウント #
エクスポートされたNFS共有をクライアントホストにマウントするには、次のコマンドを実行します。
root #
mount
-t nfs nfs_ganesha_server_hostname:/ /path/to/local/mountpoint
25.7 複数のNFS Ganeshaクラスタ #
複数のNFS Ganeshaクラスタを定義できます。これにより、次のことが実現できます。
CephFSへのアクセスのために分離されたNFS Ganeshaクラスタ。