클라우드 컴퓨팅 환경에서는 데이터를 저장하는 스토리지 선정이 무엇보다 중요하다.
데이터를 분산 복제(Distribute - Replication) 저장해서 안정성을 높이고 저장공간을 확장(Scale-Out)할 수 있는 것이 기본이다.
현재 오픈소스로 나와있는 제품들이 여러가지가 있다.
아직은 살펴보는 단계이니 간단하게나마 기록해놓는다.



 - GlusterFS는 Scale-Out(확장가능)한 NAS(Network Attached Storage) 파일 시스템이다. 다양한 스토리지 서버를 Ethernet이나 Infiniteband RDMA 방식으로 하나의 큰 네트워크 파일시스템으로 모은다. GlusterFS는 성능저하없이 축적가능한 사용자 공간 디자인을 기반으로 한다. 클라우딩 컴퓨팅, 생물의학, 자료저장소등을 포함한 다양한 어플리케이션에서 쓰이고 있다. GlusterFS는 GNU AGPL v3 라이센스에 따라 무료 소프트웨어이다. 

- GlusterFS는 클라이언트와 서버로 구성된다. 서버는 일반적으로 Brick 이라는 형태로 제공이 되고, 각 서버들은 glusterfsd 데몬을 실행을 하여 로컬 파일 시스템을 volume으로 export한다. 클라이언트는 TCP/IP, InfiniBand, SDP를 통해 서버로 연결을 하고 원격서버들로부터 virtual volume을 구성한다. 
(Wiki 정의 참고 http://en.wikipedia.org/wiki/GlusterFS)

- 특징
* metadata server를 필요로 하지 않는다.
 분산 파일 시스템에서  파일정보등을 기억하기 위해 metadata server를 이용하는데 (hadoop 의 경우), 이 경우 metadata server가 문제가 생길경우 장애가 발생하게 된다. GlusterFS의 경우 파일정보등을 각 서버마다 가지고 있으므로 별도의 metadata server를 필요로 하지 않는다.

* 클라이언트 방식 
 volume을 마운트하는 방식으로 NFS, CIFS, Gluster Native(FUSE) 방식을 제공한다.
 
NFS로 마운트
#mount -t nfs [볼륨위치] [마운트위치]
#mount -t nfs 123.12.12.12:/test-volume /mnt/nfs



Gluster Native(FUSE)로 마운트
#mount -t glusterfs [볼륨위치] [마운트위치]
#mount -t glusterfs 1223.12.12.12:/test-volume /mnt/nfs




일반적으로 NFS 보다 FUSE로 마운트시 성능이 잘 나온다고 한다.
단, 작은 파일에서는 NFS의 캐시 영향을 받아서 성능이 더 잘나온다고 한다.
무엇보다,
NFS로 마운트시 마운트한 서버가 죽어버리면 해당 볼륨에 접근할수가 없다.
하지만, FUSE로 마운트시 마운트한 서버가 죽어도 해당 볼륨(나머지 Brick)에 접근할수있다.
이때문에 Relication을 설정이 필요하다.


* 파일기반의 replication, striping, load balancing
 replication 옵션을 주어 volume을 구성하게 되면 파일들을 복제 저장할 수 있다. 이 경우 서버 한곳이 고장나도 다른 곳의 서버에서 데이터를 가지고 오면 되므로 안정성이 높아진다. stripe 옵션을 주면 파일이 분산 저장이 된다. A라는 파일이 1번 서버에만 저장되는것이 아니라 1번 서버에 조금, 2번서버에 조금 이런 식으로 저장이 되게 된다. 일반적으로 stripe 옵션을 주면 속도는 빨라지나 안정성이 떨어진다고 얘기를 한다.
 
* volume failover, scheduling, disk caching

+ Recent posts