XFS


1 개요

실리콘 그래픽스(SGI) 에서 개발한 64비트 기반 유닉스/리눅스용 파일 시스템이다.

2 역사

1992년에 실리콘 그래픽스사는 자신들의 워크스테이션인 IRIX의 파일시스템으로 XFS를 개발하여 1993년에 발표한 IRIX 5.3에 탑재한다.

실리콘 그래픽스사는 2000년XFS를 GPL로 풀어버린다. [1] 이후 GPL을 사랑해 마지않는 GNU에서 리눅스 커널로 포팅을 하는데, 단순히 기술지원을 하는데서 그친 게 아니라 실리콘 그래픽스에서 직접 포팅을 지원한다. 이분들 OpenGL도 그렇고 보통 대인배가 아닌듯

3 특징

  • ZFS와 비슷하게 무거운 편이다.
  • 큰 파일에 강함[2]
  • 입출력 쓰레드 갯수 지정 가능
  • B+Tree 기반
  • 저널링 지원
  • 가변 블록 크기 지원
  • 지연 할당 지원
  • 온라인 스냅샷 생성 및 관리
  • 온라인 조각모음[3]
  • 파일시스템 수준에서 백업과 복구 지원: 명령어 한줄이면 백업과 복구가 싹싹!

4 주의사항

  • 대체로 큰 파일의 처리에 특화되어있기 때문에 작은 파일의 잦은 입출력에는 약간의(?) 성능 하락을 보여준다. 특히 리눅스 커널 같은 대규모 프로젝트의 컴파일 시 이런 문제가 두드러진다. 컴파일시는 약간이 아니라 심한 성능 하락
  • 파일시스템 자체의 포텐셜이 훌륭했음에도 불구하고 메타데이터 처리시의 병목현상으로 저성능을 자랑했던 적이 있으나, 지연 로깅 기능이 2010년에 추가됨으로써 성능이 많이 향상되었다. 리눅스 커널 2.6.39 이전 버전을 사용하는 사람은 참고할 것.
  • RAID로 묶인 디스크에 XFS 파티션을 만들었을 때 성능 저하가 심각하다면 Write Barrier 로직의 오류이니, 마운트할 때 nobarrier 옵션을 추가해주면 해결된다.
  • 기본 저널링 로그 저장소가 내부 저장소로 지정되어 있으나, ZFS와 비슷하게 logdev 옵션으로 외부 디스크로 뺄 수 있다. SSD에 물려보자. 신세계를 보게 될 것이다.
  • XFS는 마운트 옵션 및 튜닝에 따라 성능이 널뛰기를 한다. 다른 파일 시스템도 비슷하지만 XFS는 이런 경향이 좀 심한 편.

5 참고자료

  1. 이 때 비슷하게 오픈소스로 풀린게 역시 1992년에 자사의 3D 그래픽 라이브러리였던 IrixGL을 정리해서 범용으로 재개발한 OpenGL이다.
  2. 애초에 IRIX가 SGI의 3D 그래픽 처리용 워크스테이션에서 많이 쓰였다는걸 생각하면...
  3. 2010년 이후에는 너도나도 지원하기에 별 감흥이 없는 기술이지만, 이건 1993년 작품이다.