第6章 バグ修正
本セクションでは、今回リリースされた Red Hat Ceph Storage で修正されたユーザーに大きな影響を及ぼすバグを説明します。また、セクションでは、以前のバージョンで見つかり修正された既知の問題を説明します。
6.1. Ceph Ansible ユーティリティー
Ceph クラスターのデプロイメント後にレプリケーションプールのサイズを変更できるようになりました。
以前のリリースでは、director を使用して Ceph クラスターをデプロイすると、レプリケーションプールのサイズを増やすことができませんでした。これは、プールサイズのカスタマイズを担当するタスクの問題が原因で、Playbook の再実行時に実行できなくなりました。今回の更新により、クラスターのデプロイメント後にプールサイズを変更できるようになりました。
(BZ#1743242)
Ceph Ansible が Ceph Dashboard のデプロイメント時に複数の grafana
インスタンスをサポートする
以前のリリースでは、マルチノード環境では、1 つのノードのみがサポートされているため、ceph-ansible
は複数の grafana
インスタンスを設定することができませんでした。これにより、残りのノードが未設定のままになりました。今回の更新により、ceph-ansible
は複数のインスタンスをサポートし、Ceph Dashboard のデプロイメント時に Ceph 固有のレイアウトを全 Ceph Monitor ノードに挿入するようになりました。
Dashboard 機能が無効になっていると、Ansible Playbook の purge-cluster.yml
の実行に失敗しなくなりました。
以前のリリースでは、Playbook の purge-cluster-yml
を使用してクラスターをパージすると、Dashboard 機能が以下のエラーメッセージで無効になると失敗していました。
registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.1 msg: '[Errno 2] No such file or directory'
これは、Dashboard_enabled
変数が無視されているために生じました。今回の更新により、dashboard_enabled
変数が適切に処理され、purge-cluster.yml
が正常に実行されるようになりました。
Red Hat Ceph Storage の Red Hat OpenStack Platform へのインストールに失敗しなくなりました。
以前のリリースでは、Red Hat OpenStack Platform 16 で Red Hat Ceph Storage をインストールしようとすると、ceph-ansible
ユーティリティーが応答しなくなり、以下のようなエラーが返されます。
'Error: unable to exec into ceph-mon-dcn1-computehci1-2: no container with name or ID ceph-mon-dcn1-computehci1-2 found: no such container'
これは、ceph-ansible
が、handler_osds.yml の誤ったノードから container_exec_cmd
の値を読み取るために生じました。
今回の更新で、ceph-ansible
は正しいノードから container_exec_cmd
の値を読み取るようになり、インストールは正常に実行されるようになりました。
Ansible が、完了後に norebalance
フラグの設定を解除します。
以前のバージョンでは、Ansible は norebalance
フラグの設定を解除せず、手動で設定する必要がありました。今回の更新で、Ansible Playbook の rolling-update.yml
は、完了後に norebalance
フラグを自動的に設定を解除されるため、手動による設定解除が必要なくなりました。
Ansible は Dashboard が有効な場合にマルチサイト Ceph Object Gateway をアップグレードします。
以前のリリースでは、Red Hat Ceph Storage Dashboard が有効になっていて、Ansible を使用して Red Hat Ceph Storage の新しいバージョンへのアップグレードを試みると、マルチサイト設定のセカンダリー Ceph Object Gateway サイトへのアップグレードに失敗していました。Red Hat Ceph Storage に今回の更新で、セカンダリーサイトのアップグレードが期待どおりに機能するようになりました。
Ceph Ansible が Ansible 2.9 と動作する
以前のリリースでは、ceph-ansible
バージョン 4.0 以降は Ansible バージョン 2.9 では機能しませんでした。これは、ceph-validate
ロールにより Ansible 2.9 に対して ceph-ansible
を実行できなかったために生じました。今回の更新により、ceph-ansible
が Ansible 2.9 と連携するようになりました。
カスタムソフトウェアリポジトリーを使用した Ceph インストールに失敗しなくなる
以前のリリースでは、カスタムリポジトリーを使用した Ceph のインストールが許可されませんでした。これは、redhat_custom_repository.yml
ファイルが削除されたために生じました。今回の更新により、redhat_custom_repository.yml
ファイルが追加され、カスタムリポジトリーを使用して Red Hat Ceph Storage をインストールできるようになりました。
Red Hat が署名するパッケージのみが、カスタムソフトウェアリポジトリーを使用して Ceph をインストールすることができます。カスタムのサードパーティーソフトウェアリポジトリーはサポートされません。
(BZ#1808362)
Dashboard がインストールされていない場合は、ceph-ansible
パージ Playbook が失敗しない
以前のバージョンでは、ダッシュボードがデプロイされていない場合、purge Playbook は存在しないダッシュボード関連のリソースの削除を試行するため、クラスターのパージ時に失敗していました。そのため、purge Playbook でダッシュボードがデプロイされ、パージに失敗すると記述されていました。この更新により、デプロイメントの一部ではない場合、ceph-ansible
はダッシュボード関連のリソースをパージせず、パージが正常に完了するようになりました。
(BZ#1808988)
スタンドアロンの nfs-ganesha
デーモンを外部 Ceph ストレージクラスターで使用すると、デプロイメント時にキーリングがコピーされなくなりました。
以前のリリースでは、スタンドアロンの nfs-ganesha
デーモンと外部の Ceph ストレージクラスターで設定される設定では、Ceph Ansible デプロイメント時に Ceph キーリングが /etc/ceph にコピーされませんでした。
今回の更新により、Ceph キーリングが /etc/ceph/ ディレクトリーにコピーされるようになりました。
Ceph Ansible によって、初回インストール後にダッシュボードの admin ユーザーの権限が更新されます。
以前のリリースでは、ceph-ansible
は初回作成時にダッシュボードユーザーの権限を設定できました。インストール時に dashboard_admin_user_ro: false
を変更した後に Playbook を実行しても、ユーザーの権限は更新されませんでした。Red Hat Ceph Storage 4.1z1 では、ceph-ansible
は、Playbook の連続実行でのダッシュボードユーザーの権限の変更をサポートするように更新されました。
Playbook の docker-to-podman.yml
がダッシュボードコンテナーを移行するようになりました。
grafana-server
およびダッシュボードコンテナーを除き、Playbook の docker-to-podman.yml
を実行すると、すべてのデーモンが docker
から podman
に移行していました。今回のリリースにより、docker-to-podman.yml
を実行すると、すべてのデーモンが正常に移行されるようになりました。
古いコンテナーからストレージディレクトリーが削除される
以前のバージョンでは、古いコンテナーのストレージディレクトリーが削除されませんでした。これにより、ディスクの使用量が多くなる可能性があります。これは、Red Hat Ceph Storage をインストールしてそれをパージし、再インストールすると確認できます。Red Hat Ceph Storage 4.1z1 では、使用されなくなったコンテナーのストレージディレクトリーは削除され、過剰なディスク使用量は発生しません。
Red Hat Enterprise Linux 8.1 でコンテナークラスターを 4.0 から 4.1 にアップグレードすると失敗しなくなりました。
以前のリリースでは、Red Hat Ceph Storage クラスターを 4.0 から 4.1 にアップグレードする際に、set_fact ceph_osd_image_repodigest_before_pulling
のエラーでアップグレードに失敗する可能性がありました。コンテナーイメージタグの更新方法に問題があるため、ceph-ansible
は失敗する可能性がありました。Red Hat Ceph Storage 4.1z1 では、ceph-ansible
が更新され、アップグレードは失敗しなくなり、アップグレードが期待どおりに機能するようになりました。
Ceph Dashboard の有効化が既存の OpenStack 環境で失敗する
既存の OpenStack 環境で、Ceph Manager ダッシュボードモジュールを有効にした後に Ceph Dashboard の IP アドレスとポートを設定すると、HAProxy 設定とのコンフリクトが発生していました。この競合を避けるには、Ceph Manager ダッシュボードモジュールを有効にする前に、Ceph Dashboard の IP アドレスとポートを設定します。
Ceph Object Gateway セカンダリーサイトをデプロイする際に Red Hat Ceph Storage Dashboard が失敗する
以前のリリースでは、Red Hat Ceph Storage Dashboard は Ceph Object Gateway マルチサイトのデプロイメントにセカンダリーサイトをデプロイすることができませんでした。これは、Ceph Ansible が radosgw-admin user create
コマンドを実行するとエラーを返すためです。今回のリリースにより、デプロイメントプロセスの Ceph Ansible タスクが 2 つの異なるタスクに分割されました。これにより、Red Hat Ceph Storage Dashboard は Ceph Object Gateway のセカンダリーサイトを正常にデプロイできます。
--limit
オプションを指定して Playbook を実行すると、Ceph File System Metadata Server のインストールに失敗します。
最初の Ceph Monitor では設定されませんでしたが、それらのファクトはそれぞれの全 Ceph Monitor ノードに設定されていました。--limit
オプションを指定して Playbook を実行する際に、Ceph Monitor がバッチに含まれていない場合に、これらのファクトは Ceph Monitor に設定されませんでした。これは、これらの事実が Ceph Monitor のタスクで使用された場合は、Playbook が失敗する原因となります。今回のリリースでは、Playbook が --limit
オプションを使用するかどうかに関わらず、これらのファクトは Ceph Monitor に設定されるようになりました。
アップグレードに失敗した場合に新たな Ceph Ojbect Gateway インスタンスの追加
radosgw_frontend_port
オプションでは、複数の Ceph Object Gateway インスタンスを考慮せず、全インスタンスに対してポート 8080
を設定していました。今回のリリースでは、各 Ceph Object Gateway インスタンスの radosgw_frontend_port
オプションが増加し、複数の Ceph Object Gateway インスタンスを使用できるようになりました。
コンテナー化された環境で FileStore を使用する場合は、Ceph Ansible の Playbook shrink-osd.yml
が失敗する
Ceph Ansible の Playbook shrink-osd.yml
にはデフォルト値がありませんでした。これにより、コンテナー化された環境で FileStore がサポートする Ceph OSD を縮小する際にエラーが生じていました。ceph-disk
および dmcrypt
を使用して以前に準備した Ceph OSD は、対応する Ceph OSD ファイルで encrypted
キーを未定義のままにしていました。今回のリリースにより、デフォルト値が追加され、Ceph Ansible の Playbook shrink-osd.yml
がコンテナー化された環境で dmcrypt
を使用して準備されている Ceph OSD で実行できるようになりました。
HTTPS の使用により、Prometheus およびアラートマネージャーへのアクセスがを遮断
dashboard_protocol
オプションを https
に設定することにより、Red Hat Ceph Storage Dashboard は TLS をネイティブサポートしない Prometheus API へのアクセスを試行しました。今回のリリースにより、dashboard_protocol
オプションを https
に設定すると、Prometheus およびアラートマネージャーは HTTP プロトコルを使用するように強制されました。
Ceph Ansible の Playbook shrink-osd.yml
は Ceph OSD を適切に消去しません。
ceph_volume
モジュールにより実行される zap
アクションは、osd_fsid
パラメーターを処理しません。そのため、基になるデバイスに論理ボリュームを残すことにより、Ceph OSD が誤ってザッピングされていました。今回のリリースにより、zap
アクションが osd_fsid
パラメーターを適切に処理し、縮小後に Ceph OSD を適切にクリーンアップできるようになりました。
Red Hat Ceph Storage のローリング更新は、複数のストレージクラスターが存在すると失敗します。
複数のストレージクラスターが設定されている際に Ceph Ansible の Playbook rolling_update.yml
を実行すると、ストレージクラスター名が指定されていないため、ローリング更新に失敗します。今回のリリースにより、Playbook の rolling_update.yml
は --cluster
オプションを使用して、特定のストレージクラスター名を許可できるようになりました。
ローリング更新を実行する際に、hosts
フィールドに無効な値がある。
Ceph Ansible Playbook rolling_update.yml
の hosts
値の評価で構文が変更になったため、Red Hat Ceph Storage のローリング更新に失敗しました。今回のリリースにより、コードに対する修正により、hosts
フィールドが Playbook で指定されると構文が適切に更新されるようになりました。
Playbook rolling_update.yml
を実行してもストレージクラスター fsid
が取得されない
Playbook rolling_update.yml
を実行しても、Ceph Ansible インベントリーに Ceph Monitor ノードが定義されていない場合など、外部シナリオではストレージクラスターの fsid
は取得されません。これにより、Playbook の rolling_update.yml
に失敗します。今回のリリースでは、インベントリーに定義された Ceph Monitor がない場合に fsid
の取得が省略され、Ceph Monitor が存在しない場合に Playbook rolling_update.yml
を実行できるようになりました。