Menu Close

9.8.5. ノード全体の置き換え方法を使用した FileStore から BlueStore への移行

FileStore から BlueStore への移行は、保存されているデータの各コピーを一度だけ転送することで、ノード単位で行うことができます。このマイグレーションは、ストレージクラスター内に予備のノードがある場合や、予備として使用するためにストレージクラスターからノード全体を退避させるのに十分な空き領域を持っている場合に行うことができます。理想的には、移行する他のノードとほぼ同じ容量のノードでなければなりません。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • ノードへの root アクセス。
  • データがない空のノード。

手順

  • 以下の変数 NEWNODE を、新しいノード名に置き換えます。
  • 以下の変数 EXISTING_NODE_TO_CONVERT を、ストレージクラスターにすでに存在するノード名に置き換えます。
  • 以下の変数 OSD_ID を、OSD 識別番号に置き換えます。

    1. ストレージクラスターにない新規ノードを使用する。ストレージクラスターに存在するノードを使用するには、ステップ 3 に進みます。

      1. ノードを CRUSH 階層に追加します。

        [root@mon ~]# ceph osd crush add-bucket NEWNODE node
        重要

        ルートには接続しないでください。

      2. Ceph ソフトウェアパッケージをインストールします。

        [root@mon ~]# yum install ceph-osd
        注記

        Ceph 設定ファイル (デフォルトでは /etc/ceph/ceph.conf) およびキーリングを新しいノードにコピーします。

    2. ステップ 5 に進みます。
    3. ストレージクラスターで既存のノードを使用している場合は、以下のコマンドを使用します。

      [root@mon ~]# ceph osd crush unlink EXISTING_NODE_TO_CONVERT default
      注記

      ここでの default は、CRUSH マップの直系先祖です。

    4. ステップ 8 に進みます。
    5. すべてのデバイスに対して新しい BlueStore OSD をプロビジョニングします。

      [root@mon ~]# ceph-volume lvm create --bluestore --data /dev/DEVICE
    6. 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

    7. 新規ノードを、クラスター内の古いノードの位置にスワップします。

      [root@mon ~]# ceph osd crush swap-bucket NEWNODE EXISTING_NODE_TO_CONVERT

      この時点で、EXISTING_NODE_TO_CONVERT のすべてのデータは NEWNODE 上の OSD への移行を開始します。

      注記

      古いノードと新規ノードの合計容量に違いがある場合は、ストレージクラスター内の他のノードへのデータ移行も表示されますが、ノードのサイズが同じであれば、これは比較的少ないデータ量になります。

    8. データの移行が完了するまで待ちます。

      while ! ceph osd safe-to-destroy $(ceph osd ls-tree EXISTING_NODE_TO_CONVERT); do sleep 60 ; done
    9. 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
    10. 古い OSD を破棄してパージします。

      for osd in ceph osd ls-tree EXISTING_NODE_TO_CONVERT; do ceph osd purge $osd --yes-i-really-mean-it ; done
    11. 古い OSD デバイスを削除します。これには、手動で消去するデバイスを特定する必要があります。各デバイスに対して、次のコマンドを実行します。

      [root@mon ~]# ceph-volume lvm zap DEVICE
      重要

      デバイスの内容が破壊されますので、非常に注意 してください。次のステップに進む前に、デバイスのデータが不要で、ストレージクラスターが正常であることを確認してください。

      注記

      OSD が暗号化されている場合は、dmsetup remove を使用して OSD をザッピングする前に、osd-lockbox をアンマウントして暗号化を削除します。

      注記

      OSD に論理ボリュームが含まれている場合は、ceph-volume lvm zap コマンドで --destroy オプションを使用します。

    12. 現在空になっている古いノードを新しいノードとして使用し、処理を繰り返します。