스토리지 설정 · 3 min read · Jan 07, 2026

Debian Lenny에서 GlusterFS를 이용한 고가용성 스토리지 - 두 스토리지 서버 간 자동 파일 복제 - 페이지 2

3 GlusterFS 클라이언트 설정

client1.example.com:

클라이언트에서 우리는 fuse와 GlusterFS를 설치해야 합니다. Debian 저장소에서 libfuse2 패키지를 설치하는 대신, GlusterFS에 대한 더 나은 지원을 제공하는 패치된 버전을 설치합니다.

먼저, 다시 필수 패키지를 설치합니다:

aptitude install sshfs build-essential flex bison byacc libdb4.6 libdb4.6-dev

그런 다음 다음과 같이 fuse를 빌드합니다 (최신 패치된 fuse 버전은 ftp://ftp.zresearch.com/pub/gluster/glusterfs/fuse/에서 찾을 수 있습니다):

cd /tmp  
wget ftp://ftp.zresearch.com/pub/gluster/glusterfs/fuse/fuse-2.7.4glfs11.tar.gz  
tar -zxvf fuse-2.7.4glfs11.tar.gz  
cd fuse-2.7.4glfs11  
./configure  
make && make install

그 후 GlusterFS를 빌드합니다 (서버에서와 같이)…

cd /tmp  
wget http://ftp.gluster.com/pub/gluster/glusterfs/2.0/LATEST/glusterfs-2.0.1.tar.gz  
tar xvfz glusterfs-2.0.1.tar.gz  
cd glusterfs-2.0.1  
./configure --prefix=/usr > /dev/null
make && make install  
ldconfig  
glusterfs --version

… 그리고 다음 두 디렉토리를 생성합니다:

mkdir /mnt/glusterfs  
mkdir /etc/glusterfs

다음으로 파일 /etc/glusterfs/glusterfs.vol를 생성합니다:

vi /etc/glusterfs/glusterfs.vol

| volume remote1 type protocol/client option transport-type tcp option remote-host server1.example.com option remote-subvolume brick end-volume volume remote2 type protocol/client option transport-type tcp option remote-host server2.example.com option remote-subvolume brick end-volume volume replicate type cluster/replicate subvolumes remote1 remote2 end-volume volume writebehind type performance/write-behind option window-size 1MB subvolumes replicate end-volume volume cache type performance/io-cache option cache-size 512MB subvolumes writebehind end-volume |

옵션 remote-host 줄에 올바른 서버 호스트 이름 또는 IP 주소를 사용해야 합니다!

그게 다입니다! 이제 다음 두 명령 중 하나를 사용하여 GlusterFS 파일 시스템을 /mnt/glusterfs에 마운트할 수 있습니다:

glusterfs -f /etc/glusterfs/glusterfs.vol /mnt/glusterfs

또는

mount -t glusterfs /etc/glusterfs/glusterfs.vol /mnt/glusterfs

이제 다음의 출력에서 새로운 공유를 볼 수 있어야 합니다…

mount
client1:/tmp/glusterfs-2.0.1# mount  
/dev/sda1 on / type ext3 (rw,errors=remount-ro)  
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)  
proc on /proc type proc (rw,noexec,nosuid,nodev)  
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)  
udev on /dev type tmpfs (rw,mode=0755)  
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)  
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)  
fusectl on /sys/fs/fuse/connections type fusectl (rw)  
/etc/glusterfs/glusterfs.vol on /mnt/glusterfs type fuse.glusterfs (rw,max_read=131072,allow_other,default_permissions)  
client1:/tmp/glusterfs-2.0.1#

… 그리고…

df -h
client1:/tmp/glusterfs-2.0.1# df -h  
Filesystem            Size  Used Avail Use% Mounted on  
/dev/sda1             29G  935M   27G   4% /  
tmpfs                 126M     0  126M   0% /lib/init/rw  
udev                  10M   80K   10M   1% /dev  
tmpfs                 126M     0  126M   0% /dev/shm  
/etc/glusterfs/glusterfs.vol  
                     19G  804M   17G   5% /mnt/glusterfs  
client1:/tmp/glusterfs-2.0.1#

( server1.example.com과 server2.example.com 각각 GlusterFS 파일 시스템을 위해 19GB의 공간을 가지고 있지만, 데이터가 미러링되기 때문에 클라이언트는 38GB(2 x 19GB)가 아닌 19GB만 볼 수 있습니다.)

클라이언트에서 GlusterFS 공유를 수동으로 마운트하는 대신, /etc/fstab을 수정하여 클라이언트가 부팅할 때 공유가 자동으로 마운트되도록 할 수 있습니다.

/etc/fstab을 열고 다음 줄을 추가합니다:

vi /etc/fstab

| [...] /etc/glusterfs/glusterfs.vol /mnt/glusterfs glusterfs defaults 0 0 |

수정된 /etc/fstab이 작동하는지 테스트하려면 클라이언트를 재부팅합니다:

reboot

재부팅 후, 다음의 출력에서 공유를 찾아야 합니다…

df -h

… 그리고…

mount

4 테스트

이제 GlusterFS 공유에 테스트 파일을 생성해 보겠습니다:

client1.example.com:

touch /mnt/glusterfs/test1  
touch /mnt/glusterfs/test2

이제 server1.example.com 및 server2.example.com의 /data/export 디렉토리를 확인해 보겠습니다. test1 및 test2 파일이 각 노드에 있어야 합니다:

server1.example.com/server2.example.com:

ls -l /data/export
server1:~# ls -l /data/export  
total 0  
-rw-r--r-- 1 root root 0 2009-06-02 15:31 test1  
-rw-r--r-- 1 root root 0 2009-06-02 15:32 test2  
server1:~#

이제 server1.example.com을 종료하고 client1.example.com의 GlusterFS 공유에서 몇 개의 파일을 추가/삭제합니다.

server1.example.com:

shutdown -h now

client1.example.com:

touch /mnt/glusterfs/test3  
touch /mnt/glusterfs/test4  
rm -f /mnt/glusterfs/test2

변경 사항은 server2.example.com의 /data/export 디렉토리에서 볼 수 있어야 합니다:

server2.example.com:

ls -l /data/export
server2:/tmp/glusterfs-2.0.1# ls -l /data/export  
total 0  
-rw-r--r-- 1 root root 0 2009-06-02 15:31 test1  
-rw-r--r-- 1 root root 0 2009-06-02 15:32 test3  
-rw-r--r-- 1 root root 0 2009-06-02 15:33 test4  
server2:/tmp/glusterfs-2.0.1#

server1.example.com을 다시 부팅하고 /data/export 디렉토리를 확인해 보겠습니다:

server1.example.com:

ls -l /data/export
server1:~# ls -l /data/export  
total 0  
-rw-r--r-- 1 root root 0 2009-06-02 15:31 test1  
-rw-r--r-- 1 root root 0 2009-06-02 15:32 test2  
server1:~#

보시다시피, server1.example.com은 다운되어 있는 동안 발생한 변경 사항을 인식하지 못했습니다. 이를 쉽게 수정할 수 있으며, 우리가 해야 할 일은 client1.example.com의 GlusterFS 공유에서 읽기 명령을 호출하는 것입니다, 예:

client1.example.com:

ls -l /mnt/glusterfs/
client1:~# ls -l /mnt/glusterfs/  
total 0  
-rw-r--r-- 1 root root 0 2009-06-02 15:31 test1  
-rw-r--r-- 1 root root 0 2009-06-02 15:32 test3  
-rw-r--r-- 1 root root 0 2009-06-02 15:33 test4  
client1:~#

이제 server1.example.com의 /data/export 디렉토리를 다시 확인해 보세요. 변경 사항이 해당 노드에 복제되었음을 확인할 수 있습니다:

server1.example.com:

ls -l /data/export
server1:~# ls -l /data/export  
total 0  
-rw-r--r-- 1 root root 0 2009-06-02 15:31 test1  
-rw-r--r-- 1 root root 0 2009-06-02 15:52 test3  
-rw-r--r-- 1 root root 0 2009-06-02 15:52 test4  
server1:~#

5 링크

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.