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년 작품이다.