본문 바로가기
Tech/Linux

GlusterFS 설치 해보기(dispersed volume)

by 타이호 2018. 7. 17.
반응형

Glusterfs는 NAS와 같이 파일 기반의 네트워크 파일 시스템이다. 보통 NFS나 SMB로 접근해서 파일을 저장하는 스토리지로 많이 사용하는데, 발전을 많이 해서 Openstack의 볼륨으로 사용도 가능하고 iScsi도 이제 지원을 하는 듯 하다.


1. 설치 준비

  • Esxi에 VM 2개를 생성

  • 각 VM은 7개의 스토리지 (1개는 OS, 6개는 glusterfs의 brick으로 사용할 디스크)로 구성

  • 네트워크는 서비스용 1개, 내부용 1개

  • OS는 Centos 7


2. Disk 포맷 및 파티셔닝

아래의 가이드에 따라 설치를 진행한다.

https://wiki.centos.org/SpecialInterestGroup/Storage/gluster-Quickstart

  • yum install centos-release-gluster

  • Disk partition : fdisk /dev/sdx 명령을 통해 파티션을 생성한다.

  • mkfs.xfs -i size=512 /dev/sdb1 명령을 통해 xfs로 포맷한다. (나머지 디스크도 동일하게 포맷)

  • for i in {1..6};do mkdir -p /bricks/brick$i;done 명령어로 마운트 될 디렉토리를 생성한다.

  • /etc/fstab 에 자동으로 마운트 될 수 있도록 넣어준다.

/dev/sdb1 /bricks/brick1 xfs defaults 1 2

/dev/sdc1 /bricks/brick2 xfs defaults 1 2

/dev/sdd1 /bricks/brick3 xfs defaults 1 2

/dev/sde1 /bricks/brick4 xfs defaults 1 2

/dev/sdf1 /bricks/brick5 xfs defaults 1 2

/dev/sdg1 /bricks/brick6 xfs defaults 1 2

  • mount -a && mount 를 통해 마운트를 한다.

  • yum install xfsprogs : xfs 파일 시스템으로 포맷할 수 있는 패키지를 설치


3. GlusterFS 설치

  • yum install glusterfs-server : 두개의 서버에 모두 glusterfs-server를 설치한다.

  • systemctl enable glusterd

  • systemctl start glusterd

  • systemctl status glusterd


4. Pool 설정

  • /etc/hosts 파일에 내부용으로 사용할 네트워크에 대한 hostname을 설정한다.

192.168.70.71 gluster01

192.168.70.72 gluster02

  • gluster peer probe gluster02 : 양쪽 서버에서 각각을 등록한다.

  • Centos는 방화벽이 기본으로 설정되어 있기 때문에 아래와 같이 테스트용으로 전부 Allow 규칙을 넣어준다.

iptables -A IN_public_allow -j ACCEPT


5. GlusterFS 볼륨 설정

GlusterFS는 다양한 볼륨을 제공하는데, 여기에서는 erasure codes에 기반으로 한 dispersed volumes으로 생성을 할 것이다. 자세한 볼륨 타입은 아래 링크를 참조하자

https://gluster.readthedocs.io/en/latest/Administrator%20Guide/Setting%20Up%20Volumes/

4개의 brick과 2개의 redundancy로 구성을 해본다.

[root@gluster02 ~]# gluster volume create test_vol disperse-data 4 redundancy 2 transport tcp gluster01:/bricks/brick1 gluster01:/bricks/brick2 gluster01:/bricks/brick3 gluster02:/bricks/brick1 gluster02:/bricks/brick2 gluster02:/bricks/brick3

volume create: test_vol: failed: The brick gluster02:/bricks/brick1 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을 생성했기 때문에 위와 같은 오류가 생성된다.

각 마운트 포인트 아래에 subdirectory를 생성한다.

for i in {1..6};do mkdir /bricks/brick$i/dv0;done

다시 해당 서브 디렉토리로 생성을 시도한다.

[root@gluster02 ~]# gluster volume create test_vol disperse-data 4 redundancy 2 transport tcp gluster01:/bricks/brick1/dv0 gluster01:/bricks/brick2/dv0 gluster01:/bricks/brick3/dv0 gluster02:/bricks/brick1/dv0 gluster02:/bricks/brick2/dv0 gluster02:/bricks/brick3/dv0

volume create: test_vol: failed: Multiple bricks of a disperse volume are present on the same server. This setup is not optimal. Bricks should be on different nodes to have best fault tolerant configuration. Use 'force' at the end of the command if you want to override this behavior.


force command를 주면 성공적으로 생성이 된다.

생성되고 난 후 volume을 시작한다.

시작된 볼륨의 상태를 체크한다.





반응형