GPFS

**GPFS**(**General Parallel File System**, 브랜드명 **IBM Storage Scale**, 이전에는 **IBM Spectrum Scale**)는 IBM에서 개발한 고성능 클러스터 파일 시스템 소프트웨어다. 이는 공유 디스크 또는 공유 없음 분산 병렬 모드, 또는 이 둘의 조합으로 배포될 수 있다. 전 세계의 많은 대기업과 Top 500 리스트에 있는 일부 슈퍼컴퓨터에서 사용된다.
예를 들어, 오크리지 국립연구소의 서밋의 파일 시스템이다.
서밋은 2019년 11월 Top 500 리스트에서 세계에서 가장 빠른 슈퍼컴퓨터 1위였다. 서밋은 9,000개 이상의 POWER9 프로세서와 27,000개의 엔비디아 볼타 GPU로 구성된 200 페타플롭스 시스템이다. 저장 파일 시스템은 알파인(Alpine)이라고 불린다.

일반적인 클러스터 파일 시스템과 마찬가지로, GPFS는 클러스터의 여러 노드에서 실행되는 애플리케이션에 동시 고속 파일 접근을 제공한다. AIX 클러스터, 리눅스 클러스터, 마이크로소프트 윈도우 서버 또는 x86, Power 또는 IBM Z 프로세서 아키텍처에서 실행되는 AIX, 리눅스 및 윈도우 노드의 이기종 클러스터와 함께 사용할 수 있다.

## 역사
GPFS는 1993년 IBM 알마덴 연구 센터의 연구 프로젝트인 타이거 샤크(Tiger Shark) 파일 시스템으로 시작되었다. 타이거 샤크는 처음에는 고속 멀티미디어 애플리케이션을 지원하도록 설계되었다. 이 설계는 과학 컴퓨팅에 잘 맞는 것으로 판명되었다.

또 다른 조상은 1992년부터 1995년 사이에 IBM 토마스 J. 왓슨 연구 센터의 연구 프로젝트로 개발된 IBM의 베스타(Vesta) 파일 시스템이다. 베스타는 고성능 멀티컴퓨터에 병렬 I/O 서브시스템이 실행되는 병렬 애플리케이션의 요구를 수용하기 위해 파일 파티셔닝 개념을 도입했다. 파티셔닝을 통해 파일은 바이트 시퀀스가 아니라 병렬로 접근할 수 있는 여러 개의 분리된 시퀀스이다. 파티셔닝은 파일 시스템을 호스팅하는 I/O 노드의 수와 유형을 추상화하고, I/O 노드 내의 물리적 데이터 분배와 관계없이 다양한 논리적으로 파티션된 파일 보기를 허용한다. 분리된 시퀀스는 병렬 애플리케이션의 개별 프로세스에 대응하도록 배열되어 확장성을 향상시킨다.

베스타는 1994년경 PIOFS 파일 시스템으로 상용화되었으며, 1998년경 GPFS가 그 뒤를 이었다. 이전 파일 시스템과 새로운 파일 시스템의 주요 차이점은 GPFS가 Vesta/PIOFS에서 제공하는 특수화된 API를 표준 유닉스 API로 대체했다는 점이다. 고성능 병렬 I/O를 지원하는 모든 기능은 사용자에게 숨겨져 백그라운드에서 구현되었다. GPFS는 또한 관련 제품인 IBM 멀티미디어 서버(IBM Multi-Media Server) 및 IBM 비디오 충전기(IBM Video Charger)와 많은 구성 요소를 공유하며, 이 때문에 많은 GPFS 유틸리티가 접두사 mm—멀티미디어(multi-media)로 시작한다.

2010년 IBM은 GPFS-SNC라는 기능을 포함한 GPFS 버전을 미리 선보였다. 여기서 SNC는 공유 없음 클러스터(Shared Nothing Cluster)를 의미한다. 이는 2012년 12월 GPFS 3.5와 함께 공식적으로 출시되었으며, 현재 FPO
 (파일 배치 최적화기)로 알려져 있다.

## 아키텍처

이것은 클러스터 파일 시스템이다. 파일을 구성된 크기의 블록으로 나누고, 각 블록은 1메가바이트 미만이며, 여러 클러스터 노드에 분산된다.

이 시스템은 표준 블록 저장 볼륨에 데이터를 저장하지만, RAID 블록 저장 시스템과 매우 유사하게 중복성 및 병렬 접근을 위해 해당 볼륨을 가상화할 수 있는 내부 RAID 계층을 포함한다. 또한 상위 파일 수준에서 볼륨 간에 복제할 수 있는 기능도 있다.

아키텍처의 특징은 다음과 같다.
* 디렉터리 트리를 포함한 분산 메타데이터. 파일 시스템을 담당하는 단일 "디렉터리 컨트롤러" 또는 "인덱스 서버"는 없다.
* 매우 큰 디렉터리를 위한 디렉터리 항목의 효율적인 인덱싱.
* 분산 잠금. 이는 독점 파일 접근을 위한 잠금을 포함하여 완전한 POSIX 파일 시스템 의미론을 허용한다.
* 파티션 인식. 네트워크 오류로 인해 파일 시스템이 두 개 이상의 노드 그룹으로 분할될 수 있으며, 각 그룹은 해당 그룹 내의 노드만 볼 수 있다. 이는 하트비트 프로토콜을 통해 감지할 수 있으며, 파티션이 발생하면 파일 시스템은 형성된 가장 큰 파티션에서 계속 작동한다. 이는 파일 시스템의 점진적인 성능 저하를 제공한다. 일부 머신은 계속 작동한다.
* 파일 시스템 유지보수는 온라인으로 수행될 수 있다. 대부분의 파일 시스템 유지보수 작업(새 디스크 추가, 디스크 간 데이터 재균형)은 파일 시스템이 작동 중일 때 수행할 수 있다. 이는 파일 시스템 가용성을 최대화하고, 따라서 슈퍼컴퓨터 클러스터 자체의 가용성을 최대화한다.

다른 기능으로는 고가용성, 이기종 클러스터에서의 사용 가능성, 재해 복구, 보안, DMAPI, HSM 및 ILM이 있다.

### 하둡 분산 파일 시스템(HDFS)과의 비교
하둡의 HDFS 파일 시스템은 상품 하드웨어, 즉 RAID 디스크 및 스토리지 에어리어 네트워크(SAN)가 없는 데이터 센터에 유사하거나 더 많은 양의 데이터를 저장하도록 설계되었다.

* HDFS 또한 파일을 블록으로 나누어 다른 파일 시스템 노드에 저장한다.
* GPFS는 완전한 POSIX 파일 시스템 시맨틱스를 가진다.
* GPFS는 디렉터리 인덱스 및 기타 메타데이터를 파일 시스템 전체에 분산한다. 대조적으로 하둡은 이를 기본 및 보조 네임노드에 보관하며, 이들 대규모 서버는 모든 인덱스 정보를 RAM에 저장해야 한다.
* GPFS는 파일을 작은 블록으로 나눈다. 하둡 HDFS는 64MB 이상의 블록을 선호하는데, 이는 네임노드의 저장 공간 요구 사항을 줄이기 때문이다. 작은 블록이나 많은 작은 파일은 파일 시스템의 인덱스를 빠르게 채우므로 파일 시스템의 크기를 제한한다.

## 정보 수명 주기 관리
저장 풀은 파일 시스템 내에서 디스크를 그룹화할 수 있도록 한다. 관리자는 성능, 지역성 또는 신뢰성 특성을 기반으로 디스크를 그룹화하여 저장 계층을 만들 수 있다. 예를 들어, 한 풀은 고성능 파이버 채널 디스크일 수 있고 다른 풀은 더 경제적인 SATA 저장 장치일 수 있다.

파일셋(fileset)은 파일 시스템 이름 공간의 하위 트리이며, 이름 공간을 더 작고 관리하기 쉬운 단위로 분할하는 방법을 제공한다. 파일셋은 할당량을 설정하고 초기 데이터 배치 또는 데이터 마이그레이션을 제어하는 정책에 지정될 수 있는 관리 경계를 제공한다. 단일 파일셋의 데이터는 하나 이상의 저장 풀에 존재할 수 있다. 파일 데이터가 어디에 존재하고 어떻게 마이그레이션되는지는 사용자 정의 정책의 규칙 세트를 기반으로 한다.

두 가지 유형의 사용자 정의 정책이 있다: 파일 배치 및 파일 관리. 파일 배치 정책은 파일이 생성될 때 파일 데이터를 적절한 저장 풀로 보낸다. 파일 배치 규칙은 파일 이름, 사용자 이름 또는 파일셋과 같은 속성으로 선택된다. 파일 관리 정책은 파일 데이터를 이동하거나 복제하거나 파일을 삭제할 수 있도록 한다. 파일 관리 정책은 디렉터리 구조에서 파일의 위치를 변경하지 않고 데이터를 한 풀에서 다른 풀로 이동하는 데 사용될 수 있다. 파일 관리 정책은 마지막 접근 시간, 경로 이름 또는 파일 크기와 같은 파일 속성으로 결정된다.

정책 처리 엔진은 확장 가능하며 여러 노드에서 동시에 실행될 수 있다. 이를 통해 관리 정책을 수십억 개의 파일이 있는 단일 파일 시스템에 적용하고 몇 시간 내에 완료할 수 있다.

## 같이 보기

## 각주

분류:분산 파일 시스템