XFS는 SGI에서 IRIX 운영체제를 위해 개발한 고성능 저널링 파일 시스템입니다
2001년에 리눅스 커널에 포함되었으며, 현재 대부분의 리눅스 배포판에서 지원하고 있습니다
익스텐트 기반 할당은 지연 할당과 사전 할당 등 여러 할당 체계를 갖추고 있습니다
또한 수천 개의 개별 블록 정보를 저장하는 대신, 연속된 블록 범위를 한 줄로 표현하므로
메타데이터 공간을 절약하고 효율적인 I/O를 수행할 수 있습니다
지연할당은 파일이 연속적인 블록 그룹에 기록될 가능성을 높이는 것으로
단편화를 줄이고 성능을 향상시킵니다
사전할당은 애플리케이션이 사전에 기록해야할 데이터양을 알고 있는 경우로
완전히 조각화하는 것을 방지하는데 사용할 수 있습니다
XFS의 탐색 기법으로 b+트리를 사용합니다
해당 자료구조는 데이터베이스 인덱스에서도 사용하는 자료구조로
이후 별도로 자세히 정리하겠습니다
XFS는 기본적으로 4종류의 데몬을 사용합니다
XFS는 할당 그룹(Allocation Group)이라는 단위로 나뉘어지며
각각의 할당 그룹은 독립적으로 존재하며 병렬적으로 처리됩니다
파일 시스템을 생성할 때 할당 그룹의 크기와 수를 지정할 수 있는데
지정하지 않을 경우 기본적인 디스크를 8등분해서 8개의 할당 그룹을 생성합니다
마운트 시에는 일반적으로 첫 번째 할당 그룹의 슈퍼 블록을 기준으로 파일 시스템이 동작합니다
나머지 할당 그룹에는 슈퍼 블록의 백업이 존재하며, 손상 시 이를 기반으로 복구할 수 있습니다
할당 그룹 헤더는 남은 공간정보와 아이노드 정보 등이 저장됩니다
XFS의 inode는 할당 그룹 내에서 동적으로 생성되는 고정된 크기의 구조입니다
다만 데이터 저장 방식은 extent 기반이기 때문에 inode에서 참조하는 데이터 영역은 가변적으로 확장됩니다