7.2. アップグレードの準備
Red Hat Ceph Storage クラスターのアップグレードを開始する前に、いくつかの操作を完了する必要があります。これらのステップは、Red Hat Ceph Storage クラスターのベアメタルおよびコンテナーデプロイメントの両方に適用されます (指定がある場合)。
Red Hat Ceph Storage 4 の最新バージョンにのみアップグレードできます。たとえば、バージョン 4.1 が利用可能な場合、3 から 4.0 にアップグレードすることはできません。4.1 に直接移行する必要があります。
FileStore オブジェクトストアを使用する場合は、Red Hat Ceph Storage 3 から Red Hat Ceph Storage 4 にアップグレードした後に BlueStore に移行する必要があります。
Red Hat Enterprise Linux 7 から Red Hat Enterprise Linux 8 へのアップグレード中に、ceph-ansible
を使用して Red Hat Ceph Storage をアップグレードすることはできません。Red Hat Enterprise Linux 7 を使用する必要があります。オペレーティングシステムもアップグレードするには、Red Hat Ceph Storage クラスターとオペレーティングシステムの手動アップグレード を参照してください。
Red Hat Ceph Storage 4.2z2 以降のバージョンでは、オプション bluefs_buffered_io
がデフォルトで True
に設定されています。このオプションは、場合によって BlueFS でバッファー読み取りができるようにし、カーネルページキャッシュが RocksDB ブロック読み取りのような読み取りの二次キャッシュとして機能できるようにします。たとえば、 OMAP の反復時にすべてのブロックを保持ほど、RocksDB のブロックキャッシュが十分にない場合には、ディスクの代わりにページキャッシュから読み出すことが可能な場合があります。これにより、osd_memory_target
が小さすぎてブロックキャッシュのすべてのエントリーを保持できない場合に、パフォーマンスが劇的に向上します。現在、bluefs_buffered_io
を有効にし、システムレベルのスワップを無効にすることで、パフォーマンスの低下を防いでいます。
前提条件
- ストレージクラスター内のすべてのノードへの root レベルのアクセス。
- ストレージクラスター内のすべてのノードのシステムクロックが同期されます。Monitor ノードが同期していない場合、アップグレードプロセスが適切に完了していない可能性があります。
- バージョン 3 からアップグレードする場合、バージョン 3 クラスターが Red Hat Ceph Storage 3 の最新バージョンにアップグレード されている。
バージョン 4 にアップグレードする前に、Prometheus ノードエクスポーターサービスが動作している場合は、サービスを停止する。
例
[root@mon ~]# systemctl stop prometheus-node-exporter.service
重要これは既知の問題で、今後の Red Hat Ceph Storage のリリースで修正される予定です。この問題の詳細は、Red Hat ナレッジベースの 記事 を参照してください。
注記アップグレード中にインターネットにアクセスできないベアメタル または コンテナー の Red Hat Ceph Storage クラスターノードの場合は、Red Hat Ceph Storage Installation Guideの Registering Red Hat Ceph Storage nodes to the CDN and attaching subscriptions のセクションに記載の手順に従います。
手順
-
ストレージクラスター内のすべてのノードで
root
ユーザーとしてログインします。 - Ceph ノードが Red Hat コンテンツ配信ネットワーク (CDN) に接続されていない場合は、ISO イメージを使用して Red Hat Ceph Storage の最新バージョンでローカルリポジトリーを更新することで、Red Hat Ceph Storage をアップグレードできます。
Red Hat Ceph Storage をバージョン 3 からバージョン 4 にアップグレードする場合は、既存の Ceph ダッシュボードのインストールを削除します。
Ansible 管理ノードで、
cephmetrics-ansible
ディレクトリーに移動します。[root@admin ~]# cd /usr/share/cephmetrics-ansible
purge.yml
Playbook を実行して、既存の Ceph ダッシュボードのインストールを削除します。[root@admin cephmetrics-ansible]# ansible-playbook -v purge.yml
Red Hat Ceph Storage をバージョン 3 からバージョン 4 にアップグレードする場合は、Ansible 管理ノードで Ceph リポジトリーおよび Ansible リポジトリーを有効にします。
Red Hat Enterprise Linux 7
[root@admin ~]# subscription-manager repos --enable=rhel-7-server-rhceph-4-tools-rpms --enable=rhel-7-server-ansible-2.9-rpms
Red Hat Enterprise Linux 8
[root@admin ~]# subscription-manager repos --enable=rhceph-4-tools-for-rhel-8-x86_64-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms
Ansible 管理ノードで、
ansible
パッケージおよびceph-ansible
パッケージの最新バージョンがインストールされていることを確認します。Red Hat Enterprise Linux 7
[root@admin ~]# yum update ansible ceph-ansible
Red Hat Enterprise Linux 8
[root@admin ~]# dnf update ansible ceph-ansible
Playbook
infrastructure-playbooks/rolling_update.yml
編集し、health_osd_check_retries
およびhealth_osd_check_delay
の値をそれぞれ50
および30
に変更します。health_osd_check_retries: 50 health_osd_check_delay: 30
各 OSD ノードについて、この値により Ansible は最大 25 分待機し、アップグレードプロセスを続行する前に 30 秒ごとにストレージクラスターの正常性をチェックします。
注記ストレージクラスターで使用されているストレージ容量に基づいて、
health_osd_check_retries
オプションの値をスケールアップまたはダウンします。たとえば、436 TB 未満の 218 TB (ストレージ容量の 50%) を使用している場合は、health_osd_check_retries
オプションを50
に設定します。アップグレードするストレージクラスターに
exclusive-lock
機能を使用する Ceph Block Device イメージが含まれている場合には、全 Ceph Block Device ユーザーにクライアントをブラックリストに登録するパーミッションがあるようにしてください。ceph auth caps client.ID mon 'allow r, allow command "osd blacklist"' osd 'EXISTING_OSD_USER_CAPS'
ストレージクラスターが Cockpit を使用して最初にインストールされている場合は、
/usr/share/ceph-ansible
ディレクトリーに、Cockpit が作成したインベントリーファイルへのシンボリックリンクを/usr/share/ansible-runner-service/inventory/hosts
に作成します。/usr/share/ceph-ansible
ディレクトリーに移動します。# cd /usr/share/ceph-ansible
シンボリックリンクを作成します。
# ln -s /usr/share/ansible-runner-service/inventory/hosts hosts
ceph-ansible
を使用してクラスターをアップグレードするには、hosts
インベントリーファイルのシンボリックリンクをetc/ansible/hosts
ディレクトリーに作成します。# ln -s /etc/ansible/hosts hosts
ストレージクラスターが Cockpit を使用して最初にインストールされている場合は、Cockpit で生成された SSH 鍵を Ansible ユーザーの
~/.ssh
ディレクトリーにコピーします。鍵をコピーします。
# cp /usr/share/ansible-runner-service/env/ssh_key.pub /home/ANSIBLE_USERNAME/.ssh/id_rsa.pub # cp /usr/share/ansible-runner-service/env/ssh_key /home/ANSIBLE_USERNAME/.ssh/id_rsa
ANSIBLE_USERNAME は、Ansible のユーザー名に置き換えます (通常は
admin
)。例
# cp /usr/share/ansible-runner-service/env/ssh_key.pub /home/admin/.ssh/id_rsa.pub # cp /usr/share/ansible-runner-service/env/ssh_key /home/admin/.ssh/id_rsa
キーファイルに適切な所有者、グループ、およびパーミッションを設定します。
# chown ANSIBLE_USERNAME:_ANSIBLE_USERNAME_ /home/ANSIBLE_USERNAME/.ssh/id_rsa.pub # chown ANSIBLE_USERNAME:_ANSIBLE_USERNAME_ /home/ANSIBLE_USERNAME/.ssh/id_rsa # chmod 644 /home/ANSIBLE_USERNAME/.ssh/id_rsa.pub # chmod 600 /home/ANSIBLE_USERNAME/.ssh/id_rsa
ANSIBLE_USERNAME は、Ansible のユーザー名に置き換えます (通常は
admin
)。例
# chown admin:admin /home/admin/.ssh/id_rsa.pub # chown admin:admin /home/admin/.ssh/id_rsa # chmod 644 /home/admin/.ssh/id_rsa.pub # chmod 600 /home/admin/.ssh/id_rsa
関連情報
- 詳細は、Red Hat Ceph Storage リポジトリーの有効化 を参照してください。
- クロックの同期およびクロックスキューの詳細は、Red Hat Ceph Storage トラブルシューティングガイド の クロックスキュー セクションを参照してください。