6.3. Ceph ファイルシステム
任意のディレクトリーの ceph.dir.layout
をフェッチすると、継承された最も近いレイアウトが返される
以前は、ディレクトリーパスがルートに移動して最も近い継承されたレイアウトを見つけられなかったため、特にレイアウトが設定されていないディレクトリーに対してシステムがそのような属性はありませんというメッセージを返していました。
今回の修正により、ディレクトリーパスはルートまでたどり、最も近い継承されたレイアウトを見つけ、ディレクトリー階層から任意のディレクトリーの ceph.dir.layout
を取得します。
subvolumegroup ls
API は、内部のごみ箱ディレクトリー _deleting
をフィルタリングする
以前は、subvolumegroup ls
API は内部のごみ箱ディレクトリー _deleting
をフィルタリングせず、これが原因で subvolumegroup
とリストされていました。
この修正により、subvolumegroup ls
API は内部のごみ箱ディレクトリー _deleting
をフィルタリングし、subvolumegroup ls
API は内部のごみ箱ディレクトリー _deleting
を表示しなくなります。
クラスター内の MDS 間で競合状態による混乱が発生しなくなる
以前は、メッセンジャーのセットアップ中に MDS で競合状態が発生すると、クラスター内の他の MDS 間で混乱が生じ、他の MDS が通信を拒否する原因となっていました。
今回の修正により、競合状態が修正され、MDS 間の正常な通信が確立されます。
MDS は、オンラインスクラブで stray reintegration をトリガーできるようになる
以前は、ストレイの再統合はクライアントの要求によってのみトリガーされ、ストレイ inode をクリアするプロセスが発生し、クライアントによる高価な再帰的なディレクトリーリストが必要になりました。
この修正により、MDS はオンラインスクラブを使用してストレイの再統合をトリガーできるようになりました。
ターゲットディレクトリーがいっぱいの場合、MDS はストレイを再統合する
以前は、リンクのターゲットディレクトリーがいっぱいになった場合、MDS はストレイを再統合せず、縮退した状況でストレイディレクトリーがいっぱいになりました。
この修正により、MDS はサイズの変更が発生しないため、ターゲットディレクトリーがいっぱいの場合でもストレイ統合を続行します。
データがコピーされた後、クローンにクォータが適用される
以前は、ソーススナップショットからデータをコピーする前にクローンのクォータが設定され、ソースからデータ全体をコピーする前にクォータが適用されていました。これにより、ソースのクォータが超過した場合、サブボリュームスナップショットクローンが失敗します。クォータはバイト範囲で厳密に適用されていないため、これは 1 つの可能性として考えられます。
今回の修正により、データのコピー後にクローンにクォータが適用されます。これで、スナップショットクローンは、クォータに関係なく常に成功します。
ceph-mgr
の再起動後に災害復旧の自動化と計画が再開される
以前は、ceph-mgr
の起動時にスケジュールが開始されず、ceph-mgr
の再起動時にスナップショットスケジュールが再開されると想定していたユーザーの災害復旧計画に影響がありました。
今回の修正により、スケジュールは ceph-mgr
の再起動時に開始され、災害復旧の自動化と計画 (スナップショットレプリケーションなど) は、ceph-mgr
の再起動後すぐに再開されます。手動で介入する必要はありません。
mdlog
は、ファイルを開いて読み取るとすぐにフラッシュされる
以前は、読み取り用にファイルを開くと MDS が他のクライアントから Fw 機能を取り消し、Fw 機能が解放されると MDS は mdlog
をすぐにフラッシュできず、Fr 機能をブロックしていました。そのため、mdlog
が 5 秒間隔で定期的にフラッシュされるまで、ファイルを要求するプロセスが約 5 秒間停止していました。
このリリースでは、Fw 機能を開放する際に必要な機能があれば、すぐに mdlog
フラッシュがトリガーされ、ファイルを開いてすばやく読み取ることができます。
特定のクローンの状態ではサブボリュームクローンの削除が許可されなくなる
以前は、クローンが COMPLETED
または CANCELLED
状態ではない場合に、force オプションを使用してサブボリュームのクローンを削除しようとすると、進行中のクローンを追跡するインデックスからクローンが削除されませんでした。これにより、対応する cloner スレッドがクローンを無限に再試行し、最終的に ENOENT
エラーが発生していました。デフォルトの cloner スレッドの数が 4 つに設定された状態で、4 つのクローンを削除しようと試みると、4 つのクローンがすべてブロック状態になり、保留中のクローンが完了しません。
今回のリリースでは、クローンが COMPLETED
または CANCELLED
状態のいずれかでない限り、削除されなくなりました。クローンが削除され、進行中のクローンを追跡するインデックスからのエントリーとともに、クローンスレッドがブロックされなくなりました。その結果、保留中のクローンは引き続き期待どおりに完了します。
新しいクライアントは古い Ceph クラスターと互換性がある
以前は、新しいクライアントは古い Ceph クラスターと互換性がなく、古いクラスターは、不明なメトリックを受け取ると、abort()
をトリガーして MDS デーモンをクラッシュさせていました。
今回の修正により、クライアントの機能ビットを確認し、MDS でサポートされているメトリックのみを収集して送信するようになりました。新しいクライアントは古い ceph と互換性があります。
同時ルックアップおよびリンク解除操作中に Ceph Metadata Server がクラッシュしなくなる
以前は、Ceph クライアントからの同時ルックアップ操作とリンク解除操作でヒットする、コードに配置されたアサートの誤った仮定により、Ceph Metadata Server がクラッシュしていました。
最新の修正により、アサーションは、同時ルックアップおよびリンク解除操作中の仮定が有効である関連する場所に移動され、Ceph Metadata Server がクラッシュすることなく Ceph Metadata Server 操作を提供し続けることになります。
リンクされていないディレクトリーをフェッチするときに、MDS がクラッシュしなくなる
以前は、リンクされていないディレクトリーを取得すると、予測されたバージョンが正しく初期化されず、サニティチェックの実行時に MDS がクラッシュすることがありました。
この修正により、リンクされていないディレクトリーをフェッチするときに、投影されたバージョンと inode バージョンが初期化され、MDS がクラッシュすることなくサニティチェックを実行できるようになります。