📁 파일 시스템 | |||||||
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px);" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin: -6px -1px -11px" |
<colbgcolor=#f1d592><colcolor=#000>마이크로소프트 | FAT | NTFS | ReFS | |||
애플 | HFS | HFS+ | APFS | ||||
리눅스 / 유닉스 | ext2 | ext3 | ext4 | ||||
Btrfs | F2FS | XFS | ZFS |
1. 개요
실리콘 그래픽스(SGI) 에서 개발한 64비트 기반 유닉스/ 리눅스용 파일 시스템이다.2. 역사
1992년에 실리콘 그래픽스사는 자신들의 워크스테이션인 IRIX의 파일시스템으로 XFS를 개발하여 1993년에 발표한 IRIX 5.3에 탑재한다.실리콘 그래픽스사는 2000년에 XFS를 GPL로 풀어버린다. [1] 이후 GPL을 사랑해 마지않는 GNU에서 리눅스 커널로 포팅을 하는데, 단순히 기술지원을 하는데서 그친 게 아니라 실리콘 그래픽스에서 직접 포팅을 지원한다.
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년 작품이다.