9.8. オブジェクトストアを FileStore から BlueStore に移行する方法
ストレージ管理者は、従来のオブジェクトストアである FileStore から新しいオブジェクトストアである BlueStore に移行できます。
9.8.1. 前提条件
- 正常かつ稼働中の Red Hat Ceph Storage クラスター
9.8.2. FileStore から BlueStore への移行
BlueStore は従来の FileStore と比較すると、パフォーマンスと堅牢性が向上しています。1 つの Red Hat Ceph Storage クラスターには、FileStore デバイスと BlueStore デバイスの両方の組み合わせを含めることができます。
個々の OSD を変換することは、その場ではできませんし、単独でもできません。変換プロセスは、ストレージクラスターの通常のレプリケーションおよびヒーリングプロセス、または古い (FileStore) デバイスから新しい (BlueStore) デバイスに OSD コンテンツをコピーするツールや戦略のいずれかに依存します。FileStore から BlueStore に移行する方法は 2 つあります。
最初の操作
1 つ目は、各デバイスを順番に out とマークし、ストレージクラスター全体でデータの複製を待って、OSD を再プロビジョニングしてから再度 in のマークに戻すことです。以下は、この方法のメリットとデメリットです。
- 利点
- 簡単です。
- デバイスごとに実行できます。
- 予備のデバイスやノードは必要ありません。
- デメリット
ネットワーク上のデータのコピーは 2 回行われます。
注記1 つのコピーをストレージクラスター内の他の OSD にコピーすることで、希望する数のレプリカを維持し、さらにもう 1 つのコピーを再プロビジョニングされた BlueStore OSD に戻すことができます。
2 つ目の方法
2 つ目は、ノード全体を置き換えます。データがない空のノードが必要です。
これを実行するには 2 つの方法を使用できます。*ストレージクラスターの一部ではない新規の空のノードから開始します。* ストレージクラスターの既存ノードからデータをオフロードする
- 利点
- データは一度だけネットワーク上でコピーされます。
- ノードの OSD 全体を一度に変換します。
- 一度に複数のノードを並行して変換できます。
- 各ノードでは、予備のデバイスは必要ありません。
- デメリット
- スペアノードが必要です。
- ノード全体の OSD は、データを一度に移行します。これは、クラスター全体のパフォーマンスに影響を与える可能性が高くなります。
- 移行されたデータはすべて、ネットワーク上で 1 つの完全ホップを行います。
9.8.3. Ansible を使用した FileStore から BlueStore への移行
Ansible を使用して FileStore から BlueStore に移行すると、ノード上のすべての OSD が縮小され、再デプロイされます。Ansible Playbook は、移行を開始する前に容量チェックを実行します。ceph-volume
ユーティリティーは OSD を再デプロイします。
前提条件
- 正常かつ稼働中の Red Hat Ceph Storage 4 クラスター
-
Ansible アプリケーションで使用する
ansible
ユーザーアカウント。
手順
-
Ansible 管理ノードで
ansible
ユーザーとしてログインします。 group_vars/osd.yml
ファイルを編集し、以下のオプションを追加し、設定します。nb_retry_wait_osd_up: 50 delay_wait_osd_up: 30
以下の Ansible Playbook を実行します。
構文
ansible-playbook infrastructure-playbooks/filestore-to-bluestore.yml --limit OSD_NODE_TO_MIGRATE
例
[ansible@admin ~]$ ansible-playbook infrastructure-playbooks/filestore-to-bluestore.yml --limit osd1
警告Ceph 設定ファイルで
osd_crush_update_on_start = False
を明示的に設定すると、変換は失敗します。別の ID で新しい OSD を作成し、それを CRUSH ルールに置き忘れます。また、古い OSD データディレクトリーはクリアされません。- ストレージクラスターの次の OSD ノードで開始する前に、移行が完了するまで待ちます。
9.8.4. マークアウトと置換のアプローチを使用して FileStore から BlueStore への移行
FileStore から BlueStore に移行する最も簡単な方法は、各デバイスを順次マークアウトし、ストレージクラスター全体でデータが複製されるのを待ち、OSD を再プロビジョニングし、再度 in のマークに戻すことです。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
-
ノードへの
root
アクセス。
手順
以下の変数 OSD_ID
を ODS の識別番号に置き換えます。
置き換える FileStore OSD を検索します。
OSD 識別番号を取得します。
[root@ceph-client ~]# ceph osd tree
OSD が FileStore または BlueStore を使用しているかどうかを特定します。
構文
ceph osd metadata OSD_ID | grep osd_objectstore
例
[root@ceph-client ~]# ceph osd metadata 0 | grep osd_objectstore "osd_objectstore": "filestore",
FileStore デバイスと BlueStore デバイス数の現在の数を表示するには、次のコマンドを実行します。
[root@ceph-client ~]# ceph osd count-metadata osd_objectstore
FileStore OSD にマークが付けられます。
ceph osd out OSD_ID
データが OSD から移行されるまで待機します。
while ! ceph osd safe-to-destroy OSD_ID ; do sleep 60 ; done
OSD を停止します。
systemctl stop ceph-osd@OSD_ID
この OSD が使用しているデバイスを取得します。
mount | grep /var/lib/ceph/osd/ceph-OSD_ID
OSD をアンマウントします。
umount /var/lib/ceph/osd/ceph-OSD_ID
手順 5 からの値を
DEVICE
として使用して、OSD データを破棄します。ceph-volume lvm zap DEVICE
重要デバイスの内容が破壊されますので、非常に注意 してください。先に進む前に、デバイスのデータが不要で、ストレージクラスターが正常であることを確認してください。
注記OSD が暗号化されている場合は、
dmsetup remove
を使用して OSD をザッピングする前に、osd-lockbox
をアンマウントして暗号化を削除します。注記OSD に論理ボリュームが含まれている場合は、
ceph-volume lvm zap
コマンドで--destroy
オプションを使用します。OSD が破棄されていることをストレージクラスターに認識させます。
[root@ceph-client ~]# ceph osd destroy OSD_ID --yes-i-really-mean-it
ステップ 5 の
DEVICE
と、同じOSD_ID
を使用して、OSD を BlueStore OSD として再プロビジョニングします。[root@ceph-client ~]# ceph-volume lvm create --bluestore --data DEVICE --osd-id OSD_ID
この手順を繰り返します。
注記新規 BlueStore OSD の再入力は、OSD を破棄する前にストレージクラスターが
HEALTH_OK
であることを確認していれば、次の FileStore OSD のドレイン (枯渇) と同時に発生する可能性があります。これを行わないと、データの冗長性が軽減され、リスクが高まるか、データ損失の可能性が高まります。
9.8.5. ノード全体の置き換え方法を使用した FileStore から BlueStore への移行
FileStore から BlueStore への移行は、保存されているデータの各コピーを一度だけ転送することで、ノード単位で行うことができます。このマイグレーションは、ストレージクラスター内に予備のノードがある場合や、予備として使用するためにストレージクラスターからノード全体を退避させるのに十分な空き領域を持っている場合に行うことができます。理想的には、移行する他のノードとほぼ同じ容量のノードでなければなりません。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
-
ノードへの
root
アクセス。 - データがない空のノード。
手順
-
以下の変数
NEWNODE
を、新しいノード名に置き換えます。 -
以下の変数
EXISTING_NODE_TO_CONVERT
を、ストレージクラスターにすでに存在するノード名に置き換えます。 以下の変数
OSD_ID
を、OSD 識別番号に置き換えます。ストレージクラスターにない新規ノードを使用する。ストレージクラスターに存在するノードを使用するには、ステップ 3 に進みます。
ノードを CRUSH 階層に追加します。
[root@mon ~]# ceph osd crush add-bucket NEWNODE node
重要ルートには接続しないでください。
Ceph ソフトウェアパッケージをインストールします。
[root@mon ~]# yum install ceph-osd
注記Ceph 設定ファイル (デフォルトでは
/etc/ceph/ceph.conf
) およびキーリングを新しいノードにコピーします。
- ステップ 5 に進みます。
ストレージクラスターで既存のノードを使用している場合は、以下のコマンドを使用します。
[root@mon ~]# ceph osd crush unlink EXISTING_NODE_TO_CONVERT default
注記ここでの
default
は、CRUSH マップの直系先祖です。- ステップ 8 に進みます。
すべてのデバイスに対して新しい BlueStore OSD をプロビジョニングします。
[root@mon ~]# ceph-volume lvm create --bluestore --data /dev/DEVICE
OSD がクラスターに参加していることを確認します。
[root@mon ~]# ceph osd tree
新しいノード名の下にすべての OSD が表示されるはずですが、階層内の他のノードの下に入れ子に なってはいけません。
例
[root@mon ~]# ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -5 0 node newnode 10 ssd 1.00000 osd.10 up 1.00000 1.00000 11 ssd 1.00000 osd.11 up 1.00000 1.00000 12 ssd 1.00000 osd.12 up 1.00000 1.00000 -1 3.00000 root default -2 3.00000 node oldnode1 0 ssd 1.00000 osd.0 up 1.00000 1.00000 1 ssd 1.00000 osd.1 up 1.00000 1.00000 2 ssd 1.00000 osd.2 up 1.00000 1.00000
新規ノードを、クラスター内の古いノードの位置にスワップします。
[root@mon ~]# ceph osd crush swap-bucket NEWNODE EXISTING_NODE_TO_CONVERT
この時点で、
EXISTING_NODE_TO_CONVERT
のすべてのデータはNEWNODE
上の OSD への移行を開始します。注記古いノードと新規ノードの合計容量に違いがある場合は、ストレージクラスター内の他のノードへのデータ移行も表示されますが、ノードのサイズが同じであれば、これは比較的少ないデータ量になります。
データの移行が完了するまで待ちます。
while ! ceph osd safe-to-destroy $(ceph osd ls-tree EXISTING_NODE_TO_CONVERT); do sleep 60 ; done
EXISTING_NODE_TO_CONVERT
にログインし、現時点で空のEXISTING_NODE_TO_CONVERT
にある古い OSD をすべて停止およびアンマウントします。[root@mon ~]# systemctl stop ceph-osd@OSD_ID [root@mon ~]# umount /var/lib/ceph/osd/ceph-OSD_ID
古い OSD を破棄してパージします。
for osd in
ceph osd ls-tree EXISTING_NODE_TO_CONVERT
; do ceph osd purge $osd --yes-i-really-mean-it ; done古い OSD デバイスを削除します。これには、手動で消去するデバイスを特定する必要があります。各デバイスに対して、次のコマンドを実行します。
[root@mon ~]# ceph-volume lvm zap DEVICE
重要デバイスの内容が破壊されますので、非常に注意 してください。次のステップに進む前に、デバイスのデータが不要で、ストレージクラスターが正常であることを確認してください。
注記OSD が暗号化されている場合は、
dmsetup remove
を使用して OSD をザッピングする前に、osd-lockbox
をアンマウントして暗号化を削除します。注記OSD に論理ボリュームが含まれている場合は、
ceph-volume lvm zap
コマンドで--destroy
オプションを使用します。- 現在空になっている古いノードを新しいノードとして使用し、処理を繰り返します。