4.9. Ceph Object ゲートウェイを使用した NFS の設定
Ceph Object Storage バックエンドを備えた NFS は、包括的な NFS サービスではありません。その目的は主に、NFS ファイルシステムを介してデータを取り込むことにより、ファイルを使用するレガシーアプリケーションを Ceph オブジェクトストレージを使用してオブジェクトストレージにシームレスに移行できるように支援することです。その後、データは S3 バケットとして S3 エンドポイント経由でアクセス可能になります。高可用性や透過的なフェイルオーバーなどの機能を備えた完全な NFS ソリューションを実現するには、CephFS バックエンドがある NFS を使用する必要があります。
NFS サービスは、Cephadm を使用して Ceph Object Storage バックエンドと合わせてデプロイされます。NFS の設定は nfs-ganesha プールに保存され、エクスポートはコマンドラインインターフェイス (CLI) コマンドと Ceph Dashboard を使用して管理されます。詳細は、Ceph Object Storage バックエンドを使用した NFS サービスのデプロイ、名前空間の NFS-Ganesha へのエクスポート、および NFS Ganesha エクスポートの管理 を参照してください。
Ceph Object Gateway 名前空間は、従来の HTTP アクセスプロトコル (S3 および Swift) とともに、ファイルベースの NFSv4 プロトコル経由でエクスポートできます。特に、Ceph Object Gateway は、NFS-Ganesha NFS サーバーに組み込むときにファイルベースのアクセスを提供するように設定できるようになりました。
Cephadm ベースまたは Rook ベースのデプロイメントを使用する場合、NFSv4 プロトコルのみがサポートされます。
名前空間の表記規則
NFS は、UNIX 形式のパス名を S3 バケットおよびオブジェクトにマッピングする Amazon Web Services (AWS) 階層名前空間の規則に準拠しています。
アタッチされた名前空間の最上位レベルは、NFS ディレクトリーとして表される S3 バケットで構成されます。バケットに従属するファイルとディレクトリーはそれぞれ、S3 接頭辞と区切り文字の規則に従ってオブジェクトとして表されます。サポートされているパス区切り文字は / のみです。
たとえば、NFS クライアントが /nfs
に RGW 名前空間をマウントしている場合、NFS 名前空間内の /nfs/mybucket/www/index.html
ファイルは、mybucket
バケット/コンテナー内の RGW オブジェクト www/index.html
に対応します。
サポートされている操作の制限
Ceph Object Storage NFS インターフェイスは、次の制限付きで、ファイルとディレクトリーに対するほとんどの操作をサポートします。
- シンボリックリンクを含むリンクはサポートされていません。
NFS ACL はサポートされていません。
- Unix ユーザーおよびグループの所有権と権限がサポートされています。
ディレクトリーを移動したり名前を変更したりすることはできません。
- ファイルはディレクトリー間で移動される場合があります。
完全な順次書き込み I/O のみがサポートされます。
- 書き込み操作は アップロード に制限されます。
- ファイルの直接編集などの一般的な I/O 操作の多くは、非順次的な保存を実行するため失敗します。
- GNU tar の一部のバージョンなど、順次書き込みを行う一部のファイルユーティリティーでは、まれに非順次ストアが原因で失敗する場合があります。
-
NFS 経由でマウントする場合、通常、同期マウントオプションを使用して、順次アプリケーション I/O を NFS サーバーに順次書き込むように制限できます。たとえば、Linux では
-osync
です。 - MS Windows など、同期的にマウントできない NFS クライアントは、ファイルをアップロードできません。
4.9.1. NFS-Ganesha への名前空間のエクスポート
Ceph Object Gateway で使用する新たな NFS Ganesha エクスポートを設定するには、Red Hat Ceph Storage Dashboard を使用する必要があります。詳細は、Red Hat Ceph Storage ダッシュボードガイド の Ceph Dashboard の NFS Ganesha エクスポートの管理 セクションを参照してください。
Ceph Object Gateway を使用する既存の NFS 環境では、現時点で Red Hat Ceph Storage 4 から Red Hat Ceph Storage 5 へのアップグレードはサポートされません。
Red Hat は、Ceph Object Gateway を使用した NFS バージョン 4 エクスポートのみをサポートします。
ユーザーレベルの NFS Ganesha エクスポートの作成は、コマンドラインインターフェイス (CLI) しか使用できません。
前提条件
- 実行中の Red Hat Ceph Storage。
- ユーザーが作成されている。詳細は、ユーザーの作成 を参照してください。
手順
Cephadm シェルにログインします。
構文
[root@host01 ~]# cephadm shell
ルートディレクトリーにユーザーレベルのエクスポートを作成します。
構文
ceph nfs export create rgw --cluster-id NFS_CLUSTER_NAME --pseudo-path PATH_FROM_ROOT --user-id USER_ID
例
[ceph:root@host01 /]# ceph nfs export create rgw --cluster-id cluster1 --pseudo-path root/testnfs1/ --user-id nfsuser
NFS をマウントします。
構文
mount -t nfs IP_ADDRESS:PATH_FROM_ROOT -osync MOUNT_POINT
例
[ceph:root@host01 /]# mount -t nfs 10.0.209.0:/root/testnfs1 -osync /mnt/mount1
200 GB を超える大規模なアップロードの場合、-osync
を使用してマウントすると、入出力操作に影響する可能性があります。このようなオブジェクトをアップロードするには、マルチパートの S3 を使用します。
バケットに対して setattr
を実行すると、バケットを表すパス上の属性の設定が暗黙的に防止されます。