일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- OCFS2
- CVSROOT 세팅
- ZFS
- pgsql
- pvfs
- connection tunning
- clustering
- Openfiler
- pgbench
- perltidy
- ext3
- 펄 코딩스타일
- tomcat
- Replication
- 리눅스
- LVS
- Nexenta
- 포기해버린꿈
- ext4
- 파일시스템
- postfix
- php-oracle 연동
- inotify
- 펄
- mailfiler
- 가상파일시스템
- 오라클
- 시그널
- pgpool-ii
- PERL
Archives
- Today
- Total
avicom의 신변잡기
Gluster Filesystem 3.0.2 본문
glusterfs 소개
infiniband 관련 라이브러리 설치
glusterfs 설치
스토리지 서버에서 vol file 생성
2 server node replication 설정
2 server node stripe 설정
서버 데몬 구동
서버측 /etc/fstab에 export할 디렉토리 추가
client측에서 /etc/fstab 수정하고 마운트
파일 복사 테스트
단일 서버 노드
2 서버 노드 stripe
2 서버 노드 replication
- glusterfs는 수PB와 수천 클라이언트까지 확장가능한 오픈소스 클러스터 파일시스템이다. 하나의 네임스페이스에서 스토리지 블럭과 메모리 리소스와 데이터를 관리한다.
- 모듈 구조로 되어있어 사용자 요구가 있을 때 모듈을 하나씩 쌓는 형식으로 되어있다. glusterfs는 초기에 단독으로 작게 설정되어있어도 추후에 필요한 만큼 확장이 가능하다.
- 표준 워크로드를 제어하는 설정 유틸리티를 제공한다. 이 문서는 사용자의 요구에 대한 적절한 옵션과 설치 및 설정에 대한 가장 효율적은 방법을 제공한다.
- 메타 데이터 서버가 따로 없이 서버 노드는 각자 독립적으로 자신의 local disk를 export하고 클라이언트단에서 분산 및 replication 작업을 수행한다.
yum install fuse fuse-devel.x86_64 fuse-libs.x86_64
infiniband 관련 라이브러리 설치
실제로 사용하지는 않지만 glusterfs에서 infiniband를 지원하는 관계로 설치시 의존성이 걸려있음
yum install libibverbs libibverbs-devel.x86_64
glusterfs 설치
server : glusterfs-common, glusterfs-devel, glusterfs-server
client : glusterfs-client, glusterfs-common
스토리지 서버에서 vol file 생성
glusterfs-volgen -n cluster_data -r 1 -c /etc/glusterfs 192.168.160.13:/data/export 192.168.160.25:/data/export
server측 vol 파일과 client 측 vol파일이 생성된다. client vol 파일은 client로 복사
2 server node replication 설정
## file auto generated by /usr/bin/glusterfs-volgen (mount.vol)
# Cmd line:
# $ /usr/bin/glusterfs-volgen -n gluster -r 1 -c /etc/glusterfs 192.168.100.76:/gluster 192.168.100.77:/gluster
# RAID 1
# TRANSPORT-TYPE tcp
volume 192.168.100.77-1
type protocol/client
option transport-type tcp
option remote-host 192.168.100.77
option transport.socket.nodelay on
option transport.remote-port 6996
option remote-subvolume brick1
end-volume
volume 192.168.100.76-1
type protocol/client
option transport-type tcp
option remote-host 192.168.100.76
option transport.socket.nodelay on
option transport.remote-port 6996
option remote-subvolume brick1
end-volume
volume mirror-0
type cluster/replicate
subvolumes 192.168.100.76-1 192.168.100.77-1
end-volume
volume writebehind
type performance/write-behind
option cache-size 4MB
subvolumes mirror-0
end-volume
volume readahead
type performance/read-ahead
option page-count 4
subvolumes writebehind
end-volume
volume iocache
type performance/io-cache
option cache-size `grep 'MemTotal' /proc/meminfo | awk '{print $2 * 0.2 / 1024}' | cut -f1 -d.`MB
option cache-timeout 1
subvolumes readahead
end-volume
volume quickread
type performance/quick-read
option cache-timeout 1
option max-file-size 64kB
subvolumes iocache
end-volume
volume statprefetch
type performance/stat-prefetch
subvolumes quickread
end-volume
2 server node stripe 설정
## file auto generated by /usr/bin/glusterfs-volgen (mount.vol)
# Cmd line:
# $ /usr/bin/glusterfs-volgen -n gluster 192.168.100.76:/gluster 192.168.100.77:/gluster
# TRANSPORT-TYPE tcp
volume 192.168.100.77-1
type protocol/client
option transport-type tcp
option remote-host 192.168.100.77
option transport.socket.nodelay on
option transport.remote-port 6996
option remote-subvolume brick1
end-volume
volume 192.168.100.76-1
type protocol/client
option transport-type tcp
option remote-host 192.168.100.76
option transport.socket.nodelay on
option transport.remote-port 6996
option remote-subvolume brick1
end-volume
volume distribute
type cluster/distribute
subvolumes 192.168.100.76-1 192.168.100.77-1
end-volume
volume writebehind
type performance/write-behind
option cache-size 4MB
subvolumes distribute
end-volume
volume readahead
type performance/read-ahead
option page-count 4
subvolumes writebehind
end-volume
volume iocache
type performance/io-cache
option cache-size `grep 'MemTotal' /proc/meminfo | awk '{print $2 * 0.2 / 1024}' | cut -f1 -d.`MB
option cache-timeout 1
subvolumes readahead
end-volume
volume quickread
type performance/quick-read
option cache-timeout 1
option max-file-size 64kB
subvolumes iocache
end-volume
volume statprefetch
type performance/stat-prefetch
subvolumes quickread
end-volume
서버 데몬 구동
/etc/glusterfs/에 생성된 vol 파일을 glusterfsd.vol로 변경하고 service glusterfsd start
서버측 /etc/fstab에 export할 디렉토리 추가
echo "/dev/xvdb1 /data ext3 defaults 1 2" >> /etc/fstab
client측에서 /etc/fstab 수정하고 마운트
echo "/etc/glusterfs/glusterfs.vol /glusterfs glusterfs defaults 0 0" >> /etc/fstab
mount /glusterfs
파일 복사 테스트
단일 서버 노드
100Mbps 환경
전송률 : 10.09MB/s
real 1m12.071s
user 0m13.120s
sys 0m7.724s
FC(1000Mbps) 환경
전송률 : 110.15MB/s
real 0m6.628s
user 0m5.530s
sys 0m2.011s
2 서버 노드 stripe
100Mbps 환경
전송률 : 10.26MB/s
real 1m10.922s
user 0m13.240s
sys 0m7.823s
FC(1000Mbps) 환경
전송률 : 111.46MB/s
real 0m6.552s
user 0m5.526s
sys 0m1.840s
2 서버 노드 replication
100Mbps 환경
전송률 : 3.81MB/s
real 3m11.139s
user 0m13.165s
sys 0m7.710s
FC(1000Mbps) 환경
전송률 : 36.88MB/s
real 0m19.703s
user 0m5.771s
sys 0m1.985s