Skip to main content
BeeGFS on NetApp with E-Series Storage
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

BeeGFS 8にアップグレード

共同作成者 mcwhiteside

BeeGFS HA クラスタを BeeGFS 7.4 から BeeGFS 8 にアップグレードするには、次の手順を実行します。

概要

BeeGFS 8では、BeeGFS 7からアップグレードする前に追加の設定が必要となる重要な変更点がいくつか導入されています。このドキュメントでは、BeeGFS 8の新しい要件に合わせてクラスタを準備し、その後BeeGFS 8にアップグレードする手順について説明します。

重要 BeeGFS 8にアップグレードする前に、システムに少なくともBeeGFS 7.4がインストールされていることを確認してください。BeeGFS 7.4より前のリリースを実行しているクラスターは、BeeGFS 8にアップグレードする前に、まず"BeeGFS 7.4にアップグレードする"を実行する必要があります。

BeeGFS 8の主な変更点

BeeGFS 8では、以下の主要な変更点が導入されています:

  • ライセンスの適用: BeeGFS 8 では、ストレージプール、リモートストレージターゲット、BeeOND などのプレミアム機能を使用するにはライセンスが必要です。アップグレードする前に、BeeGFS クラスター用の有効なライセンスを取得してください。必要に応じて、BeeGFS 8 の一時的な評価ライセンスを"BeeGFSライセンスポータル"から取得できます。

  • 管理サービスデータベースの移行: BeeGFS 8 で新しい TOML ベースのフォーマットを使用して構成を有効にするには、BeeGFS 7 の管理サービスデータベースを更新された BeeGFS 8 フォーマットに手動で移行する必要があります。

  • TLS暗号化: BeeGFS 8では、サービス間の安全な通信のためにTLSが導入されました。アップグレードの一環として、BeeGFS管理サービスと `beegfs`コマンドラインユーティリティ用のTLS証明書を生成して配布する必要があります。

BeeGFS 8 の詳細と追加の変更については、"BeeGFS 8.0.0 アップグレードガイド"を参照してください。

重要

BeeGFS 8へのアップグレードにはクラスタのダウンタイムが必要であり、BeeGFS 7クライアントはBeeGFS 8クラスタに接続できません。運用への影響を最小限に抑えるため、アップグレードのタイミングを慎重に調整してください。

BeeGFS クラスターをアップグレード用に準備する

アップグレードを開始する前に、スムーズな移行を実現し、ダウンタイムを最小限に抑えるために環境を慎重に準備してください。

  1. すべてのサーバーとクライアントが BeeGFS 8 用の"サポートされている Linux ディストリビューションとカーネルバージョン"を使用していることを確認してください。

  2. クラスターが正常な状態であり、すべてのBeeGFSサービスがそれぞれの優先ノードで実行されていることを確認してください。BeeGFSサービスを実行しているファイルノードから、すべてのPacemakerリソースがそれぞれの優先ノードで実行されていることを確認します:

    pcs status
  3. クラスタ構成を記録し、バックアップしてください。BeeGFS管理サービスのデータは、管理データベースのアップグレードプロセスの一環として、後日バックアップされます。

    1. BeeGFSクライアントで以下のコマンドを実行し、出力結果を参考のために保存してください:

      beegfs-ctl --getentryinfo --verbose /path/to/beegfs/mountpoint
    2. ミラーリングを使用している場合は、両方のミラーメンバーが「再同期が必要」状態になった場合に元のプライマリターゲットを特定できるように、詳細な状態情報を収集してください:

      beegfs-ctl --listtargets --longnodes --state --spaceinfo --mirrorgroups --nodetype=meta
      beegfs-ctl --listtargets --longnodes --state --spaceinfo --mirrorgroups --nodetype=storage
    3. ミラーリングを使用している場合は、アップグレードを進める前に、すべてのバディグループが `GOOD`状態であることを確認してください。

  4. BeeGFSシステムを以下の順序で停止します:

    1. 各クライアントで、BeeGFSファイルシステムをアンマウントし、 `beegfs-client`サービスを停止します。クライアントごとに以下を実行します:

      systemctl stop beegfs-client
    2. 各Pacemakerクラスターについて、STONITHを無効にして、不要なノードの再起動をトリガーすることなく、アップグレード後にクラスターの整合性を検証できるようにします:

      pcs property set stonith-enabled=false
    3. すべてのPacemakerクラスターで、クラスターを停止します:

      pcs cluster stop --all

BeeGFS管理パッケージをアップグレードする

クラスター内のすべてのファイルノードに、お使いのLinuxディストリビューション用のBeeGFS 8パッケージリポジトリを追加してください。Linux ディストリビューションに公式 BeeGFS リポジトリを追加する手順は、"BeeGFSダウンロードページ"にあります。そうでない場合は、ローカルのBeeGFSミラーリポジトリを適切に設定してください。

  1. クラスタの最初の 2 つのファイルノードで、 BeeGFS 管理デーモンパッケージのみを BeeGFS 8 に更新します。

    RHEL の場合、 BeeGFS リポジトリを設定した後、次のコマンドを実行します。

    dnf clean all
    dnf update beegfs-mgmtd

管理データベースをアップグレードする

BeeGFS管理サービスを実行しているファイルノードのいずれかで、以下の手順に従って管理データベースをBeeGFS 7からBeeGFS 8に移行します。

  1. すべてのNVMeデバイスを一覧表示し、管理対象を特定します:

    nvme netapp smdevices | grep mgmt_tgt

    出力からデバイスパスをメモしてください(例: /dev/nvmeXnY)。

    1. 管理対象デバイスを既存の管理対象マウント ポイントにマウントします( `/dev/nvmeXnY`をデバイス パスに置き換えます):

      mount /dev/nvmeXnY /mnt/mgmt_tgt_mgmt01/
  2. 管理データディレクトリのバックアップを実行します:

    tar --force-local -cpzf /mnt/mgmt_tgt_mgmt01/data_beegfs_7_backup_$(date +'%F_%T').tar.gz /mnt/mgmt_tgt_mgmt01/data
  3. 次のコマンドを実行して、BeeGFS 7 管理データを新しいデータベース形式にインポートします:

    /opt/beegfs/sbin/beegfs-mgmtd --import-from-v7=/mnt/mgmt_tgt_mgmt01/data/

    期待される出力:

    Created new database version 3 at "/var/lib/beegfs/mgmtd.sqlite". Successfully imported v7 management data from "/mnt/mgmt_tgt_mgmt01/data/".
    重要

    BeeGFS 8では検証要件が厳格化されたため、自動インポートが必ずしも成功するとは限りません。例えば、存在しないストレージプールにターゲットが割り当てられた場合、インポートは失敗します。移行が失敗した場合は、アップグレードを続行しないでください。NetAppサポートに連絡して、データベース移行の問題の解決についてサポートを受けてください。問題が解決されるまでの間、BeeGFS 8の管理パッケージをダウングレードして、BeeGFS 7を引き続き使用することができます。

  4. 生成された SQLite ファイルを管理サービス マウントに移動します:

    mv /var/lib/beegfs/mgmtd.sqlite /mnt/mgmt_tgt_mgmt01/data/
  5. 生成された `beegfs-mgmtd.toml`を管理サービスマウントに移動します:

    mv /etc/beegfs/beegfs-mgmtd.toml /mnt/mgmt_tgt_mgmt01/mgmt_config/

    以下のセクションのライセンスおよびTLS設定手順を完了した後、 `beegfs-mgmtd.toml`設定ファイルを準備します。

残りのBeeGFSパッケージをアップグレードする

管理データベースの移行が完了したら、クラスタ内のすべてのファイルノードで残りのBeeGFSパッケージをアップグレードします。RHELの場合、BeeGFSリポジトリを設定した後、以下のコマンドを実行してください:

dnf clean all
dnf update beegfs-storage beegfs-meta libbeegfs-ib

ライセンスを構成する

  1. BeeGFS管理サービスを実行しているすべてのノードに、BeeGFSライセンスパッケージをインストールしてください。これは通常、クラスタの最初の2つのファイルノードです:

    dnf install libbeegfs-license
  2. BeeGFS 8のライセンスファイルを管理ノードにダウンロードし、以下の場所に配置してください:

    /etc/beegfs/license.pem

TLS暗号化を構成する

BeeGFS 8では、管理サービスとBeeGFS CLIツール(`beegfs`間の安全な通信のためにTLS暗号化が必要です。次の3つの構成方法から1つを選択してください:信頼できる認証局によって署名された証明書を使用する、独自のローカル認証局を作成してBeeGFSクラスターの証明書に署名する、またはトラブルシューティングのためにTLSを完全に無効にする(本番環境では推奨されません)。

ファイルノードの管理サービスに対してTLS暗号化を設定するには、"BeeGFS 8 の TLS 暗号化を設定する"ガイドを使用します。

メモ

クライアントTLS設定は、BeeGFSクライアントのアップグレード後に完了します。この段階では、ファイルノード上の管理サービスとbeegfs-toolに対してのみTLSを設定します。

更新管理サービスの構成

BeeGFS 7 の設定ファイルから設定を手動で `/mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml`ファイルに転送して、BeeGFS 8 管理サービス設定ファイルを準備します。

  1. 管理ターゲットがマウントされている管理ノードで、 `/mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.conf`管理サービスファイルでBeeGFS 7を参照し、すべての設定を `/mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml`ファイルに転送します。基本的なセットアップの場合、 `beegfs-mgmtd.toml`は次のようになります:

    beemsg-port = 8008
    grpc-port = 8010
    log-level = "info"
    node-offline-timeout = "900s"
    quota-enable = false
    auth-disable = false
    auth-file = "/etc/beegfs/<mgmt_service_ip>_connAuthFile"
    db-file = "/mnt/mgmt_tgt_mgmt01/data/mgmtd.sqlite"
    license-disable = false
    license-cert-file = "/etc/beegfs/license.pem"
    tls-disable = false
    tls-cert-file = "/etc/beegfs/mgmtd_tls_cert.pem"
    tls-key-file = "/etc/beegfs/mgmtd_tls_key.pem"
    interfaces = ['i1b:mgmt_1', 'i2b:mgmt_2']

    必要に応じて、環境と TLS 構成に合わせてすべてのパスを調整します。

  2. 管理サービスを実行している各ファイル ノードで、新しい構成ファイルの場所を指すように systemd サービス ファイルを変更します。

    sudo sed -i 's|ExecStart=.*|ExecStart=nice -n -3 /opt/beegfs/sbin/beegfs-mgmtd --config-file /mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml|' /etc/systemd/system/beegfs-mgmtd.service
    1. systemdをリロードします:

      systemctl daemon-reload
  3. 管理サービスを実行している各ファイル ノードに対して、管理サービスの gRPC 通信用にポート 8010 を開きます。

  4. beegfsゾーンにTCPポート8010を追加します:

    sudo firewall-cmd --zone=beegfs --permanent --add-port=8010/tcp
    1. 変更を適用するには、ファイアウォールをリロードします:

      sudo firewall-cmd --reload

BeeGFSモニタースクリプトを更新する

Pacemaker beegfs-monitor Open Cluster Framework(OCF)スクリプトは、新しいTOML設定フォーマットとsystemdサービス管理をサポートするために更新が必要です。クラスター内の1つのノードでスクリプトを更新し、更新されたスクリプトを他のすべてのノードにコピーします。

  1. 現在のスクリプトのバックアップを作成します:

    cp /usr/lib/ocf/resource.d/eseries/beegfs-monitor /usr/lib/ocf/resource.d/eseries/beegfs-monitor.bak.$(date +%F)
  2. 管理構成ファイルのパスを `.conf`から `.toml`に更新します:

    sed -i 's|mgmt_config/beegfs-mgmtd\.conf|mgmt_config/beegfs-mgmtd.toml|' /usr/lib/ocf/resource.d/eseries/beegfs-monitor

    または、スクリプト内で次のブロックを手動で見つけます:

    case $type in
      management)
        conf_path="${configuration_mount}/mgmt_config/beegfs-mgmtd.conf"
        ;;

    これを次のように置き換えます:

    case $type in
      management)
        conf_path="${configuration_mount}/mgmt_config/beegfs-mgmtd.toml"
        ;;
  3. `get_interfaces()`および `get_subnet_ips()`関数を更新して、TOML構成をサポートします:

    1. テキスト エディターでスクリプトを開きます:

      vi /usr/lib/ocf/resource.d/eseries/beegfs-monitor
    2. 2 つの関数 `get_interfaces()`と `get_subnet_ips()`を見つけます。

    3. `get_interfaces()`から `get_subnet_ips()`の終わりまで、両方の関数全体を削除します。

    4. 次の更新された関数をコピーして、その場所に貼り付けます:

      # Return network communication interface name(s) from the BeeGFS resource's connInterfaceFile
      get_interfaces() {
        # Determine BeeGFS service network IP interfaces.
        if [ "$type" = "management" ]; then
          interfaces_line=$(grep "^interfaces =" "$conf_path")
          interfaces_list=$(echo "$interfaces_line" | sed "s/.*= \[\(.*\)\]/\1/")
          interfaces=$(echo "$interfaces_list" | tr -d "'" | tr -d " " | tr ',' '\n')
      
          for entry in $interfaces; do
            echo "$entry" | cut -d ':' -f 1
          done
        else
          connInterfacesFile_path=$(grep "^connInterfacesFile" "$conf_path" | tr -d "[:space:]" | cut -f 2 -d "=")
      
          if [ -f "$connInterfacesFile_path" ]; then
            while read -r entry; do
              echo "$entry" | cut -f 1 -d ':'
            done < "$connInterfacesFile_path"
          fi
        fi
      }
      
      # Return list containing all the BeeGFS resource's usable IP addresses. *Note that these are filtered by the connNetFilterFile entries.
      get_subnet_ips() {
        # Determine all possible BeeGFS service network IP addresses.
        if [ "$type" != "management" ]; then
          connNetFilterFile_path=$(grep "^connNetFilterFile" "$conf_path" | tr -d "[:space:]" | cut -f 2 -d "=")
      
          filter_ips=""
          if [ -n "$connNetFilterFile_path" ] && [ -e $connNetFilterFile_path ]; then
            while read -r filter; do
              filter_ips="$filter_ips $(get_ipv4_subnet_addresses $filter)"
            done < $connNetFilterFile_path
          fi
      
          echo "$filter_ips"
        fi
      }
    5. テキストエディターを保存して終了します。

    6. 先に進む前に、以下のコマンドを実行してスクリプトの構文エラーをチェックしてください。何も出力されない場合は、スクリプトの構文は正しいです。

      bash -n /usr/lib/ocf/resource.d/eseries/beegfs-monitor
  4. 更新された beegfs-monitor OCF スクリプトをクラスター内の他のすべてのノードにコピーします:

    scp /usr/lib/ocf/resource.d/eseries/beegfs-monitor user@node:/usr/lib/ocf/resource.d/eseries/beegfs-monitor

クラスタをオンラインに戻す

  1. これまでのアップグレード手順をすべて完了したら、すべてのノードでBeeGFSサービスを開始して、クラスタをオンラインに戻してください。

    pcs cluster start --all
  2. `beegfs-mgmtd`サービスが正常に開始されたことを確認します:

    journalctl -xeu beegfs-mgmtd

    予想される出力には次のような行が含まれます:

    Started Cluster Controlled beegfs-mgmtd.
    Loaded config file from "/mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml"
    Successfully initialized certificate verification library.
    Successfully loaded license certificate: TMP-113489268
    Opened database at "/mnt/mgmt_tgt_mgmt01/data/mgmtd.sqlite"
    Listening for BeeGFS connections on [::]:8008
    Serving gRPC requests on [::]:8010
    メモ

    ジャーナルログにエラーが表示された場合は、管理構成ファイルのパスを確認し、BeeGFS 7構成ファイルからすべての値が正しく転送されたことを確認してください。

  3. 実行 `pcs status`して、クラスターが正常であり、優先ノードでサービスが開始されていることを確認します。

  4. クラスターが正常であることが確認されたら、STONITH を再度有効にします:

    pcs property set stonith-enabled=true
  5. 次のセクションに進み、BeeGFSクライアントをアップグレードして、クラスタの健全性を確認してください。

BeeGFSクライアントのアップグレード

クラスターを BeeGFS 8 にアップグレードした後は、すべての BeeGFS クライアントもアップグレードする必要があります。

  1. BeeGFSクライアントサービスをまだ停止していない場合は、今すぐ停止してください:

    systemctl stop beegfs-client
  2. お使いのLinuxディストリビューションにBeeGFS 8パッケージリポジトリを追加してください。公式BeeGFSリポジトリを追加する手順は、"BeeGFSダウンロードページ"を参照してください。そうでない場合は、ローカルのBeeGFSミラーリポジトリを適切に設定してください。

  3. BeeGFS クライアント パッケージをアップグレードします:

    Ubuntu/Debianの場合:

    apt-get update
    apt-get install --only-upgrade beegfs-client
  4. クライアントに対してTLSを設定します。クライアントノードからBeeGFS CLIを使用するには、TLSが必要です。TLS導入ガイドの"BeeGFS 8クライアント向けにTLSを設定する"セクションを参照してください。

    メモ
    `beegfs-client`サービスがBeeGFSファイルシステムをマウントする際にTLSは必須ではありません。TLSは、BeeGFS CLIツールやその他の管理サービスを使用する場合にのみ必要です。
  5. BeeGFS クライアント サービスを開始します:

    systemctl start beegfs-client

    BeeGFSのマウントに失敗した場合は、システムジャーナルにエラーがないか確認してください。「ルートメタデータノードが正常に動作していないため、処理を続行できません」または「リモートI/Oエラー」などのメッセージが表示される場合、BeeGFS 7のインポートが正常に完了していない可能性があります。NetAppサポートにお問い合わせください。

  6. (オプション)BeeGFS管理コマンドを実行するクライアントノードまたはその他のシステムに、新しい beegfs CLIツールをインストールして設定します:

    1. `beegfs-tools`パッケージをインストールします:

      Ubuntu/Debianの場合:

    apt-get install beegfs-tools
    1. `beegfs`ツールのTLSを設定します。クライアントノードからBeeGFS CLIを使用するには、TLSが必要です。TLS導入ガイドの"BeeGFS 8クライアント向けにTLSを設定する"セクションを参照してください。

アップグレードを確認する

BeeGFS 8へのアップグレードが完了したら、以下のコマンドを実行してアップグレードが成功したことを確認してください。

  1. ルートinodeが以前と同じメタデータノードによって所有されていることを確認します。管理サービスで `import-from-v7`機能を使用した場合、これは自動的に行われるはずです:

    beegfs entry info /mnt/beegfs
  2. すべてのノードとターゲットがオンラインで正常な状態であることを確認してください:

    beegfs health check
    メモ

    「使用可能な容量」チェックでターゲットの空き容量が少ないという警告が表示された場合は、 `beegfs-mgmtd.toml`ファイルに定義されている「容量プール」しきい値を調整して、環境に適したものにすることができます。