CentOS7에서 GlusterFS(GFS)를 활용하여 파일 시스템 마운트 하기

blog post 

 

GlusterFS (이하 GFS)는 네트워크 기반 파일 시스템으로, gfs 서버-클라이언트간 스토리지 마운트를 통한 파일 공유는 물론, 클러스터링 및 이중화 구성까지, 다양한 기능을 제공하는 스토리지 도구입니다. 이러한 다양한 기능들을 지원하는 이유로 많은 클라우드 시스템에서 백엔드 스토리지 시스템으로 gfs를 활용하고 있습니다. 이번 포스트에서는 간단한 GFS 서버를 구축해보고, 클라이언트 리눅스에서 마운트하도록 구성해보겠습니다.

 

 

1. GFS 서비스 구성하기

 

 

* 참고: 아래 작업을 모든 GFS 노드에서 진행합니다.

 

 gfs 설치를 위해 yum 레포지토리를 설치합니다. 

 

[root@server ~]# yum install epel-release centos-release-gluster

 

설치된 gfs의 레포지토리를 활성화합니다.

 

[root@server ~]# sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-Gluster-7.repo

 

glusterfs를 설치합니다.

 

[root@server ~]# yum --enablerepo=centos-gluster7,PowerTools -y install glusterfs-server

 

설치된 버전을 확인해봅니다.

 

[root@server ~]# gluster --version
glusterfs 7.7
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.

 

방화벽에서 glusterfs를 허용합니다.

 

[root@server ~]# firewall-cmd --add-service=glusterfs --permanent
success
[root@server ~]# firewall-cmd --reload
success

 

gluster 데몬을 실행합니다.

 

[root@server ~]# systemctl restart glusterd glusterfsd
[root@server ~]# systemctl enable glusterd glusterfsd

 

 

 

 

2. GFS 서버의 마운트 

 

 

 

* 참고: 서버 노드(디스크를 제공할 노드)에서 아래 작업을 진행합니다.

 

 서버노드에서 대상 노드 (클라이언트)를 탐색합니다.

 

[root@server gfs_disk]# gluster peer probe client
peer probe: success. 
[root@server gfs_disk]# gluster peer status
Number of Peers: 1

Hostname: client
Uuid: 98576d2f-abf0-4a52-ae4e-fc500b378ac3
State: Peer in Cluster (Connected)

 

 클라이언트에서 마운트하여 사용할 gfs 전용 디렉토리를 생성합니다.

 

[root@server ~]# mkdir -p /home/gfs_disk

 

아래와 같이 gluster 명령을 사용하여 앞서 생성한 gfs_disk 디렉토리를 gfs 전용 볼륨으로 생성합니다. 

 

* 참고: 만약 루트 파티션에 gfs 파티션을 생성할 경우, 경고와 함께 진행되지 않습니다. 아래와 같이 [force]옵션을 추가하여 강제로 볼륨을 생성할 수 있으나, 별도의 물리 디스크를 추가하여 파티셔닝 후 해당 파티션을 gfs 볼륨으로 사용할 것을 강력하게 권고합니다. 이번 예시에서는 별도 디스크에 마운트되지 않은 /home 디렉토리를 사용한 관계로, force를 사용했습니다.

 

[root@server home]# gluster volume create gfs_volume transport tcp server:/home/gfs_disk force
volume create: gfs_volume: success: please start the volume to access data

 

생성한 gfs_volume을 클라이언트에서 원격 마운트 하도록 볼륨 서비스를 시작합니다.

 

[root@server home]# gluster volume start gfs_volume
volume start: gfs_volume: success

 

생성된 볼륨 정보를 확인해 봅니다.

 

[root@server home]# gluster volume info
 
Volume Name: gfs_volume
Type: Distribute
Volume ID: 27d23dd1-2b66-4352-a52d-999003a22cc1
Status: Started
Snapshot Count: 0
Number of Bricks: 1
Transport-type: tcp
Bricks:
Brick1: server:/home/gfs_disk
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
nfs.disable: on

  

 

3. GFS 클라이언트 구성하기

 

 

* 참고: 클라이언트 노드(디스크를 실제 사용할 노드)에서 아래 작업을 진행합니다.

 

gfs 서비스를 설치합니다. 

 

[root@client ~]# yum --enablerepo=centos-gluster7 install glusterfs glusterfs-fuse

 

서버에서 생성한 gfs 볼륨(gfs_volume)을 클라이언트의 디렉토리 (/mnt)에 마운트합니다.

 

[root@client /]# mount -t glusterfs server:/gfs_volume /mnt

 

디스크 파티션을 확인해보면 정상적으로 서버의 볼륨을 마운트한 것을 확인할 수 있습니다.

 

[root@client /]# df -ha | grep server
server:/gfs_volume       8.5G  6.6G  1.9G  78% /mnt

 

 

4. 테스트

 

 

간단한 테스트를 해보겠습니다. 서버 노드의 gfs 디렉토리에 파일 하나를 생성해 봅니다.

 

[root@server ~]# touch /home/gfs_disk/testfile.sh

 

클라이언트 노드의 디렉토리(/mnt)에서도 testfile.sh 파일을 볼 수 있습니다.

 

[root@client ~]# ls /mnt/
testfile.sh

 

TAGS.

Comments