Computing

[DFS] Lustre File System (1) 개요 및 특징 본문

Cloud/Storage

[DFS] Lustre File System (1) 개요 및 특징

jhson989 2022. 11. 4. 20:47

앞선 포스터 Storage System, 분산 파일 시스템(Distributed File System, DFS)에서 스토리지 시스템, 파일 시스템, 분산 파일 시스템의 개념에 대해서 정리하였다.

 

이번 포스터에서는 DFS 중 대표적인 Lustre[1] 파일 시스템에 대해서 정리해보고자 한다. 

 

Lustre 파일 시스템 기본적인 특징

Lustre는 오픈소스 프로젝트로, 높은 확장성(Scalability), 고가용성(High availability), 성능(High performance)을 지원하는 분산 파일 시스템이다[2]. Lustre라는 이름 자체가 Linux + Cluster에서 왔는데, 이처럼 리눅스 OS에서 실행되며 클러스터 시스템(HPC 등)에서 높은 성능을 낼 수 있도록 설계되었다.

 

Lustre는 여타 다른 파일 시스템과 동일하게 POSIX compliant(POSIX-like API 제공)하며, global single-namespace를 제공한다. 이를 통해 사용자는 일반 파일 시스템을 사용하는 것과 동일한 기능을 동일한 방식으로 사용할 수 있다. 이때 global single-namespace를 제공한다는 것은 Lustre 파일 시스템 안에 같은 네임(경로+파일 이름)을 가진 파일이 둘 이상 존재할 수 없도록 namespace를 관리한다는 말로, 여러 컴퓨터에 파일이 분산 저장되는 분산 파일 시스템에서 꼭 필요한 기능이다. 

 

앞서 언급했듯 Lustre 파일 시스템은 분산 파일 시스템이다. 따라서 최대 몇백 단위의 다수의 서버들을 하나의 파일 시스템으로 묶어 제공한다. 이를 통해 페타바이트급 스토리지 시스템으로 확장될 수 있다. 즉 높은 확장성(Scalability)을 가진다.

 

또한 분산 파일 시스템은 네트워크를 통해 파일 시스템에 접근하는 것을 기본으로 지원한다. 따라서 다수의 Client들에 동시에 마운트되어 사용될 수 있으며 이때 입출력 성능을 유지할 수 있도록 설계되었다. 특히 HPC 분야에서 많이 사용되며(지금도 그런 지는 모르겠다), 클러스터 컴퓨팅 시스템(=멀티 노드 시스템, 슈퍼컴퓨터 시스템)의 다수의 계산 노드에 마운트되어 동시 파일 입출력 시에도 높은 성능을 보여준다.

 

고가용성을 지원하기 위해, 데이터를 여러 저장장치에 복사하여 저장한다. 또한 뒤에서 자세히 설명하겠지만, 서버 자체의 고장 또한 대비하기 위해 중복되게 서버를 배치하도록 아키텍처가 설계된다.

 

 

 

Lustre 파일 시스템 핵심 특징

Fig 1. Lustre 파일 시스템 특징[4]

 

Fig 1.은 Lustre 파일 시스템의 특징을 잘 보여주는 그림이다. meta-data를 담당하는 컴퓨터를 MDS(Metadata Server), data를 담당하는 컴퓨터 2대를 OSS(Object Storage Server), 오른쪽의 컴퓨터 2대는 사용자(or Lustre Client)를 의미한다. MDS와 OSS에 대해서는 밑에서 설명하겠다. 다른 분산 파일 시스템고 구별되는 Lustre 파일 시스템의 특징은 크게 다음 3가지로 정리할 수 있다.

 

1. Object Storage

2. Decoupled Data and Metadata

3. Data Striping

 

1. Object Storage

Lustre는 파일 단위로 데이터를 저장하고, 그것들을 디렉토리 계층 구조로 사용자에게 보여주는 파일 시스템의 하나이다. 하지만 실제 데이터를 저장할 때는 파일 단위로 저장하는 것이 아닌 파일을 일정 크기(4MB)로 잘라서 저장한다. Fig 1.에서 사용자가 OSS에 write()하는 데이터를 보면 4조각으로 나눠져 있는 것을 확인할 수 있다. 이 작은 조각을 object라고 한다. Object storage 개념은 여기에서 정리하였는데, 이를 통해 높은 확장성(Scalability)를 가질 수 있다.

 

다만 여기서 문제는 object storage를 file system storage로 사용자에게 보여주는 layer가 필요한데, 이를 metadata만을 관리하는 서버인 metadata server(MDS)가 담당한다.

 

2. Decoupled Data and Metadata

Lustre 파일 시스템은 data를 실제 저장하는 서버인 Object Storage Server(OSS)와 metadata를 저장하는 서버인 Metadata Server(MDS)로 구성된다. 앞서 말했듯 Lustre는 실제 데이터를 Object 형태로 저장하는데, 이를 OSS에 저장한다. Fig 1.에서 data를 실제 저장하는 밑의 2 컴퓨터가 OSS이다.

 

파일 시스템은 사용자에게 어떤 디렉토리에 어떤 파일이 저장되어 있는 지 namespace를 제공해줘야 한다. Lustre는 MDS라는 독립적인 서버에서 이러한 일들을 처리하도록 설계되었다. Metadata는 file 이름, directory 경로, access permissions, file layout 등 기존의 파일 시스템에서 제공하는 파일 관련 정보들을 의미한다. 여기에 추가적으로 실제 파일은 object들로 나눠져서 저장되기에, 각 파일을 구성하는 object들이 무엇이고, 어디(OSS)에 저장되어 있는 지 정보까지 의미한다. 이러한 metadata를 통해 사용자는 Lustre가 object로 저장하든 파일로 저장하든 상관없이 기존 파일 시스템을 사용하는 것과 같이 어디 폴더에 어떤 파일이 있는 지를 알 수 있으며, 그밖에 기존 파일 시스템의 모든 기능을 지원한다.

 

이렇게 data를 저장하는 서버와 metadata를 저장하는 서버를 분리하여 구축함으로서, Lustre는 파일 입출력 성능 향상을 달성한다. 수 많은 사용자가 동시에 여러 파일에 접근할 때, 사용자는 MDT에서 파일(실제로는 objects)가 어디 OSS에 저장되어 있는 지 정보만 획득한다. 그 이후부터는 사용자는 원하는 파일(objects)가 저장된 OSS와 직접 통신하며 데이터를 입출력한다.

 

3. Data Striping

Fig 1.에서 한 사용자(or Lustre Client)가 쓰는 데이터는 4조각의 object로 나눠지고, 이를 두 대의 서버에 분산하여 저장한다. 즉 Lustre는 데이터(=objects의 list)를 RAID0와 같은 방식으로 여러 서버에 분산하여 저장하는데, 이를 data striping이라고 한다. 이를 통해 RAID0[5]이 추구하는 데이터 입출력 성능 향상을 달성할 수 있다.

 

 

 

Lustre 파일 시스템 아키텍처

Fig 2. Lustre 파일 시스템의 전체 아키텍처[6]

 

Fig 2.는 Lustre 파일 시스템의 전체 아키텍처이다. Lustre는 수천명의 사용자(Client)가 동시에 사용할 수 있으며, 페타바이트급 저장용량을 목표로 설게되었다. 따라서 수 많은 OSS가 Lustre에 참여할 수 있다. Clients와 OSS 사이에 빠른 데이터 전송을 위하여 둘 사이에는 고속 네트워크로 연결된다. 

 

분산 시스템에서 자주 일어나는 문제 상황은 한 서버의 고장이다. 만약 MDS가 하나이고 이 MDS가 고장나면 Lustre는 더 이상 작동하지 않는다. 또는 Object A가 OSS 2에 저장되어 있는데, OSS 2가 고장난다면 Object A에 접근할 수 없을 수 있다. 이를 위해 Lustre는 두 개의 서버를 pair로 묶어서 서비스를 제공한다. Fig 2.에서 MDS가 2개인데, 만약 하나가 고장나더라도 다른 MDS가 살아있기에 서비스는 계속 가능할 것이다. (이러한 기능을 failover라고 부른다)

 

 

 

Reference

[1] https://www.lustre.org/

[2] https://wiki.lustre.org/Introduction_to_Lustre

[3] https://www.seagate.com/files/www-content/solutions-content/cloud-systems-and-solutions/high-performance-computing/_shared/docs/clusterstor-inside-the-lustre-file-system-ti.pdf

[4] Jakob Blomer. A Survey of Distributed File System Technology. CERN PH/SFT and Stanford University. ACAT 2014. Prague

[5] https://ko.wikipedia.org/wiki/RAID

[6] https://www.lustre.org/about/