CertNote/ 출퇴근 학습 노트
로드맵
KOEN
리눅스마스터 2급 · 2급리눅스마스터 2급
  • Week 1
    • 1.운영체제와 커널: 리눅스가 하는 일
    • 2.리눅스의 탄생: 유닉스에서 리누스까지
    • 3.자유 소프트웨어와 오픈소스: 라이선스가 정하는 것
    • 4.배포판: 커널과 도구를 하나로 묶어 파는 단위
    • 5.Week 1 종합 복습: 리눅스라는 이름의 정체
  • Week 2
    • 1.설치 유형과 준비: 리눅스를 처음 올리기 전에
    • 2.파티션: 디스크를 어떻게 나눌 것인가
    • 3.파일 시스템: 나눈 공간에 무엇을 씌울 것인가
    • 4.부트 매니저: 전원을 켠 순간부터 로그인까지
    • 5.Week 2 종합 복습: 설치에서 부팅까지 한 줄로
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
  • Week 8
  • Week 9
  • Week 10
  • Week 11
리눅스마스터 1급 · 1급리눅스마스터 1급
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← 리눅스마스터 2급/Week 2/Day 3

기준: 리눅스마스터 2급 출제 기준·오류 제보

리눅스마스터 2급· AssociateWeek 2 · Day 3읽기 약 11분
핵심 정리
  • 파티션은 빈 땅이고, 파일 시스템은 그 위에 세우는 주소 체계다. mkfs로 만든다.
  • 리눅스 표준 계보는 ext2 → ext3 → ext4이며, ext3부터 저널링이 들어갔다.
  • 저널링은 쓰기 작업을 미리 기록해 두어, 갑자기 전원이 나가도 빠르게 복구하게 해준다.
  • inode는 파일의 메타데이터(권한·소유자·크기·위치)를 담는 구조다. 파일 이름은 inode에 없다.
  • 마운트 정보를 영구히 기록하는 파일은 /etc/fstab 이다.

Day 3 - 파일 시스템: 나눈 공간에 무엇을 씌울 것인가

파일 시스템이란

  • 파티션만 만들면 아직 파일을 저장할 수 없다. 어디에 무엇을 어떻게 적을지 규칙이 없기 때문이다.
  • 그 규칙이 파일 시스템이다. 디렉터리 구조, 파일 이름 길이, 최대 파일 크기, 권한 기록 방식이 전부 여기서 정해진다.
   디스크  →  파티션  →  파일 시스템  →  마운트  →  사용
            (나누기)     (mkfs)        (mount)

리눅스 파일 시스템 계보

이름저널링특징
ext2✗리눅스 표준이었던 초기 파일 시스템
ext3✓ext2에 저널링을 추가. 호환성이 좋다
ext4✓대용량·성능 개선. 현재 가장 널리 쓰인다
XFS✓대용량 파일에 강하다. RHEL 7부터 기본
Btrfs✓스냅샷·압축 등 기능이 풍부. SUSE가 기본으로 채택

시험 포인트는 "저널링이 언제부터인가" 다. 답은 ext3이다. ext2에는 없다.

ext 세 세대를 숫자로 나란히 놓으면 차이가 분명해진다(용량은 블록 크기 4KB 기준).

구분ext2ext3ext4
등장1993년2001년2008년
저널링✗✓✓
최대 파일 크기2TB2TB16TB
최대 파일 시스템 크기16TB16TB1EB
한 줄 요약리눅스 초기 표준ext2 + 저널링대용량·성능 개선
  • ext3은 ext2와 구조가 같고 저널만 더한 것이라, 데이터를 지우지 않고 ext2를 ext3으로 바꿀 수 있다(tune2fs -j /dev/sdb1).
  • ext4는 ext3과 하위 호환된다. 연속된 블록을 묶어서 기록하는 방식(익스텐트)을 써서 큰 파일을 다루는 속도가 빨라졌다.
  • XFS는 실리콘 그래픽스(SGI)가 자사 유닉스용으로 만든 것을 리눅스로 옮긴 것이고, JFS는 IBM이 만든 저널링 파일 시스템이다. 여기에 ReiserFS까지 모두 저널링 파일 시스템이다. 리눅스 디스크용 파일 시스템 가운데 저널링이 없는 것은 ext2다(FAT 계열도 저널링이 없으므로, 보기에 FAT32가 섞여 있으면 함께 답이 될 수 있다).

종류별로 묶어 보기

묶음파일 시스템특징
리눅스 디스크용ext2, ext3, ext4, XFS, Btrfs, JFS, ReiserFS파티션 위에 만든다
다른 OS·이동식 매체FAT32(vfat), exFAT, NTFS, ISO 9660리눅스에서도 마운트해 읽을 수 있다
네트워크NFS, SMB/CIFS다른 컴퓨터의 디렉터리를 내 것처럼 붙인다
가상(메모리)proc, sysfs, tmpfs디스크에 없다. 커널이 메모리에서 만들어 보여준다
  • /proc이 대표적인 가상 파일 시스템이다. 지난주에 본 /proc/version은 디스크에 저장된 파일이 아니라 읽는 순간 커널이 만들어 주는 내용이다.
  • 지금 커널이 다룰 수 있는 파일 시스템은 cat /proc/filesystems로 본다. 앞에 nodev가 붙은 줄은 디스크 장치가 필요 없는 가상 파일 시스템이다.

저널링이 무엇을 해결하나

  • 파일을 쓰는 도중 전원이 나가면 어디까지 썼는지 알 수 없는 상태가 된다.
  • 저널링은 "이제 이걸 쓸 것이다"를 먼저 기록하고 실제 작업을 한다.
  • 복구할 때 그 기록만 확인하면 되므로, 디스크 전체를 검사하지 않아도 된다.
  • 결과: 부팅 후 복구 시간이 극적으로 짧아진다.

다른 운영체제·용도의 파일 시스템

이름쓰이는 곳
FAT32USB 등 범용. 호환성 최고, 한 파일 4GB 제한
exFATFAT32의 4GB 제한을 없앤 것. 대용량 USB
NTFS윈도우 표준
ISO 9660CD/DVD 광학 매체
swap스왑 영역 전용
HFS+ / APFSmacOS

"USB에 4GB 넘는 파일이 안 들어간다"는 흔한 증상의 원인이 FAT32다.

inode: 파일의 신분증

  • inode는 파일 하나마다 붙는 정보 묶음이다.
inode에 있는 것inode에 없는 것
파일 종류, 권한파일 이름
소유자·그룹
크기
시간 정보(수정·접근)
데이터가 있는 블록 위치
  • 파일 이름은 디렉터리가 가지고 있다. 디렉터리는 "이름 ↔ inode 번호" 짝을 적어둔 목록이다.
  • 그래서 이름이 다른 파일 둘이 같은 inode를 가리킬 수 있다 — 이것이 하드 링크다.
  • inode 개수는 파일 시스템을 만들 때 정해진다. 용량이 남아도 inode가 바닥나면 파일을 못 만든다.
ls -i 파일       # inode 번호 보기
df -i            # inode 사용량 확인

inode가 놓이는 자리

ext 계열 파일 시스템은 파티션을 대략 네 구역으로 쓴다.

구역담는 것
부트 블록부팅에 쓰일 수 있는 맨 앞 영역
슈퍼블록(superblock)파일 시스템 전체의 정보 — 전체 크기, 블록 크기, inode 총수와 남은 수, 마운트 횟수
inode 테이블파일 하나하나의 정보
데이터 블록파일의 실제 내용
  • 슈퍼블록은 파일 시스템 하나에 대한 정보, inode는 파일 하나에 대한 정보다. 둘의 범위를 맞바꾼 보기가 나온다.
  • 슈퍼블록이 깨지면 파일 시스템 전체를 읽을 수 없어서, ext 계열은 사본을 여러 곳에 둔다. 아래 mkfs 출력의 Superblock backups가 그것이다.
  • 슈퍼블록 내용은 tune2fs -l /dev/sdb1로 볼 수 있다.

하드 링크와 심볼릭 링크

"이름은 디렉터리에, 나머지는 inode에"라는 구조를 알면 두 링크의 차이는 외울 필요가 없다.

$ echo hello > a.txt
$ ln a.txt hard.txt          # 하드 링크
$ ln -s a.txt soft.txt       # 심볼릭 링크 (-s)
$ ls -li
total 8
1311 -rw-r--r-- 2 user user 6 Mar  4 10:12 a.txt
1311 -rw-r--r-- 2 user user 6 Mar  4 10:12 hard.txt
1312 lrwxrwxrwx 1 user user 5 Mar  4 10:12 soft.txt -> a.txt
  • a.txt와 hard.txt는 inode 번호(1311)가 같다. 같은 파일에 이름이 둘 붙은 것이다. 권한 뒤의 숫자 2가 그 이름의 개수(링크 수)다.
  • soft.txt는 inode가 따로(1312) 있고, 맨 앞 글자가 l이다. 내용물은 a.txt라는 경로 글자뿐이라 크기가 5바이트다.
구분하드 링크심볼릭 링크
만드는 법ln 원본 링크ln -s 원본 링크
inode원본과 같다따로 가진다
원본을 지우면데이터가 남는다(이름이 하나 줄 뿐)끊어진 링크가 된다
다른 파티션(파일 시스템)불가 — inode 번호는 파일 시스템 안에서만 유효가능
디렉터리불가가능

만들고, 붙이고, 기록하기

단계명령설명
만들기mkfs.ext4 /dev/sdb1파티션에 파일 시스템 생성(= 포맷)
붙이기mount /dev/sdb1 /data디렉터리에 연결
떼기umount /data연결 해제
확인df -h, mount, lsblk -f상태 보기
검사fsck /dev/sdb1파일 시스템 오류 점검·복구
영구 등록/etc/fstab 편집재부팅 후에도 자동 마운트
  • mount 명령만 쓰면 재부팅하면 사라진다. 계속 쓰려면 /etc/fstab에 적어야 한다.
  • fsck는 마운트를 푼 상태에서 돌리는 것이 원칙이다. 마운트된 채 검사하면 손상될 수 있다.

mkfs의 여러 얼굴

같은 일을 하는 표기가 여럿이라 보기에 섞여 나온다. 아래 셋은 모두 ext4를 만드는 같은 명령이다.

mkfs -t ext4 /dev/sdb1       # -t 로 종류 지정
mkfs.ext4 /dev/sdb1          # 종류가 이름에 붙은 형태
mke2fs -t ext4 /dev/sdb1     # ext 계열을 실제로 만드는 프로그램
명령만드는 것
mke2fs -j /dev/sdb1ext3 — -j가 저널(journal)을 뜻한다
mkfs.xfs /dev/sdb1XFS
mkfs.vfat /dev/sdb1FAT
mkswap /dev/sdb2스왑 영역(파일 시스템이 아니라 명령이 따로다)
$ sudo mkfs.ext4 /dev/sdb1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 1310720 4k blocks and 327680 inodes
Filesystem UUID: 5c1e2f0a-8d3b-4e7a-9b61-2f4d7c9a1e35
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736
 
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
  • 첫 줄에서 mkfs.ext4가 실제로는 mke2fs를 부른다는 것이 보인다.
  • 327680 inodes — inode 개수가 이 순간 정해진다. "용량이 남아도 inode가 바닥나면 파일을 못 만든다"는 말의 근거다.
  • Creating journal — ext4라서 저널을 만든다. ext2로 만들면 이 줄이 없다.
  • mkfs는 기존 내용을 모두 지운다. 파티션 번호를 잘못 적으면 되돌릴 수 없다.

mount 옵션과 자주 쓰는 형태

mount                              # 인자 없이 — 지금 마운트된 목록
mount -t ext4 /dev/sdb1 /data      # -t 로 종류 지정(대개 생략해도 알아서 맞춘다)
mount -o ro /dev/sdb1 /data        # -o 로 옵션 지정 — 읽기 전용
mount -o remount,rw /data          # 떼지 않고 옵션만 바꿔 다시 마운트
mount -a                           # /etc/fstab 에 적힌 것을 한꺼번에 마운트
umount /data                       # 떼기 — 마운트 포인트나 장치명 어느 쪽을 적어도 된다
옵션뜻반대
rw읽기·쓰기ro 읽기 전용
exec실행 파일 실행 허용noexec
suidSetUID 비트 허용nosuid
auto부팅 때·mount -a 때 자동 마운트noauto
nouserroot만 마운트 가능user 일반 사용자도 가능
defaultsrw, suid, dev, exec, auto, nouser, async를 한꺼번에—
  • 마운트 포인트로 쓸 디렉터리는 미리 있어야 한다(mkdir /data). 그 디렉터리에 원래 있던 파일은 마운트돼 있는 동안 가려져 보이지 않는다.
  • /etc/fstab을 고친 뒤에는 재부팅하기 전에 mount -a로 시험해 본다. 오타가 있는 채로 재부팅하면 부팅이 멈출 수 있다.
  • 현재 마운트 상태는 /etc/mtab(또는 /proc/mounts)에 있다. fstab은 "부팅 때 할 일", mtab은 "지금 상태" 다.

⚠️ 함정: 떼는 명령은 umount 다. unmount가 아니다 — n이 없다. 그리고 umount가 target is busy라며 거부하면 누군가 그 디렉터리를 쓰고 있다는 뜻인데, 흔한 범인은 그 안에 cd로 들어가 있는 자기 자신의 셸이다.

검사 도구는 파일 시스템마다 다르다

  • fsck는 종류를 보고 알맞은 프로그램을 부르는 앞단이다. ext 계열은 실제로 e2fsck가 일한다.
  • XFS는 fsck가 아니라 xfs_repair 로 검사·복구한다.
  • 검사 도중의 질문에 전부 "예"로 답하게 하려면 fsck -y를 쓴다.
  • ext 계열 파일 시스템의 최상위에 있는 lost+found 디렉터리는 fsck가 주인을 찾지 못한 파일 조각을 모아 두는 곳이다. 지우지 않는다.

/etc/fstab 한 줄 읽기

/dev/sdb1   /data   ext4   defaults   0   2
    │         │       │        │      │   │
    │         │       │        │      │   └── fsck 검사 순서 (0=안 함, 1=루트, 2=나머지)
    │         │       │        │      └────── dump 백업 여부 (보통 0)
    │         │       │        └───────────── 마운트 옵션
    │         │       └────────────────────── 파일 시스템 종류
    │         └────────────────────────────── 마운트 포인트
    └──────────────────────────────────────── 장치
  • 필드는 여섯 개이고 순서가 고정이다 — 장치 · 마운트 포인트 · 종류 · 옵션 · dump · fsck 순서. "네 번째 필드가 무엇인가"처럼 순서를 묻는다.
  • 여섯 번째 값은 루트(/)만 1, 나머지 검사할 파일 시스템은 2, 검사하지 않을 것(swap 등)은 0이다.

첫 필드에는 장치명 대신 UUID를 적는 경우가 많다.

$ sudo blkid /dev/sdb1
/dev/sdb1: UUID="5c1e2f0a-8d3b-4e7a-9b61-2f4d7c9a1e35" BLOCK_SIZE="4096" TYPE="ext4"
 
# /etc/fstab
UUID=5c1e2f0a-8d3b-4e7a-9b61-2f4d7c9a1e35   /data   ext4   defaults   0   2
  • sd 뒤의 글자는 커널이 디스크를 발견한 순서라, 디스크를 더 달거나 USB를 꽂은 채 부팅하면 sdb가 sdc로 밀릴 수 있다.
  • UUID는 파일 시스템을 만들 때 붙는 고유한 값이라 순서가 바뀌어도 그대로다. blkid나 lsblk -f로 확인한다.

자주 틀리는 지점

  1. "파티션을 만들면 바로 파일을 저장할 수 있다" → mkfs로 파일 시스템을 만들고 mount까지 해야 한다.
  2. "inode에 파일 이름이 들어 있다" → 이름은 디렉터리에 있다. inode에는 이름 빼고 다 있다.
  3. "심볼릭 링크는 원본과 inode가 같다" → 같은 것은 하드 링크다. 심볼릭 링크는 자기 inode를 따로 갖는다.
  4. "디스크 용량이 남으면 파일은 언제나 만들 수 있다" → inode가 바닥나면 못 만든다. df -i로 확인한다.
  5. "fsck는 마운트한 채 돌려도 된다" → 떼고 돌리는 것이 원칙이다.
  6. "/etc/mtab에 적으면 부팅 때 자동 마운트된다" → 그 역할은 /etc/fstab이다. mtab은 현재 상태를 보여줄 뿐이다.

내일은 전원을 켠 순간부터 로그인 화면이 뜨기까지 — 부팅 과정과 부트 매니저를 따라간다.

📖 용어

  • 파일 시스템 : 디스크에 파일과 디렉터리를 저장·관리하는 규칙 체계.
  • 저널링(Journaling) : 작업 내용을 미리 기록해 장애 시 빠르게 복구하는 기법. ext3부터 도입됐다.
  • inode : 파일의 권한·소유자·크기·위치를 담은 구조. 파일 이름은 포함하지 않는다.
  • 하드 링크 : 같은 inode를 가리키는 다른 이름. 원본을 지워도 데이터가 남는다.
  • 마운트(Mount) : 파일 시스템을 디렉터리 트리의 한 지점에 연결하는 것.
  • /etc/fstab : 부팅 시 자동으로 마운트할 항목을 기록하는 설정 파일.
  • mkfs : 파티션에 파일 시스템을 만드는 명령. 흔히 말하는 '포맷'이다.
  • fsck : 파일 시스템의 오류를 검사하고 복구하는 명령.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

다음 중 저널링 기능이 처음 도입된 리눅스 파일 시스템으로 알맞은 것은?

문제 2

다음 중 inode에 저장되지 않는 정보로 알맞은 것은?

문제 3

다음 중 부팅할 때 자동으로 마운트할 파일 시스템을 기록하는 설정 파일로 알맞은 것은?

문제 4

다음 중 한 개의 파일 크기가 4GB를 넘을 수 없어 대용량 파일 저장에 제약이 있는 파일 시스템으로 알맞은 것은?

문제 5

다음 중 파티션에 파일 시스템을 생성하는 명령으로 알맞은 것은?

이전파티션: 디스크를 어떻게 나눌 것인가Week 2 · Day 2다음 부트 매니저: 전원을 켠 순간부터 로그인까지Week 2 · Day 4

참고 공식 자료

  • 리눅스마스터 2급 공식 출제 기준(새 탭에서 열림)

이 페이지

  • 파일 시스템이란
  • 리눅스 파일 시스템 계보
  • 종류별로 묶어 보기
  • 저널링이 무엇을 해결하나
  • 다른 운영체제·용도의 파일 시스템
  • inode: 파일의 신분증
  • inode가 놓이는 자리
  • 하드 링크와 심볼릭 링크
  • 만들고, 붙이고, 기록하기
  • mkfs의 여러 얼굴
  • mount 옵션과 자주 쓰는 형태
  • 검사 도구는 파일 시스템마다 다르다
  • etc/fstab 한 줄 읽기
  • 자주 틀리는 지점
  • 용어
  • 연습 문제