Menu Close
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
オプションを使用します。- 現在空になっている古いノードを新しいノードとして使用し、処理を繰り返します。