FastDFS 개요 및 특징
FastDFS는 대용량 파일 저장과 고빈도 동시 접속 처리에 최적화된 오픈소스 분산 파일 시스템입니다. 특히 전자상거래, 소셜 미디어, 동영상 서비스 등에서 발생하는 수많은 소용량 파일(이미지, 문서 등)을 효율적으로 관리하기 위해 설계되었습니다.
- 확장성: 스토리지 서버를 추가하는 것만으로 간단하게 용량 확장이 가능합니다.
- 고가용성: 데이터 중복 저장을 지원하여 특정 서버 장애 시에도 데이터 안정성을 보장합니다.
- 경량화: 클라이언트 라이브러리가 가볍고 통합이 용이하여 시스템 부하가 적습니다.
- 로드 밸런싱: Tracker 서버를 통해 최적의 스토리지 노드를 할당하여 부하를 분산합니다.
FastDFS 시스템 아키텍처
FastDFS는 크게 세 가지 핵심 컴포넌트로 구성됩니다.
- Tracker Server: 시스템의 관제탑 역할을 수행합니다. 스토리지 서버의 상태를 모니터링하고, 클라이언트의 요청에 따라 적절한 스토리지 서버 주소를 반환하여 부하 분산을 관리합니다.
- Storage Server: 실제 파일이 저장되는 공간입니다. 파일 저장뿐만 아니라 메타데이터 관리, 동기화 등의 기능을 수행하며 Tracker 서버에 주기적으로 상태 정보를 전달합니다.
- Client: 사용자의 비즈니스 서버입니다. Tracker 서버로부터 파일 작업을 수행할 Storage 서버의 정보를 받아 직접 통신합니다.
환경 구축 및 설치 절차
FastDFS를 설치하기 위해서는 라이브러리 의존성을 먼저 해결해야 합니다. 다음은 CentOS 환경을 기준으로 한 설치 과정입니다.
# 시스템 필수 유틸리티 및 컴파일 도구 설치
yum install -y gcc-c++ make cmake
yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel
# 필수 라이브러리(libfastcommon) 빌드 및 설치
tar -zxvf libfastcommon-1.0.x.tar.gz
cd libfastcommon/
./make.sh && ./make.sh install
# 네트워크 프레임워크(libserverframe) 설치
tar -zxvf libserverframe-1.1.x.tar.gz
cd libserverframe/
./make.sh && ./make.sh install
# FastDFS 메인 프로그램 설치
tar -zxvf fastdfs-6.x.tar.gz
cd fastdfs/
./make.sh && ./make.sh install
주요 환경 설정
설치 완료 후 서비스 운영을 위한 기본 설정 파일과 데이터 저장 경로를 생성합니다.
# 데이터 저장 경로 생성
mkdir -p /opt/fdfs/tracker
mkdir -p /opt/fdfs/storage
# 설정 파일 편집 (각 서버 역할에 맞춰 수정)
# Tracker 설정: /etc/fdfs/tracker.conf
# Storage 설정: /etc/fdfs/storage.conf
# Client 설정: /etc/fdfs/client.conf
서비스 관리 및 자동 실행 설정
Tracker와 Storage 서비스를 제어하는 방법과 시스템 재부팅 시 자동 시작되도록 구성하는 방법입니다.
# 서비스 시작 (Tracker 우선 실행 후 Storage 실행)
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
# 크론탭(Crontab)을 활용한 부팅 시 자동 시작 스크립트 등록
# 별도의 쉘 스크립트 작성 후 등록 권장
chmod +x /usr/local/bin/fdfs_autostart.sh
crontab -e
@reboot /usr/local/bin/fdfs_autostart.sh
기능 테스트
설치가 완료되면 제공되는 유틸리티를 사용하여 파일 업로드 및 다운로드가 정상적으로 작동하는지 확인합니다.
# 파일 업로드 테스트
# 결과로 파일 ID(Group Name/M00/...)가 반환되면 성공
fdfs_upload_file /etc/fdfs/client.conf /tmp/sample_image.png
# 파일 다운로드 테스트
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/example_id.png