티스토리 뷰

DEV/CONSOLE

Glusterfs

SBP 2025. 5. 15. 09:03

 

GlusterFS 정보

GlusterFS는 확장 가능한(scalable) 오픈 소스 네트워크 파일 시스템(Network Filesystem)입니다. 여러 서버의 로컬 스토리지 자원을 하나의 큰 스토리지 풀(Storage Pool)로 묶어 단일 글로벌 네임스페이스를 제공하는 소프트웨어 정의 분산 스토리지(Software-Defined Distributed Storage) 솔루션입니다.

하드웨어 종속적이지 않고 범용 하드웨어를 사용하여 대규모 스토리지 클러스터를 구축할 수 있으며, 데이터 중복성 및 고가용성 기능을 제공합니다.

GlusterFS 아키텍처

GlusterFS는 기본적으로 클라이언트-서버 모델로 작동하며, 다음과 같은 핵심 구성 요소로 이루어집니다.

  • 브릭 (Brick):
    GlusterFS 볼륨을 구성하는 가장 기본적인 스토리지 단위입니다. 클러스터 내 각 서버(노드)의 특정 디렉토리가 하나의 브릭이 됩니다. 예를 들어, 서버 1의 /data/brick1 디렉토리가 브릭이 될 수 있습니다.
  • 볼륨 (Volume):
    하나 이상의 브릭들을 논리적으로 묶어서 만든 분산 파일 시스템입니다. 클라이언트는 볼륨 이름으로 접근하며, 실제 데이터는 볼륨을 구성하는 여러 브릭에 분산되거나 복제되어 저장됩니다.
  • 트랜슬레이터 (Translator):
    GlusterFS의 모듈화된 핵심 부분입니다. 브릭들을 조합하고, 클라이언트 요청을 가로채서 데이터 분산, 복제, 캐싱, 부하 분산 등 다양한 기능을 수행합니다. GlusterFS의 유연성은 트랜슬레이터 체인 구조에서 비롯됩니다.
  • 클라이언트 (Client):
    GlusterFS 볼륨에 접근하여 데이터를 읽고 쓰는 시스템입니다. FUSE(Filesystem in Userspace) 드라이버를 사용하여 GlusterFS 볼륨을 로컬 파일 시스템처럼 마운트하거나, 네이티브 GlusterFS 클라이언트 라이브러리를 사용하는 애플리케이션에서 직접 접근할 수 있습니다.

GlusterFS의 특징 중 하나는 중앙 집중식 메타데이터 서버가 없다는 것입니다. 각 브릭은 자체 메타데이터를 관리하며, 클라이언트가 직접 브릭들과 통신하여 메타데이터 및 데이터를 분산적으로 처리합니다. 이는 중앙 메타데이터 서버의 단일 실패 지점(Single Point of Failure, SPOF) 문제를 해결합니다.

GlusterFS 볼륨 타입

브릭들을 조합하는 방식에 따라 다양한 볼륨 타입을 생성하여 스토리지의 특성을 조절할 수 있습니다.

  • 분산 볼륨 (Distribute Volume):
    가장 기본적인 볼륨 타입입니다. 여러 브릭에 데이터를 순차적으로 분산하여 저장합니다. 저장 용량이 단순 합산되지만 데이터 중복성은 없습니다. 브릭 중 하나가 실패하면 해당 브릭의 데이터에 접근할 수 없습니다.
  • 복제 볼륨 (Replicate Volume):
    여러 브릭에 데이터를 동일하게 복제하여 저장합니다. 데이터 중복성을 제공하여 고가용성을 확보할 수 있습니다. 복제되는 브릭 수만큼 용량이 소모됩니다 (예: 2-way 복제 시 용량은 절반). N개의 복제본을 가지는 볼륨은 최소 N개의 브릭(또는 N의 배수)으로 구성됩니다.
  • 스트라이프 볼륨 (Striped Volume):
    하나의 파일을 여러 조각으로 나누어 여러 브릭에 동시에 저장합니다. 대용량 파일의 읽기/쓰기 성능을 향상시킬 수 있지만, 데이터 중복성은 없습니다. N개의 스트라이프 볼륨은 N개의 브릭(또는 N의 배수)으로 구성됩니다.
  • 분산-복제 볼륨 (Distribute+Replicate Volume):
    가장 흔히 사용되는 형태입니다. 먼저 데이터를 여러 브릭 그룹에 분산(Distribute)시킨 후, 각 그룹 내에서 데이터를 복제(Replicate)합니다. 확장성(분산)과 고가용성/중복성(복제)을 동시에 제공합니다. (N x M)개의 브릭으로 구성됩니다. N은 분산 단위 수, M은 복제본 수입니다.
  • 이 외에도 스트라이프-복제, 복제-스트라이프 등 다양한 조합이 가능합니다.

주요 특징 및 장점

  • 스케일 아웃 (Scale-out):
    필요에 따라 서버(노드)와 스토리지(브릭)를 추가하여 용량 및 성능을 선형적으로 확장할 수 있습니다.
  • 고가용성 및 데이터 중복성:
    복제 볼륨 구성을 통해 브릭 또는 서버 실패 시에도 서비스 연속성과 데이터 가용성을 보장합니다.
  • 유연성:
    다양한 볼륨 타입 조합으로 성능, 용량, 중복성 요구사항에 맞춰 스토리지를 구성할 수 있습니다.
  • 단일 실패 지점 없음 (No SPOF):
    중앙 메타데이터 서버가 없어 단일 실패 지점이 없으며, 분산된 아키텍처는 시스템 전반의 탄력성을 높입니다.
  • 자체 복구 (Self-healing):
    네트워크 문제나 서버 다운 등으로 브릭에 접근할 수 없게 되었다가 복구되면, GlusterFS가 자동으로 누락된 데이터를 감지하고 복제본 간에 데이터를 동기화하여 일관성을 유지합니다 (셀프 힐링).
  • 범용 하드웨어 사용:
    고가의 전용 스토리지 하드웨어 없이 일반적인 서버와 디스크로 스토리지 클러스터를 구축할 수 있어 비용 효율적입니다.

Linux에 GlusterFS 설치 및 기본 설정 예시

다음은 최소 2대 이상의 Linux 서버(예: `server1`, `server2`)를 사용하여 간단한 복제 볼륨을 설정하는 예시입니다.

전제: 클러스터에 참여할 모든 서버에 아래 단계를 수행해야 합니다. 서버 간 호스트 이름 또는 IP로 통신 가능해야 합니다.

  1. GlusterFS 패키지 설치:
    클러스터에 참여할 모든 서버에 GlusterFS 서버 패키지를 설치합니다.
    # Debian/Ubuntu 계열
    sudo apt update
    sudo apt install glusterfs-server
    
    # RHEL/CentOS/AlmaLinux/Rocky Linux 계열
    sudo yum install glusterfs-server
    # 또는 dnf 사용 시
    # sudo dnf install glusterfs-server
  2. Glusterd 서비스 시작 및 자동 실행 설정:
    모든 서버에서 GlusterFS 데몬(glusterd)을 시작하고 시스템 부팅 시 자동 실행되도록 설정합니다.
    sudo systemctl enable glusterd
    sudo systemctl start glusterd
    # 상태 확인
    sudo systemctl status glusterd
  3. 브릭으로 사용할 디렉토리 생성:
    각 서버에서 GlusterFS 브릭으로 사용할 디렉토리를 생성합니다. 이 디렉토리가 실제 데이터가 저장되는 공간이 됩니다.
    sudo mkdir -p /gluster/brick1
    *(브릭은 비어 있는 디렉토리를 사용하는 것이 좋습니다.)*
  4. 피어(Peer) 연결:
    클러스터 내 서버들이 서로를 인식하도록 피어 연결을 설정합니다. 이는 클러스터의 한 서버에서 다른 서버들로 연결하는 명령을 실행합니다. (모든 서버에서 이 명령을 실행할 필요는 없습니다. 한 서버에서 나머지 모든 서버에게 `probe` 명령을 날리면 됩니다.)
    # server1에서 실행 (server2와 server3가 있다면)
    sudo gluster peer probe server2.example.com
    # sudo gluster peer probe server3.example.com ...
    피어 상태 확인:
    sudo gluster peer status
  5. 볼륨 생성:
    피어 연결이 완료된 후, 클러스터 내 아무 서버에서 볼륨을 생성합니다. 복제 볼륨(2-way) 예시입니다. (`replica 2` 옵션 사용)
    # 복제 볼륨 생성 예시 (2-way)
    sudo gluster volume create my-replicated-volume replica 2 server1.example.com:/gluster/brick1 server2.example.com:/gluster/brick1 force
    *`force` 옵션은 브릭 디렉토리가 비어 있지 않거나 권장 설정이 아닐 때 강제로 생성할 때 사용합니다. 프로덕션 환경에서는 신중해야 합니다.*
    *분산 볼륨: sudo gluster volume create my-distribute-volume server1:/gluster/brick1 server2:/gluster/brick1 ...*
    *분산-복제 볼륨 (server1, server2 복제 그룹 1 / server3, server4 복제 그룹 2): sudo gluster volume create my-distrep-volume replica 2 server1:/gluster/brick1 server2:/gluster/brick1 server3:/gluster/brick1 server4:/gluster/brick1 force*
  6. 볼륨 시작:
    생성된 볼륨을 시작하여 클라이언트가 접근할 수 있도록 활성화합니다.
    sudo gluster volume start my-replicated-volume
  7. 볼륨 정보 확인:
    볼륨 상태 및 정보를 확인합니다.
    sudo gluster volume info
    sudo gluster volume status

GlusterFS 볼륨 사용 (클라이언트)

GlusterFS 볼륨이 시작되면 클라이언트 시스템에서 해당 볼륨을 마운트하여 파일 시스템처럼 사용할 수 있습니다.

  1. GlusterFS 클라이언트 패키지 설치:
    볼륨에 접근할 클라이언트 시스템에 GlusterFS 클라이언트 패키지를 설치합니다. (서버 패키지에 클라이언트 기능이 포함되어 있는 경우도 많습니다.)
    # Debian/Ubuntu 계열
    sudo apt update
    sudo apt install glusterfs-client
    
    # RHEL/CentOS 등 계열
    sudo yum install glusterfs-client
    # 또는 dnf 사용 시
    # sudo dnf install glusterfs-client
  2. 볼륨 마운트:
    mount 명령어를 사용하여 GlusterFS 볼륨을 클라이언트의 로컬 디렉토리에 마운트합니다.
    sudo mkdir /mnt/gluster-volume
    sudo mount -t glusterfs server1.example.com:/my-replicated-volume /mnt/gluster-volume
    *(server1.example.com은 클러스터 내 아무 서버의 호스트 이름이나 IP를 사용해도 됩니다. GlusterFS 클라이언트가 자동으로 클러스터 정보를 얻습니다.)*
  3. 파일 시스템 사용:
    마운트된 디렉토리(/mnt/gluster-volume)에 일반 파일 시스템처럼 파일을 읽고 쓸 수 있습니다. 데이터는 클러스터의 해당 브릭들에 분산되거나 복제되어 저장됩니다.
  4. 자동 마운트 설정:
    시스템 부팅 시 자동으로 마운트되도록 하려면 /etc/fstab 파일에 해당 내용을 추가합니다.
    server1.example.com:/my-replicated-volume /mnt/gluster-volume glusterfs defaults,_netdev 0 0
    *`_netdev` 옵션은 네트워크가 활성화된 후에 마운트를 시도하도록 하여 부팅 시 오류를 방지합니다.*

주요 활용 사례

  • 가상 머신(VM)의 공유 스토리지 (QEMU/KVM, OpenStack 등 환경에서 VM 이미지 저장소로 사용).
  • 대용량 비정형 데이터 저장 (빅데이터, 로그 파일 등).
  • 미디어 스트리밍 및 콘텐츠 전송 네트워크(CDN) 백엔드 스토리지.
  • 고가용성이 요구되는 애플리케이션의 공유 파일 시스템.
  • 일반적인 네트워크 파일 공유.

GlusterFS는 분산 아키텍처를 통해 뛰어난 확장성과 유연성, 그리고 고가용성을 제공하는 강력한 오픈 소스 스토리지 솔루션입니다. 클라우드 환경이나 대규모 데이터 처리가 필요한 환경에서 특히 유용하게 사용될 수 있습니다.

'DEV > CONSOLE' 카테고리의 다른 글

Linux home directory  (0) 2025.05.15
Yum dnf  (0) 2025.05.15
Qumu ovmf  (0) 2025.05.15
Qemu  (0) 2025.05.15
Cups  (0) 2025.05.15
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함