가볍게 CephFS 만들고 Linux에 붙여보기

CephFS 볼륨 만들기

Ceph 클러스터의 스토리지를 다른 컴퓨터에서 사용하려면, 제일 먼저 볼륨이란 것을 만들어야 합니다. 여기서는 Ceph File System(CephFS) 방식의 볼륨을 하나 만들어 보겠습니다.

CephFS와 관련된 명령은 예제 처럼 ceph fs 명령을 사용합니다. 볼륨(volume)을 만들(create)고, 이 볼륨의 이름은 cephfs로 하겠습니다.

Shell

잘 만들어지면, 아무 내용 없이 그냥 프롬프트가 표시됩니다. ceph fs ls 명령을 이용하면 CephFS 목록을 볼 수 있습니다.

Shell

name: cephfs 가 조회되고 있습니다. 잘 만들어졌습니다.

클라이언트 준비

참고: 클라이언트는 실습환경에서 Management 노드를 이용합니다. Rocky Linux 9.4의 Standard 패키지 환경을 기준으로 합니다.

Ceph 패키지가 설치되어서 CephFS를 마운트할 수 있는지 확인합니다. 이 경우는 설치되지 않았습니다.

Shell

cephadm을 설치하고, 실행 권한을 줍니다.

Shell

cephadm 명령을 이용해서 reef 릴리즈 저장소를 추가합니다.

Shell

CephFS를 마운트 할 때는 1)커널 드라이버를 이용한 방식, 2) FUSE를 이용한 방식 2가지가 있습니다. 여기서는 커널 드라이버 방식을 사용하겠습니다.
cephadm install 명령으로 ceph-common 패키지를 설치합니다. 인터넷 연결이 느려서인지 몇십초 정도 걸렸습니다.

Shell

CephFS를 마운트해서 사용할 클라이언트에 /etc/ceph 디렉토리를 만들고, Ceph 클러스터 노드(mon 노드 중 하나)에서 ceph config generate-minimal-conf 명령으로 ceph.conf 파일을 생성합니다.

Shell

클라이언트 사용자 만들기

CephFS를 마운트해서 사용하려면 적절한 권한을 가진 클라이언트 사용자가 있어야 합니다.
아래 명령어로 cephfs/share1 디렉토리에 대해서 읽기/쓰기(rw) 권한을 가진 클라이언트용(client.) 사용자(user1)를 만듭니다.

Shell

클라이언트 사용자 인증에 사용할 키(key) 값이 잘 생성됐습니다.

클라이언트 사용자의 키 값은 ceph auth get 명령을 이용해서 조회해 볼 수 있습니다. 여러가지 내용이 있지만 키 값이 조회된다는 것만 알고 넘어가겠습니다.

Shell

이제 이 키 값을 클라이언트에서 인증용으로 사용할 수 있게 가져가야 합니다.
우선 클라이언트 user1(client.user1)의 인증 정보를 조회해서(ceph auth get)으로 지정한 파일(-o ceph.client.user1.keyring)로 내보냅니다.

Shell

Shell

저장된 키링 파일을 클라이언트(172.16.1.2)에 복사합니다.

Shell

클라이언트에서 키링 파일의 파일 권한을 644로 설정합니다.

Shell

클라이언트에 마운트

마운트 포인트로 사용할 디렉토리를 만들(mkdir -p)어야 합니다. 이름은 cephfs로 하겠습니다.

Shell

이제 mount -t ceph 명령으로 Ceph 클러스터에 있는 CephFS 볼륨 중에 cephfs(fs=cephfs)를 user1 사용자 인증 정보(name=user1)를 사용해서/mnt/cephfs 디렉토리에 마운트해 보겠습니다.

Shell

잘 붙었습니다!!!

정말 잘 동작하는지 파일을 만들어 보겠습니다.

Shell

인터넷 검색하다보면 mount 할 때 :/ 앞에 Ceph 클러스터 노드들 주소 정보도 줄줄이 넣어주고, 사용자 키 값도 넣어주고 하는 형태의 예가 많이 나옵니다.
현재는 특별히 지정하지 않아도 /etc/ceph 디렉토리에 있는 ceph.conf와 같은 디렉토리에 있는 사용자 키링 파일에서 정보를 자동으로 가져옵니다. 그래서 간단하게 입력해서 사용할 수 있습니다.

참고 : Ceph 버전에 따라서 차이는 있을 수 있습니다.

fstab 수정

이제 /etc/fstab 파일에 마운트 정보를 추가해서, 리부팅해도 자동으로 마운트되게 해보겠습니다. fstab 파일에 다음과 같은 내용을 추가해줍니다.

Shell

해석해보면 다음과 같습니다.

  • :/ : 마운트할 대상은 Ceph 클러스터 볼륨의 / 디렉토리
  • /mnt/cephfs 마운트 위치
  • ceph : 파일 시스템 종류
  • name=user1 : Ceph 클러스터 연결시 사용할 인증 정보
  • _netdev : 네트워크 장치이므로, 네트워크 연결 후에 마운트
  • defaults : 파일 시스템 속성 설정. defaults는 rw, nouser, auto, exec, suid가 적용
  • 0 : dump 명령으로 덤프되지 않는 파일시스템
  • 2 : 루트 파일시스템이 아닌 파일시스템

실습 환경에서 편집한 예는 다음과 같습니다.

Shell

변경 값을 적용하기 위해서 시스템 데몬들을 다시 로드(systemctl daemon-reload)하고, 기존에 마운트된 파일 시스템을 때어내고(umount /mnt/cephfs), 다시 /mnt/cephfs를 마운트(mount /mnt/cephfs) 해보겠습니다.

Shell

Ceph Dashboard와 CephFS

Ceph Dashboard에서 CephFS와 관련된 정보는 “File Systems” 메뉴에서 볼 수 있습니다.

Ceph Dashboard 웹 페이지에 접속해서 File Systems > cephfs 항목을 확장(> 눌러서 V로)하면 그림과 같은 볼륨 정보도 볼 수 있습니다.

“클라이언트들” 탭을 누르면 그림과 같은 클라이언트 연결 정보도 볼 수 있습니다.

Ceph File System 소개

Ceph File Sytem(줄여서 CephFS)은 Ceph의 분산형 객체 저장소인 RADOS를 기반으로 구축된 POSIX 호환 파일 시스템입니다. CephFS는 공유 홈 디렉터리, HPC 스크래치 공간, 분산 워크플로 공유 스토리지와 같은 전통적인 사용 사례를 포함해 다양한 애플리케이션을 위한 최첨단, 다용도, 고가용성, 고성능 파일 저장소를 제공하기 위해 노력하고 있습니다.

CephFS는 새로운 아키텍처 선택을 통해 이러한 목표를 달성합니다. 특히 파일 메타데이터는 파일 데이터와 분리된 RADOS 풀에 저장되며, 더 높은 처리량의 워크로드를 지원하도록 확장 가능한 메타데이터 서버 클러스터, 즉 MDS를 통해 제공됩니다. 파일 시스템의 클라이언트는 파일 데이터 블록을 읽고 쓰기 위해 RADOS에 직접 액세스할 수 있습니다. 따라서 기본 RADOS 개체 저장소의 크기에 따라 워크로드를 선형적으로 확장할 수 있습니다. 클라이언트를 위해 데이터 I/O를 중개하는 게이트웨이나 브로커가 없습니다.

데이터에 대한 액세스는 클라이언트와 MDS가 공동으로 관리하는 분산 메타데이터 캐시 상태에 대한 권한 역할을 하는 MDS 클러스터를 통해 조정됩니다. 메타데이터에 대한 변경은 각 MDS에서 일련의 효율적인 쓰기 작업을 통해 RADOS의 저널에 집계되며, 메타데이터 상태는 MDS에 로컬로 저장되지 않습니다. 이 모델을 사용하면 POSIX 파일 시스템의 컨텍스트 내에서 클라이언트 간에 일관되고 신속한 협업이 가능합니다.

CephFS는 새로운 설계와 파일 시스템 연구에 대한 기여로 수많은 학술 논문의 주제입니다. Ceph에서 가장 오래된 스토리지 인터페이스이며 한때 RADOS의 주요 사용 사례였습니다. 지금은 다른 두 개의 스토리지 인터페이스와 결합되어 최신 통합 스토리지 시스템을 구성합니다: RBD(Ceph Block Device)와 RGW(Ceph Object Storage Gateway)입니다.

참고자료

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like