CertNote/ 출퇴근 학습 노트
로드맵
KOEN
리눅스마스터 2급 · 2급리눅스마스터 2급
리눅스마스터 1급 · 1급리눅스마스터 1급
  • Week 1
    • 1.운영체제와 리눅스: 커널이 하는 일
    • 2.자유 소프트웨어와 배포판: 라이선스가 만든 생태계
    • 3.설치와 부팅: 전원을 켜는 순간부터
    • 4.파일시스템 구조와 파일의 종류: 모든 것은 파일이다
    • 5.Week 1 종합 복습: 개념을 꿰뚫는 시간
  • Week 2
  • Week 3
  • Week 4
  • Week 5
    • 1.파일시스템 종류와 구조: ext2/3/4 · xfs · btrfs · 저널링 · inode와 블록
    • 2.파티션과 마운트: fdisk · gdisk · parted · mkfs · mount/umount · /etc/fstab 6필드
    • 3.LVM과 스왑: PV·VG·LV 계층 · pvcreate부터 lvextend·resize2fs · mkswap·swapon
    • 4.RAID와 쿼터, 디스크 점검: RAID 0/1/5/6/10 · mdadm · quota/edquota · fsck/df/du/lsblk/blkid
    • 5.Week 5 종합 복습: 파일시스템·파티션·LVM·스왑·RAID·쿼터 총정리와 실전 연습
  • Week 6
  • Week 7
  • Week 8
  • Week 9
  • Week 10
  • Week 11
  • Week 12
  • Week 13
  • Week 14
합격 후기

© CertNote · 주간랩스

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

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

리눅스마스터 1급· AssociateWeek 5 · Day 2읽기 약 11분
핵심 정리
  • 디스크가 쓰이기까지의 파이프라인은 파티션 → 포맷(mkfs) → 마운트 → 영구화(fstab). 순서가 바뀌면 안 된다.
  • MBR은 2TB·주 파티션 4개 한계(논리는 5번부터), GPT는 사실상 무제한·128개·GUID 식별.
  • 도구 분담: fdisk(MBR 중심) · gdisk(GPT 전용) · parted(둘 다·스크립트 가능). fdisk는 w를 눌러야 반영된다.
  • fstab 6필드 = 장치(UUID) · 마운트포인트 · 타입 · 옵션 · dump · pass. pass는 루트 1, 나머지 2, 안 함 0.
  • fstab을 고쳤으면 재부팅 전에 mount -a로 검증한다. 안 그러면 emergency mode로 떨어진다.

Day 2 - 파티션과 마운트: fdisk · gdisk · parted · mkfs · mount/umount · /etc/fstab 6필드

디스크 장치 이름과 파티션 명명 규칙

리눅스는 디스크를 /dev/ 아래의 블록 장치 파일로 표현한다.

장치 패턴의미
/dev/sda, /dev/sdbSATA/SCSI/USB 디스크 (a=첫째, b=둘째…)
/dev/sda1, /dev/sda2sda의 첫째·둘째 파티션
/dev/nvme0n1첫째 NVMe SSD
/dev/nvme0n1p1nvme0n1의 첫째 파티션 (p 접두 주의)
/dev/vda가상화 환경의 virtio 디스크

숫자가 디스크 뒤에 바로 붙는지(sda1), p를 사이에 두는지(nvme0n1p1)가 헷갈리기 쉬운 포인트다. 이름이 숫자로 끝나는 장치(nvme, mmcblk 등)는 파티션 번호와 구분하려고 p를 넣는다. sda는 문자로 끝나니 바로 1을 붙여도 모호하지 않다.

# 직접 쳐보기 — 디스크와 파티션 전체 조망
lsblk                  # 트리 형태로 디스크-파티션-마운트 한눈에
lsblk -f               # + 파일시스템 타입, UUID, 마운트포인트
fdisk -l               # 모든 디스크의 파티션 테이블 (root 필요)
cat /proc/partitions   # 커널이 인식한 파티션 목록

MBR vs GPT — 두 가지 파티션 테이블 방식

파티션 정보를 디스크 어디에 어떤 형식으로 적느냐가 파티션 테이블 방식이고, 크게 둘이다.

항목MBR (DOS)GPT
등장1983 (BIOS 시대)2000s (UEFI)
최대 디스크 크기2TB사실상 무제한(~9.4ZB)
주 파티션 수최대 4개 (확장+논리로 우회)128개 (기본)
백업단일 (디스크 첫 섹터)주+백업 (앞뒤 이중)
식별섹터 번호 기반GUID/UUID 기반
펌웨어BIOSUEFI(+호환 BIOS)

MBR의 "주 파티션 4개 제한"은 파티션 테이블 공간이 64바이트(16바이트×4)뿐이기 때문이다. 더 쪼개려면 주 파티션 하나를 확장 파티션(extended) 으로 만들고 그 안에 논리 파티션(logical) 을 여러 개 둔다. 그래서 MBR에서 논리 파티션 번호는 항상 5번부터 시작한다(sda5, sda6…). "MBR에서 5번째 파티션의 정체는?" → 첫 논리 파티션이 정답.

⚠️ 함정: 2TB가 넘는 디스크는 MBR로는 전체를 쓸 수 없다 — 2TB 이후 공간이 주소 표현 범위를 벗어난다. 대용량 디스크는 반드시 GPT여야 한다. 그리고 GPT는 UEFI 펌웨어와 짝을 이루는 게 정석이다.

MBR(Master Boot Record)은 디스크 첫 512바이트에 부트로더 코드 + 파티션 테이블 + 시그니처를 욱여넣은 1983년의 설계다. 40년 전 PC의 제약이 오늘날 "주 파티션 4개" 같은 화석 규칙으로 남았다. GPT는 이 한계를 걷어내며 각 파티션에 고유 GUID를 부여해, 디스크 순서가 바뀌어도 파티션을 안정적으로 식별한다.

파티션 도구 3종: fdisk · gdisk · parted

파티션을 만들고 지우는 대화형 도구 셋의 역할 분담이 명확하다.

도구주 대상특징
fdiskMBR (최신 버전은 GPT도)가장 전통적, 대화형 메뉴
gdiskGPT 전용fdisk와 유사한 인터페이스의 GPT판
partedMBR + GPT 모두스크립트화 가능, 2TB↑ 능숙, 비대화형 명령 지원

fdisk 대화형 핵심 키:

fdisk /dev/sdb
# 명령 모드에서:
#   p  : 현재 파티션 테이블 출력(print)
#   n  : 새 파티션 생성(new)
#   d  : 파티션 삭제(delete)
#   t  : 파티션 타입(시스템 ID) 변경 — 예: 82=swap, 83=Linux, 8e=LVM
#   l  : 알려진 타입 코드 목록
#   w  : 변경 저장 후 종료(write) — 이걸 눌러야 디스크에 반영
#   q  : 저장 없이 종료(quit)

fdisk에서 w를 누르기 전까지는 디스크에 아무것도 쓰이지 않는다. 모든 편집은 메모리상에서만 일어나고, w가 커밋, q가 롤백이다. 실수했다면 q로 빠져나오면 원상복구된다. 시험에서 "fdisk 변경사항을 디스크에 반영하는 명령은?" → w.

parted는 비대화형으로 한 줄에 끝낼 수 있어 자동화에 유리하다. 예: parted /dev/sdb --script mklabel gpt mkpart primary ext4 0% 100%. 또 parted는 파티션 타입 라벨(mklabel msdos / mklabel gpt)로 MBR/GPT를 선택한다. fdisk가 단위를 섹터·실린더로 다루는 반면 parted는 %나 GB 같은 사람 친화적 단위를 쓴다.

⚠️ 함정: 파티션 타입 코드를 헷갈리지 말 것. 83=Linux 일반, 82=Linux swap, 8e=Linux LVM, fd=Linux RAID autodetect. swap 파티션을 만들 때 타입을 82로 바꾸지 않아도 동작은 하지만, 시스템이 swap임을 자동 인식하는 데 도움을 준다. "LVM용 파티션 타입 코드는?" → 8e.

# 직접 쳐보기 — 파티션 생성 흐름 (실습 디스크에서만!)
fdisk /dev/sdb          # n→p→번호→크기 지정→w
partprobe /dev/sdb      # 커널에 파티션 테이블 재읽기 요청
lsblk /dev/sdb          # 새 파티션 확인

mkfs — 파티션을 파일시스템으로 포맷

파티션을 만들었다고 끝이 아니다. 그 안을 특정 파일시스템 구조로 초기화해야 파일을 담을 수 있다. 이게 mkfs(make filesystem)다.

mkfs.ext4 /dev/sdb1        # ext4로 포맷
mkfs -t ext4 /dev/sdb1     # 위와 동일 (-t로 타입 지정)
mkfs.xfs /dev/sdb1         # xfs로 포맷
mkfs.vfat /dev/sdb1        # FAT (USB 등)
mke2fs -t ext4 /dev/sdb1   # ext 계열 저수준 도구

mkfs.ext4 file ≡ mkfs -t ext4 file이다. mkfs는 사실상 mkfs.<타입> 도우미를 호출하는 프론트엔드다. 포맷은 inode 테이블·슈퍼블록·블록 그룹을 디스크에 새로 쓰는 작업이므로 기존 데이터를 모두 날린다. 시험에서 "ext4로 포맷하는 명령" 단답으로 묻는다.

mkfs를 마운트된 파티션이나 사용 중인 파티션에 실행하면 큰 사고다. 또 디스크 전체(/dev/sdb)에 포맷하면 파티션 테이블째 날아간다 — 반드시 파티션(/dev/sdb1)을 지정한다. "이미 데이터가 있는 파티션에 mkfs 하면?" → 전부 삭제된다.

# 직접 쳐보기 — 포맷 후 확인
mkfs.ext4 /dev/sdb1
blkid /dev/sdb1          # 새로 생긴 UUID와 TYPE 확인
tune2fs -L data /dev/sdb1   # 볼륨 라벨 부여 (선택)

mount와 umount — 파일시스템을 트리에 붙이고 떼기

  • 리눅스에는 윈도우의 "C:", "D:" 같은 드라이브 문자가 없다. 모든 저장 공간은 단 하나의 디렉터리 트리(/) 어딘가에 붙는다.
  • 파일시스템을 특정 디렉터리(마운트 포인트)에 연결하는 게 mount다.
mount /dev/sdb1 /mnt/data       # sdb1을 /mnt/data에 마운트
mount -t ext4 /dev/sdb1 /mnt/data   # 타입 명시
mount -o ro /dev/sdb1 /mnt/data     # 읽기 전용으로
mount                            # 현재 마운트된 모든 것 출력
umount /mnt/data                 # 마운트 해제 (경로 또는 장치로)
umount /dev/sdb1

마운트 포인트로 쓰는 디렉터리에 원래 파일이 있었다면, 마운트하는 동안 그 파일들은 가려져서 보이지 않는다(사라진 게 아니라 덮인 것). umount하면 다시 나타난다. 그래서 마운트 포인트는 빈 디렉터리를 쓰는 게 관례다.

어떤 프로세스가 그 파일시스템 안의 파일을 쓰고 있으면 umount가 "target is busy" 로 거부된다. 누가 쓰는지는 lsof /mnt/data 또는 fuser -m /mnt/data로 찾는다. 정 안 되면 umount -l(lazy, 새 접근 차단 후 마지막 사용 끝나면 해제)을 쓴다. "마운트 중인 파티션 umount 거부 원인은?" → 사용 중인 프로세스 존재.

# 직접 쳐보기 — 마운트 진단
mount | grep sdb1            # sdb1이 어디 붙었나
findmnt /mnt/data           # 마운트 정보 트리 형태로
fuser -m /mnt/data          # 사용 중인 프로세스 PID
umount /mnt/data

/etc/fstab — 부팅 시 자동 마운트의 6필드

  • mount 명령은 일시적이다. 재부팅하면 사라진다.
  • 부팅 때마다 자동으로, 또는 mount -a로 일괄 재현하려면 /etc/fstab에 등록해야 한다.
  • 각 줄은 공백으로 구분된 6개 필드다 — 여기가 오늘의 최대 시험 격전지.
UUID=abc-123  /mnt/data  ext4  defaults  0  2
#    1           2        3      4        5  6
#필드의미주의/값
1장치(파일시스템)UUID= / LABEL= / /dev/sdb1UUID 권장(장치명은 부팅 순서 바뀌면 어긋남)
2마운트 포인트붙일 디렉터리swap은 none 또는 swap
3파일시스템 타입ext4, xfs, swap, vfat, nfs…auto=자동 감지
4마운트 옵션defaults, ro, noexec, noauto…콤마로 나열
5dump백업(dump) 대상 여부0=안 함(거의 항상 0), 1=함
6fsck 순서(pass)부팅 시 검사 순서0=검사 안 함, 1=루트(/), 2=나머지

6번째 필드(pass/순서)가 함정이 되기 쉽다. 루트 파일시스템(/)은 1, 그 외 검사할 파일시스템은 2, 검사 안 할 것(swap, 네트워크 FS 등)은 0이다. 1번을 먼저 검사하고 2번들을 병렬로 검사한다. "fstab 6번째 필드에서 루트 파일시스템 값은?" → 1.

1번 필드에 /dev/sdb1 같은 장치명을 쓰면 위험하다. 디스크를 추가/제거하면 커널이 부여하는 이름(sdb → sdc)이 바뀌어 엉뚱한 디스크가 마운트될 수 있다. UUID는 파일시스템에 고정된 고유 식별자라 순서가 바뀌어도 안전하다. blkid로 UUID를 확인해 UUID=... 형태로 적는 게 정석이다.

5번(dump)과 6번(pass)을 헷갈리지 말 것. 5번은 백업 도구 dump용 플래그(거의 0), 6번은 부팅 시 fsck 검사 순서. 또 4번 옵션의 noauto 는 "부팅 시 자동 마운트 안 함, 수동 mount만 허용"이고, defaults 는 rw,suid,dev,exec,auto,nouser,async의 묶음이다.

주요 마운트 옵션:

옵션의미
defaultsrw, suid, dev, exec, auto, nouser, async 묶음
ro / rw읽기 전용 / 읽기쓰기
noexec이 FS의 실행 파일 실행 금지(보안)
nosuidSUID/SGID 비트 무시(보안)
noauto부팅 시 자동 마운트 안 함
usrquota,grpquota디스크 쿼터 활성화 (Day4 연계)

fstab을 잘못 편집하면(존재하지 않는 장치, 오타) 부팅이 emergency mode로 떨어질 수 있다. 그래서 fstab을 고친 뒤에는 재부팅 전에 반드시 mount -a로 검증하는 게 철칙이다. 오류 없이 모두 마운트되면 안전, 에러가 나면 그 줄을 고쳐야 한다.

# 직접 쳐보기 — fstab 작성과 검증
blkid /dev/sdb1                     # UUID 확보
# /etc/fstab에 줄 추가 후:
mount -a                            # fstab 전체를 적용 (오류 검증!)
findmnt --verify                    # fstab 문법/논리 검증
systemctl daemon-reload            # systemd가 fstab 변경 인식

다음 Day 3에서는 파티션을 유연하게 늘리는 LVM과 가상메모리 스왑을 다룬다.

📖 용어

  • 파티션(partition) : 물리 디스크를 논리적으로 나눈 구획. 이름은 /dev/sda1, /dev/nvme0n1p1 식이다.
  • MBR : 디스크 첫 512바이트에 부트코드와 파티션 테이블을 넣는 옛 방식. 2TB·주 파티션 4개 한계.
  • 확장/논리 파티션 : MBR의 4개 제한을 우회하는 장치. 논리 파티션 번호는 항상 5번부터 시작한다.
  • GPT : GUID로 파티션을 식별하는 현대 테이블. 128개·사실상 무제한 용량, 테이블을 앞뒤 이중 보관.
  • fdisk / gdisk / parted : MBR 중심 대화형 도구 / GPT 전용 도구 / 둘 다 되고 스크립트화되는 도구.
  • w와 q : fdisk에서 변경을 디스크에 커밋하는 키와, 저장 없이 빠져나오는 키.
  • 파티션 타입 코드 : 83=Linux, 82=swap, 8e=LVM, fd=RAID.
  • partprobe : 파티션 테이블이 바뀐 것을 커널에 다시 읽으라고 알리는 명령.
  • mkfs : 파티션 안에 파일시스템 구조를 새로 쓰는 포맷 명령. 기존 데이터를 전부 날린다.
  • 마운트 포인트 : 파일시스템을 붙일 디렉터리. 원래 있던 파일은 마운트 동안 가려진다.
  • umount -l(lazy) : 사용 중이라 안 떨어질 때, 새 접근을 막고 마지막 사용이 끝나면 해제하는 옵션.
  • lsof / fuser -m : 어떤 프로세스가 그 파일시스템을 붙잡고 있는지 찾는 도구.
  • UUID : 파일시스템에 고정된 고유 식별자. 장치명이 바뀌어도 안전해 fstab에 쓰는 것이 정석이다.
  • dump 필드(5번) : 백업 도구 dump의 대상 여부. 현대 시스템에서는 거의 항상 0이다.
  • pass 필드(6번) : 부팅 시 fsck 검사 순서. 루트는 1, 나머지는 2, 검사 안 하면 0.
  • noexec / nosuid : 그 파일시스템의 실행 파일 실행을 막거나 SUID 비트를 무시하는 보안 옵션.
  • mount -a : fstab에 적힌 것을 전부 마운트해 보는 명령. 재부팅 전 검증용 필수 절차다.

📝 연습 문제

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

문제 1

MBR 파티션 방식에서 만들 수 있는 주 파티션(primary partition)의 최대 개수는?

문제 2

/etc/fstab의 6번째 필드(fsck pass)에서 루트 파일시스템(/)에 지정해야 할 값으로 옳은 것은?

문제 3

파티션 /dev/sdb1을 ext4 파일시스템으로 포맷하는 명령으로 옳은 것은?

문제 4

umount /mnt/data 실행 시 "target is busy" 오류가 발생하는 가장 일반적인 원인은?

문제 5

/etc/fstab의 1번째 필드에 /dev/sdb1 같은 장치명 대신 UUID=...를 쓰는 주된 이유는?

문제 6

GPT 파티션 테이블을 전용으로 다루는 대화형 도구로 옳은 것은?

문제 7

리눅스에서 LVM(논리 볼륨)용으로 쓸 파티션에 fdisk로 지정하는 파티션 타입(시스템 ID) 코드로 옳은 것은?

이전파일시스템 종류와 구조: ext2/3/4 · xfs · btrfs · 저널링 · inode와 블록Week 5 · Day 1다음 LVM과 스왑: PV·VG·LV 계층 · pvcreate부터 lvextend·resize2fs · mkswap·swaponWeek 5 · Day 3

참고 공식 자료

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

이 페이지

  • 디스크 장치 이름과 파티션 명명 규칙
  • MBR vs GPT — 두 가지 파티션 테이블 방식
  • 파티션 도구 3종: fdisk · gdisk · parted
  • mkfs — 파티션을 파일시스템으로 포맷
  • mount와 umount — 파일시스템을 트리에 붙이고 떼기
  • etc/fstab — 부팅 시 자동 마운트의 6필드
  • 용어
  • 연습 문제