NFS를 통해 CephFS를 사용하여 공유 파일 시스템 서비스 배포

Red Hat OpenStack Platform 16.1

Red Hat OpenStack Platform의 NFS를 통해 CephFS를 통한 공유 파일 시스템 서비스 이해, 사용 및 관리

OpenStack Documentation Team

초록

RHOSP(Red Hat OpenStack Platform) 환경의 NFS를 통해 CephFS(Red Hat Ceph File System)를 사용하여 Shared File Systems 서비스(manila)를 설치, 구성 및 확인합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

Red Hat 문서에 관한 피드백 제공

문서 개선을 위한 의견을 보내 주십시오. Red Hat이 어떻게 이를 개선하는지 알려주십시오.

DDF(직접 문서 피드백) 기능 사용

특정 문장, 단락 또는 코드 블록에 대한 직접 주석은 피드백 추가 DDF 기능을 사용하십시오.

  1. 다중 페이지 HTML 형식으로 설명서를 봅니다.
  2. 문서 오른쪽 상단에 Feedback (피드백) 버튼이 표시되는지 확인합니다.
  3. 주석 처리하려는 텍스트 부분을 강조 표시합니다.
  4. 피드백 추가를 클릭합니다.
  5. 주석을 사용하여 Add Feedback (피드백 추가) 필드를 작성합니다.
  6. 선택 사항: 설명서 팀이 문제에 대한 자세한 내용을 문의할 수 있도록 이메일 주소를 추가하십시오.
  7. Submit(제출)을 클릭합니다.

1장. NFS를 통한 CephFS를 사용한 공유 파일 시스템 서비스

NFS를 통해 Ceph 파일 시스템(CephFS)이 포함된 Shared File Systems 서비스(manila)를 사용하면 블록 및 개체 스토리지에 사용하는 동일한 Ceph 클러스터를 사용하여 NFS 프로토콜을 통해 파일 공유를 제공할 수 있습니다. 자세한 내용은 스토리지 가이드의 공유 파일 시스템 서비스를 참조하십시오.

참고

Red Hat OpenStack Platform에 대한 전체 문서 제품군은 Red Hat OpenStack Platform 문서를 참조하십시오.

중요

RHOSP(Red Hat OpenStack Platform) RHOSP 16.0 이상에서는 CephFS를 통한 NFS를 통한 공유 파일 시스템 서비스가 Red Hat Ceph Storage 버전 4.1 이상에서 지원됩니다. 시스템에 설치된 Ceph Storage 버전을 결정하는 방법에 대한 자세한 내용은 Red Hat Ceph Storage 릴리스 및 해당 Ceph 패키지 버전을 참조하십시오.

CephFS는 통합 분산 스토리지 플랫폼인 Ceph의 확장성이 뛰어난 오픈 소스 분산 파일 시스템 구성 요소입니다. Ceph는 RADOS(Reliable Autonomic Distributed Object Store)를 사용하여 오브젝트, 블록 및 파일 스토리지를 구현합니다. POSIX 호환 가능한 CephFS는 Ceph 스토리지 클러스터에 대한 파일 액세스를 제공합니다.

공유 파일 시스템 서비스를 사용하여 CephFS에 공유를 생성하고 NFS-Ganesha를 통해 NFS 4.1로 액세스할 수 있습니다. NFS-Ganesha는 공유에 대한 액세스를 제어하고 NFS 4.1 프로토콜을 통해 클라이언트로 내보냅니다. 공유 파일 시스템 서비스는 RHOSP(Red Hat OpenStack Platform) 내에서 이러한 공유의 라이프사이클을 관리합니다. 클라우드 관리자가 NFS를 통해 CephFS를 사용하도록 서비스를 구성하는 경우, 이러한 파일 공유는 CephFS 클러스터에서 제공되지만 친숙한 NFS 공유로 생성 및 액세스됩니다.

자세한 내용은 스토리지 가이드의 공유 파일 시스템 서비스를 참조하십시오.

1.1. Ceph 파일 시스템 아키텍처

Ceph 파일 시스템(CephFS)은 NFS v4 프로토콜(지원) 또는 CephFS 기본 드라이버를 사용하여 NFS-Ganesha와 함께 사용할 수 있는 분산 파일 시스템입니다.

1.1.1. 기본 드라이버가 있는 CephFS

CephFS 기본 드라이버는 OpenStack Shared File Systems 서비스(manila)와 Red Hat Ceph Storage를 결합합니다. RHOSP(Red Hat OpenStack) director를 사용하는 경우 컨트롤러 노드는 관리자, 메타데이터 서버(MDS), 모니터(MON) 및 공유 파일 시스템 서비스와 같은 Ceph 데몬을 호스팅합니다.

계산 노드는 하나 이상의 프로젝트를 호스팅할 수 있습니다. 다음 그래픽에 표시된 프로젝트(구 테넌트)에는 두 개의 NIC가 있는 회색 상자로 표시되는 사용자 관리 VM이 포함되어 있습니다. ceph 및 manila 데몬 프로젝트에 액세스하려면 공용 Ceph 스토리지 네트워크를 통해 데몬에 연결합니다. 이 네트워크에서 Ceph OSD(오브젝트 스토리지 데몬)에서 제공하는 스토리지 노드의 데이터에 액세스할 수 있습니다. 프로젝트 부팅 시 호스팅되는 인스턴스(VM)는 두 개의 NIC(스토리지 프로바이더 네트워크 전용)와 외부 프로바이더 네트워크의 프로젝트 소유 라우터 전용입니다.

스토리지 프로바이더 네트워크는 프로젝트에서 실행되는 VM을 공용 Ceph 스토리지 네트워크에 연결합니다. Ceph 공용 네트워크는 Ceph 오브젝트 스토리지 노드, 메타데이터 서버(MDS) 및 컨트롤러 노드에 대한 백엔드 액세스를 제공합니다.

기본 드라이버를 사용하여 CephFS는 클라이언트 및 서버와 협력하여 할당량을 적용하고 프로젝트 격리를 보장하며 보안을 보장합니다. 기본 드라이버를 사용하는 CephFS는 신뢰할 수 있는 최종 사용자가 프라이빗 클라우드에 있는 환경에서 원활하게 작동합니다. 이 구성을 사용하려면 사용자 제어 하에서 실행되고 있는 소프트웨어가 올바르게 작동해야 합니다.

CephFS nfs 토폴로지 기본 드라이버

1.1.2. NFS를 통한 CephFS

Shared File Systems 서비스(manila)의 NFS 백엔드를 통한 CephFS는 Ceph 메타데이터 서버(MDS), NFS 게이트웨이(NFS-Ganesha)를 통한 CephFS 및 Ceph 클러스터 서비스 구성 요소로 구성됩니다. 공유 파일 시스템 서비스 CephFS NFS 드라이버는 NFS-Ganesha 게이트웨이를 사용하여 NFSv4 프로토콜 액세스를 CephFS 공유에 제공합니다. Ceph MDS 서비스는 파일 시스템의 디렉터리와 파일 이름을 RADOS 클러스터에 저장된 개체에 매핑합니다. NFS 게이트웨이는 Ceph와 같은 다양한 스토리지 백엔드를 사용하여 NFS 파일 공유를 제공할 수 있습니다. NFS-Ganesha 서비스는 Ceph 서비스를 사용하여 컨트롤러 노드에서 실행됩니다.

인스턴스는 두 개 이상의 NIC로 부팅됩니다. 하나의 NIC는 프로젝트 라우터에 연결하고 두 번째 NIC는 NFS-Ganesha 게이트웨이에 직접 연결하는 StorageNFS 네트워크에 연결됩니다. 인스턴스에서 NFS 프로토콜을 사용하여 공유를 마운트합니다. Ceph OSD 노드에서 호스팅되는 CephFS 공유는 NFS 게이트웨이를 통해 제공됩니다.

NFS-Ganesha는 사용자 인스턴스가 MDS 및 기타 Ceph 서비스에 직접 액세스하지 못하도록 설정하여 보안을 향상시킵니다. 인스턴스에 Ceph 데몬에 직접 액세스할 수 없습니다.

CephFS nfs 토폴로지 nfs 드라이버

ce-client-access-CephFS-architect']

1.1.2.1. Ceph 서비스 및 클라이언트 액세스

Ceph가 오브젝트 및 블록 스토리지를 제공할 때 배포된 모니터, OSD, Rados 게이트웨이(RGW) 및 관리자 서비스 외에도 CephFS에 Ceph 메타데이터 서비스(MDS)가 필요하며 NFS 프로토콜을 사용하여 기본 CephFS에 대한 게이트웨이로 NFS-Ganesha 서비스가 필요합니다. 사용자를 향한 오브젝트 스토리지의 경우 RGW 서비스도 배포됩니다. 게이트웨이는 CephFS 클라이언트를 실행하여 Ceph 공용 네트워크에 액세스하며, 최종 사용자가 제어하는 대신 관리 중입니다.

NFS-Ganesha는 Ceph 공용 네트워크와 격리된 새로운 StorageNFS 네트워크로 인터페이스하는 자체 컨테이너에서 실행됩니다. RHOSP(Red Hat OpenStack Platform) director의 구성 가능한 네트워크 기능은 이 네트워크를 배포하고 이를 컨트롤러 노드에 연결합니다. 클라우드 관리자는 네트워크를 네트워킹(neutron) 프로바이더 네트워크로 구성할 수 있습니다.

NFS-Ganesha는 Ceph 공용 네트워크를 통해 CephFS에 액세스하고 StorageNFS 네트워크의 주소를 사용하여 NFS 서비스를 바인딩합니다.

NFS 공유에 액세스하려면 스토리지 NFS 네트워크에 연결된 추가 NIC를 사용하여 사용자 VM, 계산(nova) 인스턴스를 프로비저닝합니다. CephFS 공유의 내보내기 위치는 StorageNFS 네트워크에서 NFS-Ganesha 서버 VIP를 사용하는 표준 NFS IP:<path> 로 표시됩니다. 네트워크에서 사용자 VM의 IP 주소를 사용하여 NFS 공유에 대한 액세스 제어를 수행합니다.

네트워킹(neutron) 보안 그룹은 프로젝트 1에 속한 사용자 VM이 StorageNFS 네트워크에서 프로젝트 2에 속하는 사용자 VM에 액세스하지 못하도록 합니다. 프로젝트는 동일한 CephFS 파일 시스템을 공유하지만 사용자 VM은 내보내기 트리 아래 파일에만 액세스할 수 있기 때문에 /path/to/share1/…., /path/to/share2/….

1.1.2.2. NFS 내결함성을 통한 CephFS를 사용한 공유 파일 시스템 서비스

RHOSP(Red Hat OpenStack Platform) director가 Ceph 서비스 데몬을 시작하면 자체 HA(고가용성) 상태를 관리하고 일반적으로 이러한 데몬의 여러 인스턴스가 실행됩니다. 이와 반대로 이번 릴리스에서는 한 번에 하나의 NFS-Ganesha 인스턴스만 파일 공유를 제공할 수 있습니다.

NFS 공유를 통해 CephFS의 데이터 경로에서 단일 장애 지점을 방지하기 위해 NFS-Ganesha는 Pacemaker-Corosync 클러스터에서 관리하는 액티브-패시브 구성의 RHOSP 컨트롤러 노드에서 실행됩니다. NFS-Ganesha는 가상 서비스 IP 주소가 있는 가상 서비스로 컨트롤러 노드에서 작동합니다.

컨트롤러 노드가 실패하거나 특정 컨트롤러 노드의 서비스가 실패하고 해당 노드에서 복구할 수 없는 경우 Pacemaker-Corosync는 동일한 가상 IP 주소를 사용하여 다른 컨트롤러 노드에서 새 NFS-Ganesha 인스턴스를 시작합니다. 기존 클라이언트 마운트는 공유의 내보내기 위치에 가상 IP 주소를 사용하므로 보존됩니다.

기본 NFS 마운트 옵션 설정과 NFS 4.1 이상을 사용하면 TCP 연결이 재설정되고 클라이언트가 다시 연결됩니다. I/O 작업은 장애 조치 중에 일시적으로 응답을 중지하지만 실패하지는 않습니다. 애플리케이션 I/O도 응답을 중지하지만 페일오버가 완료되면 다시 시작됩니다.

새로운 연결, 새로운 잠금 상태 등은 서버가 클라이언트가 잠금을 회수할 때까지 대기하는 최대 90초의 유예 기간이 끝날 때까지 거부됩니다. NFS-Ganesha는 클라이언트 목록을 유지하고 모든 클라이언트가 잠금을 회수할 경우 유예 기간을 조기에 종료합니다.

참고

유예 기간의 기본값은 90초입니다. 이 값을 변경하려면 NFSv4 Grace_Period 구성 옵션을 편집합니다.

2장. NFS 설치를 통한 CephFS

2.1. NFS-Ganesha 배포가 포함된 CephFS

RHOSP(Red Hat OpenStack Platform) 환경의 NFS 설치를 통한 일반적인 Ceph 파일 시스템(CephFS)에는 다음과 같은 구성이 포함됩니다.

  • 컨테이너화된 Ceph 메타데이터 서버(MDS), Ceph 모니터(MON), manila 및 NFS-Ganesha 서비스를 실행하는 OpenStack 컨트롤러 노드. 이러한 서비스 중 일부는 동일한 노드에 공존하거나 하나 이상의 전용 노드를 가질 수 있습니다.
  • Ceph 스토리지 노드에서 실행되는 컨테이너화된 오브젝트 스토리지 데몬(OSD)이 있는 Ceph 스토리지 클러스터.
  • 프로젝트에서 NFS 공유 프로비저닝을 위한 NFS-Ganesha 서비스로의 액세스를 제공하는 격리된 StorageNFS 네트워크입니다.
중요

NFS를 통한 CephFS의 Shared File Systems 서비스(manila)는 Manila CSI를 통해 Red Hat OpenShift Container Platform에 대한 공유를 완전히 지원합니다. 이 솔루션은 대규모 배포에는 적합하지 않습니다. 중요한 권장 사항은 https://access.redhat.com/articles/6667651 에서 참조하십시오.

Shared File Systems 서비스(manila)는 프로젝트에서 드라이버 모듈에서 이행하는 파일 시스템 공유를 요청할 수 있는 API를 제공합니다. Red Hat CephFS의 드라이버인 manila.share.drivers.cephfs.driver.CephFSDriver 는 Shared File Systems 서비스를 CephFS 백엔드로 사용할 수 있음을 의미합니다. RHOSP director는 NFS 4.1 프로토콜을 통해 CephFS 공유를 제공하도록 NFS-Ganesha 게이트웨이를 배포하도록 드라이버를 구성합니다.

RHOSP director를 사용하여 오버클라우드에 CephFS 백엔드를 사용하여 공유 파일 시스템 서비스를 배포하면 director에서 heat 템플릿에 정의된 필수 스토리지 네트워크를 자동으로 생성합니다. 네트워크 계획에 대한 자세한 내용은 Director 설치 및 사용 가이드의 Overcloud 네트워크를 참조하십시오.

/etc/manila/manila.conf 파일을 편집하여 공유 파일 시스템 서비스를 수동으로 구성할 수 있지만 RHOSP director는 향후 오버클라우드 업데이트의 설정을 재정의할 수 있습니다. 공유 파일 시스템 백엔드를 구성하는 데 권장되는 방법은 director를 사용하는 것입니다.

참고

RHOSP(Red Hat OpenStack Platform) director에서 구성하지 않은 외부적으로 배포된 Ceph 클러스터에 NFS를 통한 CephFS를 추가하는 기능이 지원됩니다. 현재는 director에 하나의 CephFS 백엔드만 정의할 수 있습니다. 자세한 내용은 Integrating an Overcloud with an Existing Red Hat Ceph Cluster 가이드를 참조하십시오.

2.1.1. 요구 사항

NFS를 통한 CephFS는 RHOSP(Red Hat OpenStack Platform 버전) 13부터 완전히 지원됩니다. Red Hat Ceph Storage 버전 4.1 이상에서는 RHOSP 16.0 이상용 CephFS를 통한 RHOSP Shared File Systems 서비스가 지원됩니다. 시스템에 설치된 Ceph Storage 버전을 결정하는 방법에 대한 자세한 내용은 Red Hat Ceph Storage 릴리스 및 해당 Ceph 패키지 버전을 참조하십시오.

사전 요구 사항

  • 기본 동작과 마찬가지로 컨트롤러 노드에 공유 파일 시스템 서비스를 설치합니다.
  • 컨트롤러 노드의 Pacemaker 클러스터에 NFS-Ganesha 게이트웨이 서비스를 설치합니다.
  • 공유 파일 시스템 서비스를 사용하도록 CephFS 백엔드의 단일 인스턴스만 구성합니다. 단일 CephFS 백엔드를 사용하여 CephFS 이외의 다른 백엔드를 사용할 수 있습니다.
  • RHOSP director를 사용하여 스토리지 트래픽에 대한 추가 네트워크(StorageNFS)를 생성합니다.

2.1.2. 파일 공유

파일 공유는 OpenStack Shared File Systems 서비스(manila), Ceph 파일 시스템(CephFS) 및 Ceph ~ NFS 간에 약간 다릅니다.

공유 파일 시스템 서비스는 공유를 제공합니다. 이 공유는 개별 파일 시스템 네임스페이스이자 정의된 크기의 스토리지 단위입니다. 공유 파일 시스템 스토리지는 본질적으로 여러 클라이언트가 주어진 공유에 데이터를 연결, 읽기 및 쓸 수 있도록 허용하지만, 연결하기 전에 공유 파일 시스템 서비스 액세스 제어 API를 통해 각 클라이언트에 공유 액세스 권한을 부여해야 합니다.

CephFS에서는 공유가 정의된 할당량이 있는 디렉터리와 특정 스토리지 풀 또는 네임스페이스를 가리키는 레이아웃으로 간주됩니다. CephFS 할당량은 디렉터리의 크기를 공유 파일 시스템 서비스에서 생성하는 크기 공유로 제한합니다. NFS 공유를 통해 CephFS에 대한 액세스는 클라이언트의 IP 주소를 지정하여 제공됩니다.

NFS를 통해 CephFS를 사용하면 NFS 프로토콜을 통해 파일 공유가 프로비저닝되고 액세스합니다. NFS 프로토콜은 보안도 처리합니다.

2.1.3. NFS를 통해 CephFS에서 사용하는 격리된 네트워크

NFS 배포를 통한 CephFS는 격리된 추가 네트워크인 StorageNFS를 사용합니다. 이 네트워크가 배포되므로 사용자가 인프라 트래픽용으로 예약된 스토리지 또는 스토리지 관리 네트워크에 액세스하지 않고도 해당 네트워크에 NFS를 통해 공유를 마운트할 수 있습니다.

네트워크 격리에 대한 자세한 내용은 Director 설치 및 사용 가이드의 Basic network isolation 를 참조하십시오.

2.2. NFS를 통해 CephFS 및 사용자 지정 network_data 파일을 사용하여 RHOSP(Red Hat OpenStack Platform) 설치

NFS를 통해 CephFS를 설치하려면 다음 절차를 완료합니다.

  1. ceph-ansible 패키지를 설치합니다. 보기 2.2.1절. “ceph-ansible 패키지 설치”
  2. 사용자 지정 역할 파일, roles_data.yamlnetwork_data.yaml 파일을 생성합니다. 보기 2.2.1.1절. “사용자 지정 역할 파일 생성”
  3. 사용자 지정 역할 및 환경과 함께 openstack overcloud deploy 명령을 사용하여 Ceph, 공유 파일 시스템 서비스(manila) 및 CephFS를 배포합니다. 보기 2.2.2절. “업데이트된 환경 배포”
  4. 격리된 StorageNFS 네트워크를 구성하고 기본 공유 유형을 생성합니다. 보기 2.2.3절. “배포 후 구성 완료”

RHOSP(Red Hat Platform) 환경에서는 표준 stack 사용자를 사용합니다.

RHOSP 설치 또는 환경 업데이트의 일부로 작업을 수행합니다.

2.2.1. ceph-ansible 패키지 설치

언더클라우드 노드에 설치할 ceph-ansible 패키지를 설치하여 컨테이너화된 Ceph를 배포합니다.

절차

  1. stack 사용자로 언더클라우드 노드에 로그인합니다.
  2. ceph-ansible 패키지를 설치합니다.

    [stack@undercloud-0 ~]$ sudo dnf install -y ceph-ansible
    [stack@undercloud-0 ~]$ sudo dnf list ceph-ansible
    ...
    Installed Packages
    ceph-ansible.noarch    4.0.23-1.el8cp      @rhelosp-ceph-4-tools

2.2.1.1. 사용자 지정 역할 파일 생성

ControllerStorageNFS 사용자 지정 역할은 격리된 StorageNFS 네트워크를 구성합니다. 이 역할은 OS::TripleO::Services:CephNfs 명령으로 표시된 StorageNFS 네트워크 및 CephNfs 서비스를 추가하는 기본 Controller.yaml 역할 파일과 유사합니다.

[stack@undercloud ~]$ cd /usr/share/openstack-tripleo-heat-templates/roles
[stack@undercloud roles]$ diff Controller.yaml ControllerStorageNfs.yaml
16a17
> 	- StorageNFS
50a45
> 	- OS::TripleO::Services::CephNfs

openstack overcloud roles generate 명령에 대한 자세한 내용은 Advanced Overcloud Customization 가이드의 Roles 를 참조하십시오.

openstack overcloud roles generate 명령은 -o 다음에 지정된 서비스를 포함하여 사용자 지정 roles_data.yaml 파일을 생성합니다. 다음 예제에서 생성된 roles_data.yaml 파일에는 ControllerStorageNfs,ComputeCephStorage 에 대한 서비스가 있습니다.

참고

기존 roles_data.yaml 파일이 있는 경우 이를 수정하여 ControllerStorageNfs,ComputeCephStorage 서비스를 구성 파일에 추가합니다. 자세한 내용은 Advanced Overcloud Customization 가이드의 Roles 를 참조하십시오.

절차

  1. stack 사용자로 언더클라우드 노드에 로그인합니다.
  2. openstack overcloud roles generate 명령을 사용하여 roles_data.yaml 파일을 생성합니다.

    [stack@undercloud ~]$ openstack overcloud roles generate --roles-path /usr/share/openstack-tripleo-heat-templates/roles -o /home/stack/roles_data.yaml ControllerStorageNfs Compute CephStorage

2.2.2. 업데이트된 환경 배포

환경을 배포할 준비가 되면 NFS-Ganesha를 사용하여 CephFS를 실행하는 데 필요한 사용자 지정 환경 및 역할과 함께 openstack overcloud deploy 명령을 사용합니다.

Overcloud deploy 명령에는 기타 필수 옵션 외에 다음 옵션이 있습니다.

동작옵션추가 정보

network _data_ganesha.yaml을 사용하여 StorageNFS 네트워크를 추가합니다.

-n /usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml

2.2.2.1절. “StorageNFS 및 network_data_ganesha.yaml 파일”

이전 섹션의 roles_data.yaml 파일에 정의된 사용자 지정 역할을 추가합니다.

-r /home/stack/roles_data.yaml

2.2.1.1절. “사용자 지정 역할 파일 생성”

ceph-ansible.yaml을 사용하여 Ceph 데몬 배포

-e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml

Deploying an Overcloud with Containerized Red Hat Ceph 가이드에서 Overcloud 배포 시작 가이드.

ceph-mds.yaml을 사용하여 Ceph 메타데이터 서버를 배포합니다.

-e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-mds.yaml

Deploying an Overcloud with Containerized Red Hat Ceph 가이드에서 오버클라우드 배포 시작 가이드

NFS 백엔드를 통해 CephFS를 사용하여 공유 파일 시스템(manila) 서비스를 배포합니다. director를 사용하여 NFS-Ganesha를 구성합니다.

-e /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml

2.2.2.2절. “CephFS 백엔드 환경 파일”

다음 예제에서는 NFS-Ganesha, Ceph 클러스터, Ceph MDS 및 격리된 StorageNFS 네트워크를 통해 CephFS를 배포하는 옵션이 포함된 openstack overcloud deploy 명령을 보여줍니다.

[stack@undercloud ~]$ openstack overcloud deploy \
--templates /usr/share/openstack-tripleo-heat-templates  \
-n /usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml \
-r /home/stack/roles_data.yaml \
-e /home/stack/containers-default-parameters.yaml   \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml   \
-e /home/stack/network-environment.yaml  \
-e/usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml  \
-e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-mds.yaml  \
-e /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml

openstack overcloud deploy 명령에 대한 자세한 내용은 Director 설치 및 사용 가이드의 Deployment 명령을 참조하십시오.

2.2.2.1. StorageNFS 및 network_data_ganesha.yaml 파일

구성 가능 네트워크를 사용하여 사용자 지정 네트워크를 정의하고 역할에 할당합니다. 표준 network_data.yaml 파일을 사용하는 대신 network_ data_ganesha.yaml 파일을 사용하여 StorageNFS 구성 가능 네트워크를 구성할 수 있습니다. 이 두 역할은 /usr/share/openstack-tripleo-heat-templates 디렉터리에서 사용할 수 있습니다.

network_data_ganesha.yaml 파일에는 격리된 StorageNFS 네트워크를 정의하는 추가 섹션이 포함되어 있습니다. 기본 설정은 대부분의 설치에서 작동하지만, VLAN ID, 서브넷 및 기타 설정을 포함한 네트워크 설정을 추가하도록 YAML 파일을 편집해야 합니다.

name: StorageNFS
enabled: true
vip: true
name_lower: storage_nfs
vlan: 70
ip_subnet: '172.17.0.0/20'
allocation_pools: [{'start': '172.17.0.4', 'end': '172.17.0.250'}]
ipv6_subnet: 'fd00:fd00:fd00:7000::/64'
ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:7000::4', 'end': 'fd00:fd00:fd00:7000::fffe'}]

구성 가능한 네트워크에 대한 자세한 내용은 Advanced Overcloud Customization 가이드에서 Composable Networks 사용을 참조하십시오.

2.2.2.2. CephFS 백엔드 환경 파일

CephFS 백엔드인 manila-cephfsganesha-config.yaml 을 정의하는 통합 환경 파일은 /usr/share/openstack-tripleo-heat-templates/environments/ 에 있습니다.

manila-cephfsganesha-config.yaml 환경 파일에는 Shared File Systems 서비스(manila)의 배포와 관련된 설정이 포함되어 있습니다. 백엔드 기본 설정은 대부분의 환경에서 작동합니다. 다음 예에서는 director에서 공유 파일 시스템 서비스를 배포하는 동안 사용하는 기본값을 보여줍니다.

[stack@undercloud ~]$ cat /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml
# A Heat environment file which can be used to enable a
# a Manila CephFS-NFS driver backend.
resource_registry:
  OS::TripleO::Services::ManilaApi: ../deployment/manila/manila-api-container-puppet.yaml
  OS::TripleO::Services::ManilaScheduler: ../deployment/manila/manila-scheduler-container-puppet.yaml
  # Only manila-share is pacemaker managed:
  OS::TripleO::Services::ManilaShare: ../deployment/manila/manila-share-pacemaker-puppet.yaml
  OS::TripleO::Services::ManilaBackendCephFs: ../deployment/manila/manila-backend-cephfs.yaml
  # ceph-nfs (ganesha) service is installed and configured by ceph-ansible
  # but it's still managed by pacemaker
  OS::TripleO::Services::CephNfs: ../deployment/ceph-ansible/ceph-nfs.yaml

parameter_defaults:
  ManilaCephFSBackendName: cephfs 1
  ManilaCephFSDriverHandlesShareServers: false 2
  ManilaCephFSCephFSAuthId: 'manila' 3
  ManilaCephFSCephFSEnableSnapshots: false 4
  # manila cephfs driver supports either native cephfs backend - 'CEPHFS'
  # (users mount shares directly from ceph cluster), or nfs-ganesha backend -
  # 'NFS' (users mount shares through nfs-ganesha server)
  ManilaCephFSCephFSProtocolHelperType: 'NFS'

parameter_defaults 헤더는 구성을 시작하는 것을 나타냅니다. 이 섹션에서는 설정을 편집하여 resource_registry 에 설정된 기본값을 재정의할 수 있습니다. 여기에는 CephFS 백엔드의 기본값을 설정하는 OS::Tripleo::Services::ManilaBackendCephFs 로 설정된 값이 포함됩니다.

1
ManilaCephFSBackendName 은 CephFS 백엔드의 manila 구성 이름을 설정합니다. 이 경우 기본 백엔드 이름은 cephfs 입니다.
2
ManilaCephFSDriverHandlesShareServers 는 공유 서버의 라이프사이클을 제어합니다. false로 설정하면 드라이버에서 라이프사이클을 처리하지 않습니다. 지원되는 유일한 옵션입니다.
3
ManilaCephFSAuthId 는 director에서 Ceph 클러스터에 액세스하기 위해 생성한 Ceph 인증 ID를 정의합니다.
4
ManilaCephFSCephFSEnableSnapshots는 스냅샷 활성화를 제어합니다. false 값은 스냅샷이 활성화되지 않았음을 나타냅니다. 이 기능은 현재 지원되지 않습니다.

환경 파일에 대한 자세한 내용은 Director 설치 및 사용 가이드 의 환경 파일을 참조하십시오.

2.2.3. 배포 후 구성 완료

NFS 공유를 만들고 사용자 액세스 권한을 부여하며 NFS 공유를 마운트하기 전에 배포 후 구성 작업을 완료해야 합니다.

  • 네트워킹 서비스(neutron) StorageNFS 네트워크를 격리된 데이터 센터 Storage NFS 네트워크에 매핑합니다.
  • 기본 공유 유형을 생성합니다.

이러한 단계를 완료하고 나면 테넌트 compute 인스턴스가 NFS 공유를 생성, 허용 및 마운트할 수 있습니다.

2.2.3.1. 스토리지 공급자 네트워크 생성

격리된 새로운 StorageNFS 네트워크를 네트워킹(neutron) 프로바이더 네트워크에 매핑해야 합니다. 계산 VM은 네트워크에 연결하여 NFS-Ganesha 게이트웨이에서 제공하는 공유 내보내기 위치에 액세스합니다.

공유 파일 시스템 서비스를 사용한 네트워크 보안에 대한 자세한 내용은 보안 및 강화 가이드에서 공유 파일 시스템 서비스 강화를 참조하십시오.

절차

openstack network create 명령은 StorageNFS neutron 네트워크의 구성을 정의합니다.

  1. 언더클라우드 노드에서 다음 명령을 입력합니다.

    [stack@undercloud ~]$ source ~/overcloudrc
  2. 언더클라우드 노드에서 StorageNFS 네트워크를 생성합니다.

    (overcloud) [stack@undercloud-0 ~]$ openstack network create StorageNFS --share  --provider-network-type vlan --provider-physical-network datacentre --provider-segment 70

    다음 옵션을 사용하여 이 명령을 입력할 수 있습니다.

    • tripleo-heat -templates에서 NeutronBridgeMappings를 통해 br-isolated 브리지에 대한 다른 태그를 설정하지 않는 한 --provider-physical-network 옵션의 경우 기본값 datacentre 를 사용합니다.
    • provider -segment 옵션의 경우 heat 템플릿에서 StorageNFS 격리 네트워크에 설정된 VLAN 값 /usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml 을 사용합니다. 배포자가 격리된 네트워크 정의를 수정하지 않는 한 이 값은 70입니다.
    • provider -network-type 옵션의 경우 vlan 값을 사용합니다.

2.2.3.2. 공유 공급자 StorageNFS 네트워크 구성

neutron-shared 프로바이더 네트워크에서 해당 StorageNFSSubnet 을 생성합니다. 서브넷이 network_ data.yml 파일의 storage_nfs 네트워크 정의와 같은지 확인하고 StorageNFS 서브넷의 할당 범위와 해당 언더클라우드 서브넷이 겹치지 않는지 확인합니다. StorageNFS 서브넷은 NFS 공유를 제공하는 전용이므로 게이트웨이가 필요하지 않습니다.

사전 요구 사항

  • 할당 풀의 시작 및 끝 IP 범위.
  • 서브넷 IP 범위.
2.2.3.2.1. 공유 공급자 StorageNFS IPv4 네트워크 구성

절차

  1. Overcloud 노드에 로그인합니다.
  2. 오버클라우드 자격 증명을 가져옵니다.
  3. example 명령을 사용하여 네트워크를 프로비저닝하고 다음 업데이트를 수행합니다.

    1. start=172.17.0.4,end=172.17.0.250 IP 값을 네트워크의 IP 값으로 바꿉니다.
    2. 172.17.0.0/20 서브넷 범위를 네트워크의 서브넷 범위로 바꿉니다.
[stack@undercloud-0 ~]$ openstack subnet create --allocation-pool start=172.17.0.4,end=172.17.0.250 --dhcp --network StorageNFS --subnet-range 172.17.0.0/20 --gateway none StorageNFSSubnet
2.2.3.2.2. 공유 공급자 StorageNFS IPv6 네트워크 구성

절차

  1. Overcloud 노드에 로그인합니다.
  2. 필요한 경우 sample 명령을 사용하여 네트워크를 프로비저닝하고 값을 업데이트합니다.

    • fd00:fd00:fd00:7000::/64 서브넷 범위를 네트워크의 서브넷 범위로 바꿉니다.
[stack@undercloud-0 ~]$ openstack subnet create --ip-version 6 --dhcp --network StorageNFS --subnet-range fd00:fd00:fd00:7000::/64 --gateway none --ipv6-ra-mode dhcpv6-stateful --ipv6-address-mode dhcpv6-stateful StorageNFSSubnet -f yaml

2.2.3.3. 기본 공유 유형 구성

공유 파일 시스템 서비스를 사용하여 특정 설정으로 공유를 생성하는 데 사용할 수 있는 공유 유형을 정의할 수 있습니다. 공유 유형은 블록 스토리지 볼륨 유형처럼 작동합니다. 각 유형에는 추가 사양과 같은 설정이 연결되어 있습니다. 공유 생성 중에 유형을 호출할 때 설정이 공유 파일 시스템에 적용됩니다.

RHOSP(Red Hat OpenStack Platform) director를 사용하면 사용자가 액세스할 수 있도록 클라우드를 열기 전에 기본 공유 유형을 생성해야 합니다. NFS가 포함된 CephFS의 경우 manila type-create 명령을 사용합니다.

manila type-create default false

공유 유형에 대한 자세한 내용은 스토리지 가이드공유 유형 만들기를 참조하십시오.

3장. NFS 배포를 통해 CephFS 성공 확인

NFS를 통해 CephFS를 Shared File Systems 서비스(manila)의 백엔드로 배포할 때 다음과 같은 새로운 요소를 오버클라우드 환경에 추가합니다.

  • StorageNFS network
  • 컨트롤러의 Ceph MDS 서비스
  • 컨트롤러의 NFS-Ganesha 서비스

NFS를 통한 CephFS와 함께 공유 파일 시스템 서비스를 사용하는 방법에 대한 자세한 내용은 스토리지 가이드의 공유 파일 시스템 서비스를 참조하십시오.

클라우드 관리자는 서비스 사용자가 사용할 수 있도록 하기 전에 NFS 환경을 통해 CephFS의 안정성을 확인해야 합니다.

3.1. 격리된 StorageNFS 네트워크 생성 확인

NFS를 통해 CephFS를 공유 파일 시스템 서비스 백엔드로 배포하는 데 사용되는 network_data_ganesha.yaml 파일은 StorageNFS VLAN을 생성합니다. 격리된 StorageNFS 네트워크가 있는지 확인하려면 다음 단계를 완료합니다.

사전 요구 사항

절차

  1. Overcloud의 컨트롤러 중 하나에 로그인합니다.
  2. 다음 명령을 입력하여 연결된 네트워크를 확인하고 network_data_ganesha.yaml에 설정된 VLAN이 있는지 확인합니다.

    $ ip a
    15: vlan310: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
        link/ether 32:80:cf:0e:11:ca brd ff:ff:ff:ff:ff:ff
        inet 172.16.4.4/24 brd 172.16.4.255 scope global vlan310
           valid_lft forever preferred_lft forever
        inet 172.16.4.7/32 brd 172.16.4.255 scope global vlan310
           valid_lft forever preferred_lft forever
        inet6 fe80::3080:cfff:fe0e:11ca/64 scope link
           valid_lft forever preferred_lft forever

3.2. Ceph MDS 서비스 확인

systemctl status 명령을 사용하여 Ceph MDS 서비스 상태를 확인합니다.

절차

  • MDS 컨테이너의 상태를 확인하려면 모든 컨트롤러 노드에서 다음 명령을 입력합니다.

    $ systemctl status ceph-mds<@CONTROLLER-HOST>

    예제:

$ systemctl status ceph-mds@controller-0.service

ceph-mds@controller-0.service - Ceph MDS
   Loaded: loaded (/etc/systemd/system/ceph-mds@.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2018-09-18 20:11:53 UTC; 6 days ago
 Main PID: 65066 (conmon)
   Tasks: 16 (limit: 204320)
   Memory: 38.2M
   CGroup: /system.slice/system-ceph\x2dmds.slice/ceph-mds@controller-0.service
         └─60921 /usr/bin/podman run --rm --net=host --memory=32000m --cpus=4 -v
/var/lib/ceph:/var/lib/ceph:z -v /etc/ceph:/etc/ceph:z -v
/var/run/ceph:/var/run/ceph:z -v /etc/localtime:/etc/localtime:ro>

3.3. Ceph 클러스터 상태 확인

Ceph 클러스터 상태를 확인하려면 다음 단계를 완료합니다.

절차

  1. 활성 컨트롤러 노드에 로그인합니다.
  2. 다음 명령을 실행합니다.

    $ sudo ceph -s
    
    cluster:
        id: 3369e280-7578-11e8-8ef3-801844eeec7c
        health: HEALTH_OK
    
      services:
        mon: 3 daemons, quorum overcloud-controller-1,overcloud-controller-2,overcloud-controller-0
        mgr: overcloud-controller-1(active), standbys: overcloud-controller-2, overcloud-controller-0
        mds: cephfs-1/1/1 up  {0=overcloud-controller-0=up:active}, 2 up:standby
        osd: 6 osds: 6 up, 6 in
    결과
    대기 모드에는 활성 MDS와 두 개의 MDS가 있습니다.
  3. Ceph 파일 시스템의 상태를 자세히 확인하려면 다음 명령을 입력하고 <cephfs> 를 Ceph 파일 시스템의 이름으로 바꿉니다.

    $ sudo ceph fs ls
    
    name: cephfs, metadata pool: manila_metadata, data pools: [manila_data]

3.4. NFS-Ganesha 및 manila-share 서비스 상태 확인

다음 단계를 완료하여 NFS-Ganesha 및 manila-share 서비스의 상태를 확인합니다.

절차

  1. 컨트롤러 노드 중 하나에서 다음 명령을 입력하여 ceph-nfs 및 openstack- manila-share started가 시작되었는지 확인합니다.

    $ pcs status
    
    ceph-nfs       (systemd:ceph-nfs@pacemaker):   Started overcloud-controller-1
    
    podman container: openstack-manila-share [192.168.24.1:8787/rhosp-rhel8/openstack-manila-share:pcmklatest]
       openstack-manila-share-podman-0      (ocf::heartbeat:podman):        Started overcloud-controller-1

3.5. manila-api 서비스 확인 스케줄러 승인 및 서비스 공유

다음 단계를 완료하여 manila-api 서비스가 스케줄러를 승인하고 서비스를 공유하는지 확인합니다.

절차

  1. 언더클라우드에 로그인합니다.
  2. 다음 명령을 실행합니다.

    $ source /home/stack/overcloudrc
  3. 다음 명령을 입력하여 manila-scheduler 및 manila- share 가 활성화되어 있는지 확인합니다.

    $ manila service-list
    
    | Id | Binary          | Host             | Zone | Status | State | Updated_at |
    
    | 2 | manila-scheduler | hostgroup        | nova | enabled | up | 2018-08-08T04:15:03.000000 |
    | 5 | manila-share | hostgroup@cephfs | nova | enabled | up | 2018-08-08T04:15:03.000000 |

법적 공지

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.