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 라이선스 포털"에서 임시 BeeGFS 8 평가 라이선스를 취득할 수 있습니다.

  • 관리 서비스 데이터베이스 마이그레이션: 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. 미러링을 사용하는 경우 두 미러 멤버가 모두 "needs-resync" 상태가 되면 원래 운영 대상을 식별할 수 있도록 자세한 상태 정보를 수집하십시오.

      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. 클러스터의 처음 두 파일 노드에서 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 라이센스 패키지를 설치하십시오. 일반적으로 클러스터의 처음 두 파일 노드입니다.

    dnf install libbeegfs-license
  2. BeeGFS 8 라이센스 파일을 관리 노드에 다운로드하여 다음 위치에 배치하십시오.

    /etc/beegfs/license.pem

TLS 암호화 구성

BeeGFS 8은 관리 서비스와 BeeGFS CLI 도구 간의 안전한 통신을 위해 TLS 암호화가 필요합니다(beegfs. 세 가지 구성 방법 중 하나를 선택하십시오: 신뢰할 수 있는 인증 기관에서 서명한 인증서 사용, BeeGFS 클러스터용 인증서에 서명할 자체 로컬 CA 생성 또는 문제 해결을 위해 TLS를 완전히 비활성화(프로덕션 환경에서는 권장되지 않음).

"BeeGFS 8용 TLS 암호화 구성" 가이드를 사용하여 파일 노드의 관리 서비스에 대한 TLS 암호화를 구성하십시오.

참고

클라이언트 TLS 구성은 BeeGFS 클라이언트를 업그레이드한 후 완료됩니다. 현재 단계에서는 파일 노드에서 관리 서비스와 beegfs-tool에 대해서만 TLS를 구성하십시오.

업데이트 관리 서비스 구성

BeeGFS 7 구성 파일에서 설정을 수동으로 /mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml 파일로 전송하여 BeeGFS 8 관리 서비스 구성 파일을 준비합니다.

  1. 관리 대상이 마운트된 관리 노드에서 BeeGFS 7용 관리 서비스 파일 /mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.conf`을 참조하고 모든 설정을 `/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. 현재 스크립트의 백업을 생성합니다:

    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. 다음 두 함수를 찾으세요: 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 구성" 섹션을 참조하십시오.

    참고

    TLS는 beegfs-client 서비스가 BeeGFS 파일 시스템을 마운트하는 데 필요하지 않습니다. TLS는 BeeGFS CLI 도구 및 기타 관리 서비스를 사용하는 경우에만 필요합니다.

  5. BeeGFS 클라이언트 서비스를 시작합니다.

    systemctl start beegfs-client

    BeeGFS 마운트에 실패하면 시스템 저널에서 오류를 확인하십시오. "작동하는 루트 메타데이터 노드 없이는 진행할 수 없습니다" 또는 "원격 I/O 오류"와 같은 메시지가 표시되면 BeeGFS 7 가져오기가 성공적으로 완료되지 않았을 수 있습니다. NetApp 지원팀에 문의하여 도움을 받으십시오.

  6. (선택 사항) 새 beegfs CLI 도구를 BeeGFS 관리 명령을 실행하려는 클라이언트 노드 또는 기타 시스템에 설치하고 구성합니다.

    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
    참고

    "Available Capacity" 검사에서 대상의 여유 공간이 부족하다는 경고가 표시되면 beegfs-mgmtd.toml 파일에 정의된 "capacity pool" 임계값을 환경에 맞게 조정할 수 있습니다.