수퍼블록으로 읽는 파일 시스템 메타데이터와 복구

수퍼블록이 저장하는 파일 시스템 메타데이터, 백업 위치, 손상 시 ext 계열과 XFS에서 확인·복구하는 방법을 정리한다.

2026-08-14 · 최초 발행 2026-01-12

파일 시스템을 해석하는 기준점

수퍼블록(Superblock)은 UNIX 및 Linux 파일 시스템의 전체 구조와 메타데이터를 보관하는 자료구조다. 파일 시스템 유형, 크기, 블록 크기, inode 개수, 빈 블록 수, 마운트 횟수, 마지막 체크 시간 등이 이 정보에 포함된다.

운영체제는 파일 시스템을 마운트할 때 수퍼블록을 먼저 읽어 구조를 파악한다. Primary Superblock은 파일 시스템 첫 번째 블록에 있고, 손상에 대비한 Backup Superblock은 여러 블록 그룹에 복사된다. ext4는 Sparse Superblock으로 일부 그룹에만 백업을 저장해 공간을 절약한다. XFS는 AG(Allocation Group)마다 수퍼블록을 저장하며, NTFS는 $Boot 파일에 유사한 정보를 둔다.

수퍼블록은 파일 시스템의 메타데이터이자 구조를 설명하는 설계도에 가깝다. 파일 시스템 시작 부분, 일반적으로 블록 0 또는 블록 1에 놓여 예측 가능한 위치에서 접근할 수 있다. 마운트 중에는 메모리로 로드되어 수정되고, 주기적으로 디스크에 동기화된다.

파일 시스템 구조백업부트 섹터수퍼블록(Primary)블록 그룹 디스크립터블록 비트맵inode 비트맵inode 테이블데이터 블록백업 수퍼블록(Backup)

수퍼블록에 기록되는 정보

파일 시스템을 식별하는 값으로는 Magic Number, UUID, 볼륨 레이블이 있다. Magic Number는 파일 시스템 유형을 가리키며 ext2/ext3/ext4는 0xEF53, XFS는 0x58465342 ('XFSB')를 사용한다. UUID는 Universally Unique Identifier로서 파일 시스템을 구분하고, 볼륨 레이블은 사용자가 지정할 수 있는 파일 시스템 이름이다.

용량과 블록 배치도 수퍼블록의 관리 대상이다. 여기에는 총 블록 수와 바이트 단위의 파일 시스템 크기, 블록 크기, 블록 그룹당 블록 수, 빈 블록 수가 들어간다. 블록 크기는 1KB, 2KB, 4KB, 8KB 등이 있으며 기본값은 4KB다. 빈 블록 수는 사용 가능한 블록 수와 디스크 여유 공간을 나타낸다.

inode 관련 필드에는 파일 시스템 생성 시 할당된 총 inode 수, 빈 inode 수, inode 크기, 블록 그룹당 inode 수가 포함된다. inode 크기는 ext2/ext3에서 128 바이트, ext4에서 256 바이트다.

마운트 이력과 상태도 함께 관리한다. 마운트 횟수, 자동 체크 전 최대 마운트 횟수, 마지막 마운트 시간, 마지막 쓰기 시간, 마지막 체크 시간, 체크 간격이 여기에 해당한다. 최대 마운트 횟수의 기본값은 20-30이며, Clean/Dirty Flag는 정상 언마운트 여부 또는 비정상 종료·마운트 중 상태를 나타낸다.

Primary와 백업 수퍼블록의 배치

Primary Superblock은 파일 시스템 시작 부분에서 기본 수퍼블록으로 사용된다. ext2/ext3/ext4에서는 블록 0의 부트 섹터 다음에 위치하고, XFS에서는 AG 0의 시작에 위치한다. 마운트 시 이 수퍼블록을 읽는다.

Primary Superblock이 손상될 수 있으므로 ext2/ext3/ext4는 블록 그룹 시작 부분에 백업을 저장한다. 백업은 블록 그룹 0, 1, 3, 5, 7, 9, ...에 저장되며, 이는 3, 5, 7의 거듭제곱에 해당한다. 백업 위치는 다음과 같이 확인한다.

# 백업 수퍼블록 위치 확인
mke2fs -n /dev/sda1
# 또는
dumpe2fs /dev/sda1 | grep -i superblock
# Superblock backups stored on blocks:
#     32768, 98304, 163840, 229376, 294912, ...

Sparse Superblock은 ext2/ext3/ext4의 기능으로, 모든 블록 그룹에 백업을 만들지 않고 일부 그룹에만 저장한다. ext3/ext4에서는 기본 활성화되어 있다.

마운트와 일관성 검사에서의 역할

마운트는 수퍼블록을 읽고 Magic Number로 파일 시스템 유형을 확인하는 과정에서 시작한다. 이어 Clean/Dirty 상태를 확인하고 inode 테이블과 블록 비트맵 같은 메타데이터를 로드한 뒤 마운트를 완료한다. 수퍼블록 손상이나 파일 시스템 불일치가 있으면 이 과정은 실패할 수 있다.

fsck는 수퍼블록을 기반으로 파일 시스템 일관성을 검사하고 오류를 수정한다. Primary Superblock을 읽을 수 없는 경우에는 백업 수퍼블록을 복구에 사용할 수 있다.

손상 징후를 확인하고 복구하기

수퍼블록 손상은 디스크 배드 섹터나 전원 차단 같은 하드웨어 오류, 파일 시스템 버그나 강제 종료 같은 소프트웨어 오류, dd 명령어로 인한 덮어쓰기와 파티션 테이블 손상 같은 사용자 실수에서 발생할 수 있다.

마운트가 실패하면 다음과 같은 메시지가 나타날 수 있다.

mount: /dev/sda1: can't read superblock

파일 시스템을 인식하지 못하는 경우에는 다음과 같이 보일 수 있다.

file -s /dev/sda1
# /dev/sda1: data

ext2/ext3/ext4에서는 백업 수퍼블록 위치를 먼저 확인한 뒤, 해당 블록 번호를 지정해 e2fsck 또는 fsck.ext4를 실행한다. 복구 전에는 데이터 백업을 권장하며, 여러 백업 수퍼블록을 시도할 수 있다.

# 1. 백업 수퍼블록 위치 확인
mke2fs -n /dev/sda1
# Superblock backups stored on blocks:
#     32768, 98304, 163840, ...

# 2. 백업 수퍼블록으로 fsck 실행
e2fsck -b 32768 /dev/sda1
# 또는
fsck.ext4 -b 32768 /dev/sda1

# 3. 마운트 시도
mount /dev/sda1 /mnt

XFS는 자동으로 백업 수퍼블록을 사용한다.

# XFS는 자동으로 백업 수퍼블록 사용
xfs_repair /dev/sda1
YesNoYesNo파일 시스템 마운트 시도Primary Superblock 읽기정상?마운트 성공Backup Superblock 읽기정상?e2fsck로 복구마운트 실패

파일 시스템마다 다른 저장 방식

ext2/ext3/ext4는 블록 그룹마다 백업 수퍼블록을 두고 Sparse Superblock을 지원한다. 수퍼블록 크기는 1024 바이트 (1KB)이며, 주요 필드는 s_magic: 0xEF53, s_blocks_count: 총 블록 수, s_free_blocks_count: 빈 블록 수, s_inodes_count: 총 inode 수, s_free_inodes_count: 빈 inode 수다. 조회에는 dumpe2fs를 사용한다.

XFS는 여러 AG로 분할되며 각 AG는 독립적인 수퍼블록, inode, 데이터 블록을 가진다. 동적 inode 할당을 지원하고 xfs_info로 정보를 조회한다.

Btrfs는 Copy-on-Write (CoW) 방식과 여러 수퍼블록 복사본을 사용하며, 체크섬으로 무결성을 검증한다. 수퍼블록은 블록 64KB, 64MB, 256GB에 위치한다.

NTFS에서는 $Boot 파일이 수퍼블록과 유사한 역할을 한다. 이 파일에는 파일 시스템 메타데이터와 MFT (Master File Table) 위치가 저장되며, 파일 시스템 중간에 $Boot 백업이 있다.

수퍼블록 조회 명령

ext2/ext3/ext4 수퍼블록은 dumpe2fs로 확인할 수 있다.

dumpe2fs /dev/sda1

출력에는 볼륨 이름, UUID, Magic Number, inode와 블록 수, 여유 블록과 inode, 블록 크기, 저널 크기 등의 정보가 나타난다.

Filesystem volume name:   <none>
Last mounted on:          /home
Filesystem UUID:          12345678-1234-1234-1234-123456789012
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              6553600
Block count:              26214400
Reserved block count:     1310720
Free blocks:              20000000
Free inodes:              6000000
First block:              0
Block size:               4096
Fragment size:            4096
Blocks per group:         32768
Inodes per group:         8192
Inode size:               256
Journal size:             128M

수퍼블록 관련 정보만 추려 보려면 다음 명령을 사용한다.

dumpe2fs /dev/sda1 | grep -A 20 "^Filesystem"

XFS에서는 장치 또는 마운트 포인트를 xfs_info에 전달한다.

xfs_info /dev/sda1
# 또는 마운트 포인트
xfs_info /mnt
meta-data=/dev/sda1              isize=512    agcount=4, agsize=6553600 blks
         =                       sectsz=512   attr=2, projid32bit=1
data     =                       bsize=4096   blocks=26214400, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=12800, version=2
realtime =none                   extsz=4096   blocks=0, rtextents=0
수퍼블록파일 시스템ext4XFSinode