클러스터파일시스템기술동향 Trends of Cluster File Systems Technology 김영철 (Y.C. Kim) 박근태 (K.T. Park) 이상민 (S.M. Lee) 김홍연 (H.Y. Kim) 김영균 (Y.K. Kim) 저장시스템연구팀선임연구원저장시스템연구팀 Post-Doc. 저장시스템연구팀연구원저장시스템연구팀선임연구원저장시스템연구팀팀장 목차 Ⅰ. 서론 Ⅱ. 클러스터파일시스템 Ⅲ. 결론 최근에블로그, UCC, IPTV 등사용자중심의인터넷서비스와언제어디서나웹을통해서비스를받을수있는유비쿼터스컴퓨팅환경으로의변화는대용량저장공간과빠르고안정된서비스를제공할수있는대규모클러스터시스템플랫폼을필요로한다. 그리고이러한대규모클러스터시스템플랫폼을효율적으로관리하고이용할수있는클러스터파일시스템은필수적이다. 본고에서는최근에연구ㆍ개발되고있는클러스터파일시스템들을소개하고기술동향에대해살펴본다. 139
I. 서론 최근에웹 2.0의등장으로날로증가하고있는블로그, UCC, IPTV 등과같은사용자중심의인터넷서비스와모든디지털기기를이용하여언제어디서나웹을통해서비스를받을수있는유비쿼터스컴퓨팅환경은대규모의클러스터시스템플랫폼을필요로한다. 대규모클러스터시스템플랫폼은네트워크상에분산된대량의서버들을클러스터로구성함으로써대용량의저장공간과빠른입출력성능을제공할수있어야한다. 또한시스템확장이용이하며, 서버고장과같은시스템장애가발생하더라도계속해서안전하게서비스를제공할수있는신뢰성과가용성을보장하여야한다. 따라서대규모클러스터시스템플랫폼의근간이되는파일시스템은위의요구사항을최대한만족할수있어야한다. 하지만 NFS와같은기존의단순한클라이언트- 서버수준의분산파일시스템으로는시스템성능과확장에한계가있다. 비대칭형 (asymmetric) 클러스터파일시스템은성능과확장그리고가용성면에서적합한분산파일시스템구조로최근에연구와개발이활발히진행되고있다. 비대칭형클러스터파일시스템에서는파일메타데이터를관리하는전용서버를별도로둠으로써메타데이터를접근하는경로와데이터를접근하는경로를분리한다. 그리고이를통하여파일입출력성능을높이면서독립적인확장과안전한파일서비스를제공하고자한다. 하지만메타데이터서버에부하가집중될수있으며 single-of-failure 지점이될수있는문제점도내포하고있다. 객체기반클러스터파일시스템 [1] 은비대칭형구조를갖는대표적인파일시스템으로다른파일시스템들과는달리파일데이터를논리적인객체단위로저장하고관리한다. 따라서블록기반인터페이스대신에객체처리를위한객체기반인터페이스를사용한다. 본고에서는최근에연구ㆍ개발되고있는클러스 터파일시스템의사례시스템들로 Ceph, Gluster- FS, Google 파일시스템, Hadoop 분산파일시스템, Lustre, Panasas, PVFS2, OASIS를소개하고이러한시스템들의기술적인동향에대해살펴본다. 1. Ceph Ⅱ. 클러스터파일시스템 Ceph[2],[3] 는 University of California, Santa Cruz에서개발하고있는프로토타입수준의객체기반클러스터파일시스템이다. Ceph는 ( 그림 1) 에서와같이크게클라이언트와메타데이터를관리하는메타데이터서버클러스터, 그리고데이터를객체수준으로저장하고관리하는객체저장서버클러스터로구성된다. Ceph 클라이언트는 FUSE 를이용하여마운트한파일시스템으로접근할수있으며또한응용프로그램에서직접링크하여사용할수도있는파일시스템인터페이스를제공한다. 메타데이터서버클러스터는파일시스템의이름공간뿐만아니라보안과시스템일관성을관리한다. 객체저장서버클러스터에는파일메타데이터와데이터가모두저장된다. 따라서객체저장서버클러스터는클라이언트와메타데이터서버클러스터에게하나의논리적인볼륨으로보여진다. Ceph에서는파일메타데이터와데이터의분리를강화하기위하여대부분의객체기반파일시스 bash is... Clients client libfuse vfs fuse client Linux kernel myproc Metadata Cluster Metadata Operations ( 그림 1) Ceph 구조 Metadata Storage Object Storage Cluster 140
김영철외 / 클러스터파일시스템기술동향 템에서유지하는파일의객체할당리스트를유지하지않는다. 대신에전체파일시스템에서유일한값인파일의 inode 번호를이용하여객체이름을정하고 CRUSH[4] 라는방법을통하여객체를객체저장서버에분산하여저장한다. 이렇게함으로써 Ceph 구성요소의어느위치에서든지 CRUSH 를이용하여객체의이름과위치를쉽게계산해서얻을수있도록한다. Ceph에서는메타데이터서버의확장성을고려하여메타데이터서버클러스터링방법으로동적서브트리분할 (dynamic subtree partitioning) 방법 [5] 을채용한다. 이를통해작업부하의패턴에따라동적으로여러메타데이터서버에작업부하를분산하거나또는메타데이터를재분배함으로써메타데이터서버클러스터에효율적으로작업을분배하도록한다. Ceph는저장공간과성능의선형적증가를보장하면서클러스터확장, 고장검출및회복을효율적으로제공하기위하여데이터마이그레이션, 데이터복제, 고장검출및회복에대한작업을객체저장서버클러스터에서담당하도록한다. 객체저장서버에서는대부분의객체기반파일시스템에서 Ext3와같은로컬파일시스템을사용하는것과는달리같은연구실에서개발한 EBOFS [6] 를사용한다. EBOFS는객체기반작업부하의특성을반영하여개발된사용자수준의파일시스템이다. 2. GlusterFS Gluster[7] 는 Z RESEARCH Inc. 에서개발되고있는클러스터응용플랫폼으로클러스터파일시스템인 GlusterFS, 고성능컴퓨팅클러스터를구성할수있는 GlusterHPC, 그리고시스템프로비저닝과자동화된플랫폼관리를제공하는 GlusterEP 가포함되어있다. GlusterFS는대용량저장공간과고성능컴퓨팅을제공하기위한클러스터파일시스템으로수페타바이트수준까지확장가능한저장공간과각서 버의대역폭을효율적으로결집할수있는다양한형태의서버클러스터링방법들을제공한다. 또한서버들은 TCP/IP 이외에도 Infiniband RDMA와같은고속네트워크로연결된다. GlusterFS는 ( 그림 2) 에서와같이서버, 클라이언트, 그리고전송모듈과스케줄러모듈등으로구성된다. 서버는저장볼륨을구성하고클라이언트로부터의파일입출력요청을처리한다. 서버는사용자수준데몬프로세스형태로동작한다. 각서버에서는로컬파일시스템을이용하여파일의메타데이터와데이터를저장한다. 클라이언트는 FUSE를이용하여구현되었다. 클라이언트에서는각서버에서제공하는저장볼륨을여러형태로구성하고이를마운트하여사용할수있다. GlusterFS에서메타데이터는특정서버와저장볼륨을지정하거나또는클러스터를구성하는모든서버에분산되어저장할수있다. 전자의경우에는이름공간을지정된서버의저장볼륨에기록하 Storage Clients Cluster of Clients (Supercomputer, Data Center) glusterfs client glusterfs glusterfs client client Clustered Vol Clustered Clustered Manager Vol Vol Manager Manager Clustered Clustered I/O I/O Clustered Scheduler I/O Scheduler Scheduler glusterfs client glusterfs glusterfs client client Clustered Vol Clustered Clustered Manager Vol Vol Manager Manager Clustered I/O Clustered Clustered I/O Scheduler Scheduler I/O Scheduler GlusterFS Clustered Filesystem on Gluster Platform Storage Brick Storage Brick glusterfsd glusterfsd volume volume InfiniBand or GigE Backbone ( 그림 2) GlusterFS 구조 Compatibility to Other Unices and MS Windows GigE Backbone Storage Storage Storage Gateway glusterfsd NFS/Samba Volume GLFS Client Storage Brick Storage Brick Storage Brick Storage glusterfsd Brick glusterfsd Volume glusterfsd glusterfsd Volume volume volume 141
고실제데이터는다른볼륨들에저장한다. 하지만메타데이터를저장하는볼륨에는이름공간만저장되지실제데이터가저장된볼륨에대한정보는기록되지않는다. 따라서실제데이터가저장된볼륨을찾기위해서모든서버의저장볼륨들을접근해야한다. 후자의경우에는클라이언트에서구성한모든서버들의저장볼륨들이동일한디렉토리구조를가지며데이터는동일한경로아래에파일로저장된다. GlusterFS는클라이언트와서버간에선택적인클러스터구성과다양한기능이 translator 형태로구현되어있다. Translator는공유라이브러리형태로서버또는클라이언트의실행시에적재되어동작한다. 예를들어, translator 에는서버를 RAID-0, RAID- 1, linear 등의형태로구성하는클러스터링 translator, 서버에서 read-ahead, write-behind, 멀티쓰레드기능을제공하기위한성능향상 translator, 서버와클라이언트간의네트워크프로토콜을구현한 translator 등이있다. 그밖에필요한경우에는사용자가자신이원하는기능을갖는 translator 를직접구현하여추가할수있다. GlusterFS에서는클라이언트에서미리클러스터를구성할서버에대한정보를알고있어야하며클러스터확장, 서버고장등으로인한서버클러스터의변화에동적으로대응하기어렵다. 또한파일의메타데이터와데이터를저장하는볼륨이분리되어있음에도불구하고파일의메타데이터를찾더라도파일이존재한다는사실만확인할뿐실제로파일데이터가어느서버의저장볼륨에저장되어있는지는모른다. 따라서파일데이터가저장된서버의저장볼륨을찾기위해모든서버를접근해야한다. 3. Google 파일시스템 Google 파일시스템 (GFS)[8] 은구글의대규모클러스터서비스플랫폼의기반이되는파일시스템으로개발되었다. GFS 는다음과같은가정을토대로설계되었다. 저가형서버로구성된환경으로서버의고장이빈번히발생할수있다고가정한다. 대부분의파일은대용량파일을가정한다. 따라서대용량파일을효과적으로관리할수있는방법이요구된다. 작업부하는주로연속적으로많은데이터를읽는연산이거나또는임의의영역에서적은데이터를읽는연산으로구성된다. 파일에대한쓰기연산은주로순차적으로데이터를추가하는연산이며파일에대한갱신은드물게이루어진다. 여러클라이언트에서동시에동일한파일에데이터를추가하는환경에서동기화오버헤드를최소화할수있는방법이요구된다. 낮은응답지연시간보다높은처리율이보다중요하다. GFS는 ( 그림 3) 에서와같이클라이언트, 마스터, chunk 서버들로구성된다. GFS의클라이언트는 POSIX 인터페이스를지원하지않으며파일시스템인터페이스와유사한자체적인인터페이스를제공한다. 또한여러클라이언트에서원자적인데이터추가 (atomic append) 연산을지원하기위한인터페이스를제공한다. GFS에서파일은고정된크기의 chunk 들로나누어서 chunk 서버들에분산되어저장된다. 그리고각 chunk 에대한여러개의복제본도 chunk 서버에 (file name, Application chunk index) GFS client (chunk handle, chunk locations) (chunk handle, byte range) Chunk data Data messages GFS master File namespace GFS chunkserver Linux file system /foo/bar chunk 2ef0 Instructions to chunkserver Chunkserver state GFS chunkserver Linux file system Control messages ( 그림 3) Google 파일시스템구조 142
김영철외 / 클러스터파일시스템기술동향 분산되어저장된다. 따라서클라이언트는파일을접근하기위하여먼저마스터에게해당파일의 chunk 가저장된 chunk 서버의위치와핸들을받아온다. 그리고나서직접 chunk 서버로파일데이터를요청한다. GFS의마스터는단일마스터구조로파일시스템이름공간과파일의 chunk 매핑정보그리고각 chunk가저장된 chunk 서버들의위치정보등모든메타데이터를메모리상에서관리한다. GFS에서는기본 chunk의크기를 64MB로지정함으로써파일메타데이터의크기를줄이고또한기존의트리구조가아닌해시테이블구조등을사용함으로써메모리상에서보다효율적인메타데이터처리를지원하려고한다. 마스터에서는주기적으로하트비트를이용하여 chunk 서버에저장된 chunk들의상태를체크하고상태에따라 chunk를재복제하거나재분산하는것과같은회복동작을수행한다. 마스터에대한장애처리와회복을위해서파일시스템이름공간과파일의 chunk 매핑변경연산을로깅하고마스터의상태를여러섀도마스터에복제한다. Chunk 서버는로컬디스크에 chunk 를저장하고관리하면서클라이언트로부터의 chunk 입출력요청을처리한다. chunk는마스터에의해생성되고삭제될수있으며유일한식별자에의해구별된다. 마스터는하나의 chunk 서버를 primary로지정하여복제본의갱신연산이일관되게이루어질수있도록보장한다. 4. Hadoop Distributed File System Hadoop은 Apache Lucene 프로젝트의일부분으로진행되고있는프로젝트로 Hadoop 분산파일시스템 (HDFS) 과 MapReduce 구현등을포함한다. 그리고 Apache Lucene 프로젝트는이전에먼저시작된웹검색소프트웨어개발프로젝트인 Apache Nutch 프로젝트의일부분으로진행되었다. HDFS는처음에 Apache Nutch 웹검색엔진의기반시스템으로 Java 로개발되었다. HDFS는 Goo- Metadata ops Client Read Datanodes gle 파일시스템과유사한특징을갖는다. HDFS[9] 는 ( 그림 4) 에서와같이하나의 namenode와다수의 datanode들로구성된다. Namenode는파일시스템의이름공간을관리하면서클라이언트로부터의파일접근요청을처리한다. HDFS 에서파일데이터는블록단위로나뉘어서여러 datanode에분산되어저장된다. 그리고블록들은가용성을보장하기위하여다시복제되어저장된다. 따라서 datanode는클라이언트로부터의데이터입출력요청을처리한다. HDFS에서파일은한번쓰여지면변경되지않는다고가정한다. 따라서 HDFS 는데이터에대한스트리밍접근을요청하며배치작업에적합한응용을대상으로한다. Namenode는 datanode들로부터하트비트 (heartbeat) 를주기적으로받으면서 datanode들의상태를체크한다. 또한하트비트메시지에포함된블록정보를가지고블록의상태를체크할수있다. HDFS는 client, namenode, datanode 간의통신을위하여 TCP/IP 네트워크상에서 RPC를사용한다. 5. Lustre Namenode Block ops Replication Metadata(name, replicas,...): /home/foo/data, 3,... Datanodes Write Rack 1 Rack 2 Client ( 그림 4) HDFS 구조 Blocks Lustre[10] 는 Cluster File Systems Inc. 에서개발된객체기반클러스터파일시스템이다. Lustre는 ( 그림 5) 와같이클라이언트파일시스템, 메타데이터서버, 객체저장서버들로구성된다. 그리고이들은고속네트워크로연결된다. Lustre에서는계층화된모듈구조로 TCP/IP, Infiniband, Myri- 143
Clustering metadata server grows this pool Lustre clients 10s~ 10,000 s Lustre Metadata Servers(MDS) = failover MDS 1 MDS 2 (active) (standby) Elan Myrinet InfiniBand Simultaneous support of multiple network types Router GigE Lustre Object Storage Servers(OSS) 100 s OSS 1 OSS 2 OSS 3 OSS 4 OSS 5 OSS 6 OSS 7 ( 그림 5) Lustre 구조 Commodity storage servers Shared storage enables failover OSS Enterpriseclass storage arrays & SAN fabrics net, Quadrics Elan3, Quadrics Elan4 등과같은네트워크를지원한다. 클라이언트파일시스템은리눅스 VFS 하에서설치할수있는파일시스템으로메타데이터서버와객체저장서버들과통신하면서클라이언트응용에파일시스템인터페이스를제공한다. 메타데이터서버는파일시스템의이름공간과파일에대한메타데이터를관리한다. 그리고객체저장서버는파일데이터를저장하고클라이언트로부터의객체입출력요청을처리한다. 객체는객체저장서버들에스트라이핑되어분산저장된다. Lustre는 Unix 시맨틱을제공하면서파일메타데이터에대해서는 write-back 캐시를지원한다. 이를위해클라이언트에서메타데이터변경에대한갱신레코드를생성하고나중에메타데이터서버에전달한다. 그러면메타데이터서버는전달된갱신레코드를재수행하여변경된메타데이터를반영한다. 그리고메타데이터서버에서는메타데이터를동시에접근하는부하에따라클라이언트캐시에서 write-back 캐시를지원하거나또는메타데이터서버에서메타데이터처리를수행하는방식을적용한다. 따라서메타데이터에대한동시접근이적을경우에는클라이언트캐시를이용한 write-back 캐시를사용하고메타데이터에대한동시접근이많을경우에는클라이언트캐시를사용함으로써발생할수있는오버헤드를줄이기위하여메타데이터서버에서처리하도록하는방식을적용한다. Lustre는파일메타데이터와파일데이터에대한동시성제어를위해별도의잠금을사용한다. 메타데이터를접근하기위해서는메타데이터서버의잠금서버로부터잠금을획득해야하고파일데이터를접근하기위해서는해당데이터가저장된객체저장서버의잠금서버로부터잠금을획득하여야한다. 또한 Lustre에서는클라이언트와메타데이터서버간의네트워크트래픽을최소화하기위하여메타데이터에대한잠금요청시에메타데이터를접근하는의도를같이전달하는 intent 기반잠금프로토콜을사용한다. 따라서메타데이터서버는메타데이터접근의도에따라해당동작을수행하고잠금을승인해주는처리를함께수행함으로써클라이언트와메타데이터서버간의네트워크트래픽을줄일수있다. 6. Panasas Panasas ActiveStor Storage Cluster[11] 는리눅스클러스터시스템환경에서대량의데이터처리를요구하는응용분야를위한객체기반저장시스템솔루션이다. ActiveStor Storage Cluster는 ( 그림 6) 에서와같이아래세가지구성요소로이루어진다. Panasas ActiveScale 파일시스템 (PanFS) PanFS는파일을객체로나누어여러개의 StorageBlade에걸쳐분산저장할수있는기능과클라이언트에서 StorageBlade 로부터직접파일객체를병렬로입출력할수있는기능을제공한다. 이를위해서 PanFS 는클라이언트와 StorageBlade 간에 DirectFLOW 소프트웨어를제공한다. 클라이언트 144
김영철외 / 클러스터파일시스템기술동향 NFS/CIFS up to 7X Random I/O DirectorBlade Cluster Single Virtual Namespace Clients Linux Cluster/UNIX NT NFS/CIFS NFS/CIFS 에설치되는 DirectFLOW Client는클라이언트커널에적재되는파일시스템으로리눅스 VFS 하에구현되었으며캐시정책을수행한다. 또한 StorageBlade로부터의 iscsi/osd 명령을통하여파일객체를직접입출력할수있는기능을수행한다. PanFS는 DirectFLOW 외에네트워크파일시스템프로토콜인 NFS와 CIFS를지원한다. 이때 DirectorBlade는 NFS/CIFS 클라이언트에게가상의서버로동작하게된다. DirectorBlade 메타데이터서버 DirectorBlade는 StorageBlade 에저장된파일객체에대한메타데이터를관리하면서파일객체를접근하려는클라이언트에대한인증을수행한다. 그리고인증된클라이언트에게파일객체에대한메타데이터를제공하고클라이언트캐시의일관성을보장한다. DirectorBlade는시스템의확장성과가용성을위하여클러스터로구성될수있다. StorageBlade 스토리지서버 Multiprotocol Support DirecFLOW up to 30X Data Throughput StorageBlade는파일객체가저장되는공간으로클러스터형태로구성되며 StorageBlade 간의부하분산과 RAID 재구성을통해확장과회복을지원 DirectFLOW StorageBlade Cluster DirectFLOW ( 그림 6) ActiveStor Storage Cluster 구조 한다. 그리고각각의 StorageBlade 에서수행되는 DirectFLOW StorageBlade는클라이언트들이 StorageBlade를직접접근하여파일객체를입출력할수있는경로를제공한다. PanFS에서는클라이언트와 StorageBlade 서버에서파일데이터에대한캐싱을지원한다. 특히클라이언트에서는여러번나누어저장될데이터를캐싱하였다가한번에 StorageBlade 로저장함으로써 StorageBlade와의네트워크트래픽을줄일수있도록한다. 또한클라이언트에서는파일에대한메타데이터와파일접근인증정보인 capability에대한캐싱을제공한다. 그리고클라이언트응용에서파일을접근하는패턴에따라파일에대한 prefetch 도지원한다. 클라이언트에캐싱된파일데이터에대한일관성은 DirectorBlade 에의해보장된다. DirectorBlade 는클라이언트에캐싱된파일데이터또는속성정보에대한 callback을유지하면서 lease 기반의캐시일관성기법에의해한클라이언트에서데이터가변경되면다른클라이언트에캐싱된데이터를무효화하도록함으로써캐싱된데이터의일관성을보장한다. 7. PVFS2 PVFS2[12] 는클러스터환경에서고속병렬입출력을위한파일시스템으로, 기존의 PVFS 를보다사용하기편하고모듈화된구조로개선한것이다. 기본적으로성능에초점을맞추었기때문에 MPI I/O를비롯한다양한슈퍼컴퓨팅용인터페이스를제공한다. 또한네트워크측면에서도기존의 TCP/ IP 이외에도 Myrinet, Infiniband 등의다양한방식을통하여병렬작업에최적화된클러스터의구성을가능하게한다. PVFS2 는커널수준에서동작하는파일시스템으로기본 Unix I/O 인터페이스역시제공하기때문에기존의애플리케이션을수정없이사용할수있다. 클러스터환경에서빈번하게발생하는메타데이 145
터서버의병목현상을해결하기위해서, PVFS2는메타데이터서버역시클러스터형태로구현이가능하다. 이때각메타데이터서버들은전체메타데이터중겹치지않는부분들을서로나누어서그에해당하는사용자의요청을전담하여처리하게된다. 데이터역시다수의데이터서버에스트라이핑을통하여나누어저장되기때문에각서버의저장공간을효율적으로사용할수있을뿐만아니라, 각데이터서버의작업부하역시고루분산되게할수있다. PVFS2는클러스터의성능측면에초점을맞추어서클러스터의가용성측면에서는여러취약점을갖고있다. 메타데이터의경우복사본없이오직하나만존재하기때문에메타데이터클러스터를구성하는서버들중어느하나에문제가생길경우메타데이터의손실을피할수없다. 데이터서버의경우에도파일시스템차원에서데이터의가용성을늘리기위한지원은하지않고전적으로하드웨어기능에의존한다. 또한동작의설정이정적으로시작전에이루어지는단점때문에클러스터의서버구성이동적으로변화하는환경에는부적합하다. 메타데이터클러스터에서각서버가담당할메타데이터영역의설정이초기에정적으로이루어지기때문에, 메타데이터서버가추가될경우온라인으로해당서버를이용하는것은불가능하고, 오프라인으로이루어지는경우에도메타데이터및데이터의이동, 각서버설정의변경등번거로운작업들을요구한다. 또한초기설정과정에서클러스터에참여하는전체서버의목록을사전에알아야한다는단점이있다. 8. OASIS OASIS[13] 는한국전자통신연구원저장시스템연구팀에서개발한객체기반클러스터파일시스템이다. OASIS는 ( 그림 7) 에서와같이세개의서브시스템으로구성된다. 이들서브시스템들은기가비트 VFS OASIS/FM RPC Metadata Manager Local File Systems (ext3) Volume Manager Multiple Objects Devices Driver SCSI Upper Layer - SCSI OSD(SO) Driver - SCSI Upper Layer - SD Driver - SCSI Upper Layer - SCSI OSD(SO) Driver - SCSI Middle Layer SCSI Middle Layer SCSI Middle Layer Linux SCSI Stack SCSI Lower Layer - UNH Initiator(Extended CDB) - SCSI Lower Layer - FC Driver - SCSI Lower Layer - UNH Initiator(Extended CDB) - Client Node SCSI OSD Commands OASIS/MDS iscsi Target Driver Object I/O Manager OSD Manager iscsi Target Driver Object I/O Manager OSD Manager iscsi Target Driver Object I/O Manager OSD Manager Storage Device Manager (ext3/xfs/reiserfs) OASIS/OST Storage Device Manager (ext3/xfs/reiserfs) OASIS/OST OASIS Components ( 그림 7) OASIS 구조 Storage Device Manager (ext3/xfs/reiserfs) OASIS/OST Linux Built-in Components 146
김영철외 / 클러스터파일시스템기술동향 이더넷으로서로연결된다. FM FM은클라이언트에설치할수있는파일시스템으로 Linux VFS 하에적재될수있는커널모듈로제공된다. 따라서 POSIX API를지원한다. FM은파일셋단위로마운트하여사용할수있으며 RPC를통하여 MDS로파일메타데이터에대한연산을요청한다. 그리고 OST에저장된파일데이터객체를접근하기위하여 iscsi 프로토콜을이용하여 SCSI/ OSD 명령을전달한다. 이를위해 SCSI/OSD 명령을처리할수있는장치드라이버를제공하며 SCSI/ OSD 표준을준수한다. 또한 FM에서는다중 OST 를여러 RAID 방식으로사용할수있는장치드라이버도지원한다. 따라서 FM에서는파일을객체단위로다중 OST에분산하여저장할수있다. FM은파일데이터에대한 read-ahead 캐시와 writeback 캐시를제공한다. MDS MDS는파일및디렉토리에대한메타데이터를관리한다. 파일메타데이터에는파일객체가저장된 OST들의정보도포함된다. MDS에서는 OST들을묶어서 linear, RAID-0, RAID-1, RAID-5 형태로구성하고관리하는기능도제공한다. MDS에서는여러클라이언트에캐싱되어있을수있는파일메타데이터와데이터에대한캐시일관성을보장하기위하여파일단위의 callback 기반잠금기법을제공한다. MDS는커널모듈로구현되었으며리눅스커널의 VFS 함수를직접호출함으로써하위로컬파일시스템에독립적이다. OST OST는파일데이터를객체형태로저장하고관리한다. OST에서는 FM과 MDS로부터 iscsi 프로토콜을통해전달된 SCSI/OSD 명령을처리한다. OST는커널모듈로구현되었으며리눅스커널의 VFS 함수를직접호출하도록하여하위로컬파일시스템에독립적이다. Ⅲ. 결론 본고에서는클러스터파일시스템의사례시스템들로 Ceph, GlusterFS, Google 파일시스템, Hadoop 분산파일시스템, Lustre, Panasas, PVFS2, OASIS를살펴보았다. 위의사례시스템들에서보는바와같이대규모클러스터환경을위한분산파일시스템들은주로비대칭형구조로클라이언트와메타데이터서버그리고데이터서버로구성되며아래에기술된특성들을갖는다. 클라이언트에서는기존응용에대한호환성을제공하기위하여 POSIX 표준에준하는파일시스템인터페이스를지원한다. 또한 POSIX 인터페이스외에도파일시스템을사용하는인터넷서비스응용에서요구하는인터페이스를추가로지원하고있다. 예를들어, 원자적데이터추가, chunk가할당된서버정보등을들수있다. 이러한클라이언트는대부분구현상의용이함등의이유로 FUSE 등을이용하여사용자수준으로구현되고있다. 인터넷서비스응용은주로순차 (sequential) 읽기연산이주를이루는작업부하로구성된다. 그리고쓰기연산의경우는갱신연산보다추가연산이많은비중을차지한다. 따라서이러한작업부하를효율적으로처리하기위하여메타데이터또는데이터를캐싱하지않거나보다완화된캐시일관성모델을사용하고잠금등을사용함으로써발생할수있는오버헤드를최소화한다. 메타데이터서버는구조상병목지점이될수있기때문에메타데이터연산을보다빠르게수행하기위하여모든메타데이터를메모리상에올려놓고해시테이블과같은구조등을사용한다. 또한메타데이터와데이터를최대한분리함으로써데이터를접근하기위하여메타데이터를접근해야하는부하를줄이려고한다. 메타데이터서버에대한가용성을보장하기위한방법으로메타데이터서버를클러스터로구성하는방법을주로적용하고있다. 하지만아직까지확장 147
가능하며높은성능을제공할수있는메타데이터서버의클러스터링방법이좀더연구될필요가있다. 데이터서버에저장되는파일데이터는입출력성능을고려하여 chunk 단위로스트라이핑되어분산저장된다. 이때 chunk의크기는서비스의특성에따라가변적으로설정할수있으며큰용량의 chunk를지원한다. 또한대규모클러스터를구성할때발생할수있는빈번한서버고장에대비하여 chunk를여러노드에복제하여저장한다. 이때 chunk 복제로인한성능저하를최소로할수있으면서복제본들간의일관성을보장할수기법을제공한다. 그리고클러스터의네트워크구성정보등을이용하여복제본을저장할데이터서버를선정하고 chunk를할당한다. 클러스터에데이터서버를추가하거나제거하는작업은클라이언트에독립적으로이루어진다. 따라서새로운데이터서버가추가되거나제거되는것과는상관없이클라이언트에서는계속파일시스템을접근할수있다. 메타데이터서버에서는하트비트등을이용하여 용어해설 FUSE(Filesystem in Userspace): FUSE는 Source- Forge 에서 A Virtual Filesystem(AVFS) 프로젝트의일부분으로시작되었다가현재는독립적인프로젝트로진행되고있는프로젝트로커널모듈, 사용자라이브러리그리고마운트유틸리티로구성되어있다. FUSE 는일반사용자가단지사용자프로그램으로자신의파일시스템을구현하고마운트할수있는방법을제공한다. 객체기반저장장치 (Object-based Storage Device: OSD): 객체기반저장장치는물리적인저장공간관리와같은기능을저장장치에서직접수행하도록함으로써성능과확장그리고플랫폼독립적인데이터의안전한공유등을제공할수있도록한다. 객체기반저장장치에서데이터는논리적인객체단위로저장되며객체에는데이터접근방법, 데이터속성정보, 데이터보안방법등을포함할수있다. 객체기반저장장치에대한인터페이스는 SNIA 에서정의되었으며, 이후에 ANSI T10 에서 SCSI 프로토콜의추가명령어로표준화되었다. 현재는 OSD-2 에대한표준화가진행중이다. 주기적으로데이터서버의상태를체크하고상태에따라데이터를다른서버로마이그레이션하거나또는재복제, 재분산하는작업을수행한다. 네트워크측면에서클라이언트와메타데이터서버그리고데이터서버들간에는 TCP/IP 외에 Infiniband, Myrinet 등고속의네트워크들도지원하고있다. 약어정리 EBOFS Extent and B-tree based Object File System FM File Manager FUSE File System in User Space HDFS Hadoop Distributed File System IPTV Internet Protocol Television iscsi Internet Small Computer Systems Interface MDS Metadata Server MPI Message Passing Interface OASIS Object-based storage Architecture for Scalability, Intelligence and Security OSD Object-based Storage Device OST Object-based Storage Target POSIX Portable Operating System Interface PVFS Parallel Virtual File System RAID Redundant Array of Independent Disks RDMA Remote Direct Memory Access UCC User-Created Content VFS Virtual File System 참고문헌 [1] M. Mesnier, G. Ganger, and E. Riedel, Objectbased Storage, In IEEE Communications Magazine, Aug. 2003, pp.84-90. [2] http://ceph.sourceforge.net [3] Sage Weil, Scott A. Brandt, Ethan L. Miller, Darrell D.E. Long, and Carlos Maltzahn, Ceph: A Scalable, High-Performance Distributed File System, In Proc. of Conf. on Operating Systems Design and Implementation, Nov. 2006, pp.307-320. [4] Sage Weil, Scott A. Brandt, Ethan L. Miller, and Carlos Maltzahn, CRUSH: Controlled, Scalable, De- 148
김영철외 / 클러스터파일시스템기술동향 centralized Placement of Replicated Data, In Proc. of the 2006 ACM/IEEE Conf. on Supercomputing, Nov. 2006. [5] Sage Weil, Kristal Pollack, Scott A. Brandt, and Ethan L. Miller, Dynamic Metadata Management for Petabyte-Scale File Systems, In Proc. of the ACM/IEEE Conf. on Supercomputing, Nov. 2004. [6] Feng Wang, Scott A. Brandt, Ethan L. Miller, and Darrell D.E. Long, OBFS: A File System for Object-Based Storage Devices, In Proc. of the 21st IEEE/12th NASA Goddard Conf. on Mass Storage Systems and Technologies, Apr. 2004, pp.283-300. [7] http://www.gluster.org [8] Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung, The Google File System, In Proc. of ACM Symp. on Operating Systems Principles, 2003, pp.20-43. [9] http://lucene.apache.org/hadoop [10] http://wiki.lustre.org [11] http://www.panasas.com [12] http://www.pvfs.org [13] 민영수, 차명훈, 김영철, 진기성, 이상민, 정병권, 김준, 객체기반저장장치를이용한클러스터파일시스템의구현, 한국차세대컴퓨팅학회논문지, Vol.2, No.4, 2006, pp.42-52. 149