[CS/운영체제] 리눅스 파일 시스템 - 3부

황제연·2025년 5월 11일
0

CS학습

목록 보기
71/193
post-thumbnail

XFS란?

XFS는 SGI에서 IRIX 운영체제를 위해 개발한 고성능 저널링 파일 시스템입니다
2001년에 리눅스 커널에 포함되었으며, 현재 대부분의 리눅스 배포판에서 지원하고 있습니다

XFS의 주요 특징

  • 최대파일 개수를 수 페타바이트(PB)까지 지원하며, 64비트 주소 공간으로 큰 파일과 볼륨을 관리할 수 있습니다
  • 메타데이터 변경 내용을 로그에 기록하기 때문에 시스템 장애 시 빠른 복구를 보장합니다
  • 실제 디스크에 기록되는 시점을 늦추어, 디스크 단편화를 최소화하고 I/O성능을 개선합니다
  • 저널링 구조와 알고리즘 덕분에 트랜잭션에 대한 로그를 신속하게 기록할 수 있습니다
  • XFS는 블록을 기반으로 하는 파일 시스템의 한계를 극복하기 위해 Extent 기반 할당을 사용합니다

Extent 기반 할당

익스텐트 기반 할당은 지연 할당과 사전 할당 등 여러 할당 체계를 갖추고 있습니다
또한 수천 개의 개별 블록 정보를 저장하는 대신, 연속된 블록 범위를 한 줄로 표현하므로
메타데이터 공간을 절약하고 효율적인 I/O를 수행할 수 있습니다

지연할당

지연할당은 파일이 연속적인 블록 그룹에 기록될 가능성을 높이는 것으로
단편화를 줄이고 성능을 향상시킵니다

사전할당

사전할당은 애플리케이션이 사전에 기록해야할 데이터양을 알고 있는 경우로
완전히 조각화하는 것을 방지하는데 사용할 수 있습니다

XFS의 자료구조

XFS의 탐색 기법으로 b+트리를 사용합니다
해당 자료구조는 데이터베이스 인덱스에서도 사용하는 자료구조로
이후 별도로 자세히 정리하겠습니다

XFS 데몬

XFS는 기본적으로 4종류의 데몬을 사용합니다

  • xfssyncd
    로그 정보와 메타 데이터 정보들을 기록하는 역할을 수행합니다
  • xfsbufd
    I/O 요청을 처리합니다
  • xfsdatad
    일반 사용자 파일 데이터의 디스크 쓰기를 담당합니다
  • xfslogd
    메타데이터 저널링 처리를 담당합니다

XFS의 디스크 구조

XFS는 할당 그룹(Allocation Group)이라는 단위로 나뉘어지며
각각의 할당 그룹은 독립적으로 존재하며 병렬적으로 처리됩니다

파일 시스템을 생성할 때 할당 그룹의 크기와 수를 지정할 수 있는데
지정하지 않을 경우 기본적인 디스크를 8등분해서 8개의 할당 그룹을 생성합니다

마운트 시에는 일반적으로 첫 번째 할당 그룹의 슈퍼 블록을 기준으로 파일 시스템이 동작합니다
나머지 할당 그룹에는 슈퍼 블록의 백업이 존재하며, 손상 시 이를 기반으로 복구할 수 있습니다

할당 그룹 헤더는 남은 공간정보와 아이노드 정보 등이 저장됩니다

아이노드

XFS의 inode는 할당 그룹 내에서 동적으로 생성되는 고정된 크기의 구조입니다
다만 데이터 저장 방식은 extent 기반이기 때문에 inode에서 참조하는 데이터 영역은 가변적으로 확장됩니다

참고

  • CentOS 7로 이해하는 리눅스 관리 및 시스템 보안 - 도서
profile
Software Developer

0개의 댓글