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_NAME25.2 NFS Ganeshaの起動または再起動 #
NFS Ganeshaサービスを起動してもCephFSファイルシステムは自動的にエクスポートされません。CephFSファイルシステムをエクスポートするには、エクスポート設定ファイルを作成します。詳細については、25.4項 「NFSエクスポートの作成」を参照してください。
NFS Ganeshaサービスを起動するには、次のコマンドを実行します。
cephuser@adm > ceph orch start nfs.SERVICE_IDNFS Ganeshaサービスを再起動するには、次のコマンドを実行します。
cephuser@adm > ceph orch restart nfs.SERVICE_ID単一のNFS Ganeshaデーモンを再起動したいだけなら、次のコマンドを実行します。
cephuser@adm > ceph orch daemon restart nfs.SERVICE_IDNFS Ganeshaが起動または再起動した時点では、NFS v4に90秒の猶予タイムアウトが設定されています。猶予期間中、クライアントからの新しい要求はアクティブに拒否されます。したがって、NFSが猶予期間の場合、クライアントで要求の低速化が発生することがあります。
25.3 NFS回復プールのオブジェクトの一覧 #
NFS回復プールのオブジェクトを一覧にするには、次のコマンドを実行します。
cephuser@adm > rados --pool POOL_NAME --namespace NAMESPACE_NAME ls25.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クラスタ。
