Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- DFS와BFS
- C++
- 분할정복
- android
- cos
- issue
- 백준
- 안드로이드스튜디오
- vuejs
- 안드로이드
- 코테
- Flutter
- cos pro 1급
- 동적계획법과최단거리역추적
- AndroidStudio
- DFS
- codingtest
- django
- 동적계획법
- 개발
- 파이썬
- DART
- 코드품앗이
- BAEKJOON
- cos pro
- Algorithm
- 코딩테스트
- 알고리즘
- Vue
- Python
Archives
- Today
- Total
Development Artist
GluserFS에 대하여 본문
728x90
반응형
GlusterFS란?
GlusterFS는 Red Hat이 개발한 오픈 소스 분산 파일 시스템으로, 여러 서버의 스토리지를 하나로 묶어 고가용성과 확장성을 제공하는 스토리지 솔루션이다.
데이터가 여러 서버에 걸쳐 복제되므로, 단일 장애 지점(SPOF, Single Point of Failure)이 발생하지 않으며, 읽기 및 쓰기 성능을 확장할 수 있는 특징이 있다.
📌 GlusterFS의 주요 특징
- ✅ 확장성: 서버를 추가함으로써 용량과 성능을 쉽게 확장 가능
- ✅ 고가용성(HA): 복제(Replication) 기능을 통해 서버 장애에도 데이터 유지
- ✅ Self-Healing(자동 복구): 장애 발생 시 데이터 무결성을 유지하며 자동 복구
- ✅ 분산(Distributed) 아키텍처: 중앙 컨트롤러가 없고, 분산된 구조로 동작
- ✅ POSIX 호환: 기존의 파일 시스템처럼 사용 가능
아키텍처
GlusterFS는 Brick, Volume, Client-Server 모델을 기반으로 동작한다.
📌 주요 개념
- Brick: GlusterFS에서 데이터를 저장하는 가장 작은 단위. 일반적으로 /data/brick1 같은 디렉터리에 위치
- Volume: 여러 개의 Brick을 조합하여 생성된 스토리지 풀
- Client: GlusterFS를 사용하는 애플리케이션이 마운트하는 방식 (FUSE 또는 NFS)
- Arbiter(중재자): Split-brain 방지를 위해 복제 그룹에서 데이터는 저장하지 않고 정합성만 유지하는 역할
📌 GlusterFS 볼륨 유형
- Distributed: 파일을 여러 노드에 분산 저장 (확장성 O, 내결함성 X)
- Replicated: 데이터를 여러 노드에 동일하게 복제 (데이터 보호 O)
- Distributed-Replicated: 데이터 확장성과 내결함성을 모두 제공
- Dispersed (Erasure Coding): RAID-5/6와 유사한 구조, 저장 공간 절약
실무에서 GlusterFS 구성하기
실제 GlusterFS 클러스터를 구축하여 Kubernetes와 함께 사용할 수도 있고, 단독 파일 스토리지로 활용할 수도 있다.
📌 기본 구성
🔹 3개의 노드에서 Replicated Volume을 생성하는 예제 (replica 3)
# gluster volume create myvolume replica 3 \
192.168.100.10:/data/brick1 \
192.168.100.20:/data/brick2 \
192.168.100.30:/data/brick3
🔹 볼륨 시작
# gluster volume start myvolume
🔹 볼륨 마운트 (클라이언트에서)
# mount -t glusterfs 192.168.100.10:/myvolume /mnt/gluster
📌 실무 구성: Distributed-Replicated + Arbiter
🔹 6개의 분산 그룹을 활용한 복제 + Arbiter 사용 (replica 2 arbiter 1)
# gluster volume create myvolume replica 2 arbiter 1 \
192.168.100.6:/data/brick1 \
192.168.100.38:/data/brick2 \
192.168.100.4:/data/arbiter1 \
...
🔹 현재 클러스터의 상태 확인
# gluster volume info myvolume
# gluster volume status myvolume
# gluster peer status
🔹 Self-Healing 및 장애 복구
# gluster volume heal myvolume info
🔹 볼륨 데이터 크기 확인
# du -sh /mnt/gluster
활용 사례
📌 1) Kubernetes와 함께 사용
Kubernetes 환경에서 Persistent Volume (PV) + Persistent Volume Claim (PVC) 을 활용해 GlusterFS를 백엔드 스토리지로 사용할 수 있다.
🔹 PVC를 사용하는 Pod 예제
apiVersion: v1
kind: PersistentVolume
metadata:
name: gluster-pv
spec:
capacity:
storage: 500Gi
accessModes:
- ReadWriteMany
glusterfs:
endpoints: gluster-cluster
path: "myvolume"
readOnly: false
persistentVolumeReclaimPolicy: Retain
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: gluster-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 500Gi
storageClassName: gluster-storage
✅ 특징
- Kubernetes 클러스터 내에서 ReadWriteMany(RWX) 지원
- StatefulSet, ML 학습 데이터, Shared Logs 등에 활용 가능
- 높은 내결함성과 확장성 제공
📌 2) 대용량 미디어 스토리지
GlusterFS는 대량의 이미지, 동영상, 3D 모델을 저장하는 미디어 서버에서도 많이 활용됩니다.
🔹 Nginx를 통한 정적 컨텐츠 서빙
server {
listen 80;
server_name media.example.com;
location / {
root /mnt/gluster;
autoindex on;
}
}
✅ 특징
- 대량의 미디어 파일을 빠르게 제공하는 환경에서 활용
- CDN 캐시와 함께 사용하여 성능 향상 가능
📌 3) 머신러닝 학습 데이터 공유
GlusterFS는 여러 개의 GPU 노드에서 공유 가능한 데이터 저장소로 활용될 수 있다.
✅ ML 학습 환경
- /mnt/gluster에 데이터를 저장하고, 다수의 ML 트레이닝 노드에서 공유
- ReadWriteMany(RWX) 지원
- AWS EKS, GKE, On-Prem 환경에서 사용 가능
사용 시 주의할 점
✅ 데이터 무결성 관리
- Arbiter를 활용하여 Split-brain 방지
- gluster volume heal <볼륨명>을 정기적으로 체크
✅ I/O 성능 튜닝
- performance.client-io-threads: on 설정하여 성능 최적화
- gluster volume set <볼륨명> performance.readdir-ahead on
✅ 모니터링
- gluster volume status <볼륨명>을 정기적으로 체크
- Prometheus + Grafana 대시보드를 활용하여 스토리지 모니터링
결론
GlusterFS는 고가용성, 확장성, 분산 저장이 필요한 환경에서 강력한 기능을 제공한다.
특히 Kubernetes, 미디어 서버, 머신러닝 학습 데이터 같은 곳에서 다수의 노드가 데이터를 공유하는 용도로 활용하면 강력한 효과를 발휘한다.
728x90
반응형
'Research > Devops' 카테고리의 다른 글
[FastAPI] 비동기로 RabbitMQ 연결하기 (0) | 2025.02.09 |
---|---|
[Helm] Helm Chart 템플릿 파일에 대하여 - Loki Ingester StatefulSet (0) | 2025.02.08 |
Kubernetes를 사용하는 이유 또는 이점 (0) | 2024.08.15 |
[AWS RDS, MySQL, DBeaver, Mac] Connection Timed Out (0) | 2023.07.09 |
[Centos 7, Postgresql 15] 설치. ( version 11 or later ) (0) | 2022.12.29 |
Comments