CentOS7 GlusterFS 설치(단일서버)
> 사용 서버 : CentOS 7 OS Server 1대
> 난이도 : ★
> 내용 요약 : CentOS 7 GlusterFS 설치
> 참고 링크 :
https://sysdocu.tistory.com/1837
> 목차 :
01. GlusterFS?
02. GlusterFS 설치
03. 서비스 구성 및 확인
01. GlusterFS?
GlusterFS는 고성능 분산 파일 시스템으로, 네트워크 상의 여러 스토리지를 하나의 파일 시스템처럼 관리할 수 있게 해주는 오픈 소스 소프트웨어입니다.
대규모 데이터 관리에 적합하며, 주로 클러스터 환경에서 사용되어 다양한 스토리지 노드를 하나의 파일 시스템으로 통합합니다.
다음은 GlusterFS의 주요 특징과 기능입니다:
1. 기본 구조
- 볼륨(Volume): GlusterFS는 여러 스토리지 서버의 디스크를 하나의 논리적 볼륨으로 만들어 관리합니다. 이 볼륨을 클라이언트가 파일 시스템처럼 접근할 수 있습니다.
- 브릭(Brick): GlusterFS의 기본 저장 단위로, 각 서버의 스토리지 장치(예: 디렉토리나 파티션)가 하나의 브릭으로 작동합니다. 여러 브릭을 조합하여 볼륨을 구성하게 됩니다.
- 트랜스포트 레이어: GlusterFS는 데이터 전송을 위해 TCP/IP 또는 Infiniband를 사용할 수 있습니다. 네트워크를 통해 다수의 노드 간 데이터를 주고받아 데이터를 분산 저장합니다.
2. 볼륨 유형
- 분산 볼륨 (Distributed Volume): 파일을 여러 브릭에 분산 저장하며, 높은 저장 용량이 필요한 환경에 적합합니다. 단, 파일이 특정 브릭에만 저장되므로 데이터 손실의 위험이 있을 수 있습니다.
- 복제 볼륨 (Replicated Volume): 동일한 파일을 여러 브릭에 복제하여 저장하며, 데이터 가용성과 안전성을 높일 수 있습니다. RAID-1과 유사하며, 주요 데이터의 손실을 방지할 수 있습니다.
- 분산-복제 볼륨 (Distribute-Replicate Volume): 분산과 복제를 조합한 형태로, 파일을 분산시키고 각 파일을 복제하여 안정성과 확장성을 동시에 확보할 수 있습니다.
- 스트라이프 볼륨 (Striped Volume): 파일을 여러 브릭에 나누어 저장하여 높은 성능을 필요로 하는 경우에 사용됩니다. RAID-0과 유사한 방식입니다.
- 디스퍼스드 볼륨 (Dispersed Volume): Erasure Coding을 이용하여 파일을 복제 대신 코드화하여 저장하며, 용량 효율성과 데이터 복구 기능을 제공합니다. RAID-5, 6과 비슷한 개념입니다.
3. 특징 및 장점
- 확장성: 수백 대의 노드를 하나의 파일 시스템으로 묶어 무한대로 확장할 수 있습니다.
- 고가용성: 복제와 디스퍼스드 볼륨 옵션을 통해 데이터의 고가용성을 보장합니다.
- 관리 용이성: GlusterFS는 기존의 파일 시스템처럼 동작하여, 파일을 저장하고 접근하는 데 있어서 별도의 복잡한 작업이 필요하지 않습니다.
- 오픈 소스 및 커뮤니티 지원: 무료로 사용 가능하며, 오픈 소스 커뮤니티에 의해 지속적으로 업데이트됩니다.
4. 사용 사례
- 비디오 스트리밍 서비스: 고속 데이터 접근이 필요한 대용량 비디오 파일 관리에 활용됩니다.
- 백업 및 복구 시스템: 분산 및 복제 기능을 통해 백업 데이터의 안정적인 관리가 가능합니다.
- 빅 데이터 분석: 고성능 컴퓨팅 환경에서 대규모 데이터셋을 분산 저장하고 처리할 때 사용됩니다.
- 클라우드 인프라: 다중 사용자 환경에서 스토리지를 효율적으로 관리하고 확장할 수 있습니다.
5. 설치 및 구성
GlusterFS 설치는 간단하며, 서버 간 연결 설정 후 볼륨을 생성하고 마운트하여 사용할 수 있습니다. Ubuntu에서는 다음과 같은 명령어로 설치할 수 있습니다:
설치 후 glusterd
서비스를 시작하고, 노드를 추가하며 볼륨을 구성할 수 있습니다.
6. CLI 주요 명령어
- 볼륨 생성:
# gluster volume create <볼륨 이름> <브릭 경로>
- 볼륨 시작:
# gluster volume start <볼륨 이름>
- 볼륨 상태 확인:
# gluster volume status <볼륨 이름>
- 볼륨 마운트: GlusterFS 클라이언트를 통해 볼륨을 특정 디렉터리에 마운트하여 사용할 수 있습니다.
7. 성능 및 최적화
GlusterFS는 성능 향상을 위해 캐시 설정, I/O 설정 최적화, 고속 네트워크 사용 등을 추천하며, 대규모 분산 환경에서는 연결 및 데이터 이동이 많으므로 네트워크 대역폭이 성능에 큰 영향을 미칩니다.
GlusterFS는 특히 분산 및 복제에 적합해 안정성과 확장성이 요구되는 환경에 매우 유용합니다.
02. GlusterFS 설치
GlusterFS 를 RAID 와 같은 여러가지 형태로 구성 가능하지만 본 매뉴얼에서는 단일 서버로 서비스하는 방법에 대해 기술하였습니다.
[사전 작업]
서버에 추가 Disk 를 연결하고 /data 디렉토리로 마운트 했습니다.
그리고 마운트 디렉토리 안에 gv0 이라는 Brick 디렉토리를 생성해 두었습니다.
Brick 디렉터리는 GlusterFS 볼륨에서 데이터를 저장하는 디렉터리를 뜻합니다.
# parted -l Model: Virtio Block Device (virtblk) Disk /dev/vda: 26.8GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 26.8GB 26.8GB primary xfs boot // 추가한 블록스토리지 디스크 Model: Virtio Block Device (virtblk) Disk /dev/vdb: 53.7GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 53.7GB 53.7GB primary ext4 # mount | grep /dev/vdb /dev/vdb1 on /data/gv0 type ext4 (rw,relatime,data=ordered)
설치
01. 호스트 명을 변경합니다.
# hostnamectl set-hostname gnode
02. 호스트를 등록 합니다.
# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
gnode
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
2. 설치 파일 다운로드 및 컴파일, 설치
yum을 통한 다운로드가 아닌, 설치파일 컴파일을 통한 소스 설치로 진행하였습니다.
아래 단계에 따라 진행할 수 있습니다.
설치파일 다운로드 링크 : https://download.gluster.org/pub/gluster/glusterfs/9/9.0/
01. 빌드 필수 패키지 설치
먼저 GlusterFS를 소스에서 빌드하려면 필요한 패키지를 설치해야 합니다.
# sudo yum groupinstall "Development Tools" -y
# sudo yum install autoconf automake libtool bison flex python3 pkgconfig readline-devel libaio-devel openssl-devel libxml2-devel pcre-devel libuuid-devel libacl-devel sqlite-devel -y
02. 설치파일 다운로드
# wget https://download.gluster.org/pub/gluster/glusterfs/9/9.0/glusterfs-9.0.tar.gz
# tar zxvf gluster-9.0.tar.gz
03. 구성 스크립트 실행
다운로드한 소스 파일 디렉토리로 이동하여 autogen.sh 스크립트를 실행합니다.
# cd /path/to/glusterfs-9.0
# ./autogen.sh
04. 빌드 설정 구성
다음으로 스크립트를 실행하여 빌드 설정을 구성합니다.
GlusterFS가 설치될 경로를 지정할 수도 있습니다.
# ./configure --prefix=/usr/local
성공하면 “configure complete” 메시지가 표시됩니다.
05. 소스 빌드
이제 사용하여 소스를 컴파일합니다. 컴파일 과정은 시간이 걸릴 수 있습니다.
# make
06. 빌드된 파일 설치
빌드된 파일을 시스템에 설치합니다.
# make install
07. 설치 확인
설치가 완료되면 GlusterFS가 정상적으로 설치되었는지 확인합니다.
# /usr/local/sbin/glusterfsd --version
glusterfs 9.0
Repository revision: git://git.gluster.org/glusterfs.git
Copyright (c) 2006-2016 Red Hat, Inc. <https://www.gluster.org/>
GlusterFS comes with ABSOLUTELY NO WARRANTY.
It is licensed to you under your choice of the GNU Lesser
General Public License, version 3 or any later version (LGPLv3
or later), or the GNU General Public License, version 2 (GPLv2),
in all cases as published by the Free Software Foundation.
08. 서비스 자동 실행 설정
서버 부팅시 glusterd 데몬이 자동 구동 되도록 하고, 현재 세션에서도 구동시켜줍니다.
# systemctl enable --now glusterd
# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1069/sshd
tcp 0 0 0.0.0.0:49152 0.0.0.0:* LISTEN 6685/glusterfsd
tcp 0 0 0.0.0.0:24007 0.0.0.0:* LISTEN 6381/glusterd
tcp6 0 0 :::22 :::* LISTEN 1069/sshd
03. 서비스 구성 및 확인
01. 볼륨 생성
Cluster Pool 을 구성합니다.
여러대로 구성할 경우 본 서버가 아닌 다른 서버를 peer 로 등록해야 하지만, 단일 서버로 구성할 예정이므로 추가할 peer 가 없습니다.
1. Pool 을 구성하는 peer 리스트를 확인합니다.
# gluster pool list
UUID Hostname State
ffdc4a82-b6f9-45c0-a325-96072b0662a3 localhost Connected
2. 볼륨을 구성합니다.
# gluster volume create gv0 gnode:/data/gv0
volume create: gv0: failed: The brick gnode:/data/gv0 is a mount point. Please create a sub-directory under the mount point and use that as the brick directory. Or use 'force' at the end of the command if you want to override this behavior.
※ 이 과정에서 아래와 같은 에러 발생 시, 참고하자!
volume create: gv0: failed: The brick gnode:/data/gv0 is being created in the root partition. It is recommended that you don’t use the system’s root partition for storage backend. Or use ‘force’ at the end of the command if you want to override this behavior.
위와 같은 에러 메세지는 별도의 파티션 디렉토리가 아니고 루트 (/) 파티션에서 생성한 디렉토리에서 볼륨을 구성할때 경고 메세지가 출력되는 것입니다. 추가 디스크나 별도의 파티션을 추가하지 않았지만 테스트 목적으로 구성하고 싶다면, 명령 뒤에 force 문자를 추가하여 실행할 수 있습니다.
# gluster volume create gv0 gnode:/data/gv0 force
volume create: gv0: success: please start the volume to access data
3. gv0 볼륨을 시작합니다.
# gluster volume start gv0
volume start: gv0: success
4. gv0 볼륨 상태를 확인합니다.
# gluster volume info gv0
Volume Name: gv0
Type: Distribute
Volume ID: 3e8ccba0-2040-4deb-a16c-288e296026a3
Status: Started
Snapshot Count: 0
Number of Bricks: 1
Transport-type: tcp
Bricks:
Brick1: gnode:/data/gv0
Options Reconfigured:
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
3. Client 마운트
GlusterFS 에서는 몇가지 마운트 방법을 제공합니다. GlusterFS (FUSE), NFS, iSCSI, SMB 방식인데 여기에서는 일반적인 FUSE 방식을 설명하겠습니다.
Client 에서 마운트에 필요한 패키지를 설치하고 마운트를 합니다.
GlusterFS 서버를 찾을 수 있도록 도메인을 연결하면 좋겠지만 현재 테스트 환경에서는 hosts 파일을 이용하였으므로 Client 에서도 찾을 수 있도록 /etc/hosts 파일에 아래 내용을 작성해 줍니다.
01. 호스트네임 등록
# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain
서버 IP gnode
02. 클라이언트 패키지를 설치하고 마운트를 합니다.
# yum -y install glusterfs-client
# mkdir /backup
# mount -t glusterfs gnode:/gv0 /backup
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 33M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda1 25G 19G 6.3G 75% /
tmpfs 783M 0 783M 0% /run/user/0
gnode:/gv0 50G 556M 47G 2% /backup
이로써 CentOS7 GlusterFS 단일서버 설치 및 구성을 마치겠습니다.
감사합니다.