728x90
반응형
구글 파일 시스템(GFS)은 "대규모 데이터 분산 애플리케이션"을 위한 확장 가능한 "분산 파일 시스템"이다. 저렴한 범용 하드웨어에서 실행되며 내결함성을 제공하고, 다수의 클라이언트에게 높은 성능을 보장합니다.
GFS는 구글의" 대량 데이터 저장" 및 "처리 요구"를 충족하며, 연구 및 개발을 포함한 다양한 서비스에서 활용되고 있다. 가장 큰 클러스터는 "수천 개의 디스크"와 "머신"을 사용하여 수백 테라바이트(TB)의 저장 공간을 제공하며, 수백 개의 클라이언트가 동시 접근할 수 있습니다.
설계 원칙
- 고장(failure)은 예외가 아니라 정상적인 현상
- GFS는 저렴한 범용 하드웨어로 구성된 수백~수천 개의 저장 장치와 클라이언트를 포함한다.
- 하드웨어 및 소프트웨어 오류(디스크, 메모리, 전원, 네트워크, 운영체제 버그, 사람의 실수 등)가 자주 발생하므로, 시스템은 이를 감지하고 "자동으로 복구"해야 한다.
- 대형 파일 중심의 설계
- 일반적으로 파일 크기가 수 GB(기가바이트)에 달하며, "웹 문서"와 같은 "애플리케이션 객체"를 포함한다.
- 작은 파일 수십억 개를 관리하는 것보다 대형 파일을 효율적으로 다루는 것이 중요하다.
- 대부분의 파일은 추가(append) 방식으로 수정됨
- 기존 데이터를 덮어쓰는 경우는 드물고, 새로운 데이터를 파일 끝에 추가하는 방식이 일반적이다.
- 파일이 생성된 후에는 "대부분 읽기 전용"이며, 주로 "순차적"으로 접근된다.
- 이러한 특성 덕분에 캐싱보다는 데이터 추가 작업(append)의 원자성(atomicity)과 성능 최적화가 중요하다.
- 파일 시스템과 애플리케이션의 공동 설계
- GFS는 일관성 모델을 단순화하여 파일 시스템을 간소화하고, 애플리케이션이 이를 수용할 수 있도록 설계되었다.
- 여러 클라이언트가"동시 추가 작업"을 수행할 수 있도록 "원자적 추가"(atomic append) 연산을 도입하였다.