모든 강의를 무료로 볼 수 있어요. 회원가입 없이도 학습 가능합니다.

19강 / 전체 19강

파일 시스템의 구성과 관리 ③ — df·du·fsck와 쿼터·LVM·RAID

15분 읽기 조회 0

[2과목 1장 02절] df·du의 차이와 fsck, 디스크 쿼터, LVM 3계층, RAID 레벨별 최소 디스크 수와 가용 용량 계산을 다룹니다.

🎯 이 강의 학습 목표

이 강은 2과목 1장 02절 파일 시스템의 구성과 관리의 마지막입니다. 이 강을 마치면 df와 du가 왜 다른 값을 보여 주는지 설명할 수 있고, fsck를 언제 어떻게 써야 하는지 알며, 쿼터의 soft/hard limit을 구분하고, LVM의 3계층과 RAID 레벨별 최소 디스크 수·가용 용량을 계산할 수 있게 됩니다.

RAID는 계산 문제로 직접 출제됩니다. "1TB 디스크 4개로 RAID 5를 구성하면 가용 용량은?" 같은 형태입니다. 공식을 외우는 것보다 왜 그만큼 줄어드는지를 이해하면 헷갈리지 않습니다.

💡 df와 du — 비슷해 보이지만 다른 것을 센다

구분df (disk free)du (disk usage)
대상파일 시스템 전체디렉터리·파일
정보 출처슈퍼 블록의 통계실제로 파일을 훑어서 합산
속도즉시파일이 많으면 느림
주요 옵션-h 읽기 좋게, -T 종류, -i inode-s 합계만, -h, -a 파일까지, --max-depth

두 명령의 값이 어긋나는 대표적 상황이 있습니다. 삭제했는데 용량이 안 줄어드는 경우입니다. 어떤 프로세스가 그 파일을 열어 둔 채라면, 17강에서 배운 대로 링크 수는 0이 되었지만 사용 중이라 실제 해제가 미뤄집니다. 그러면 du는 파일이 사라졌다고 하고 df는 여전히 용량을 쓰고 있다고 합니다. 해결책은 해당 프로세스를 재시작하는 것이며, 범인은 lsof | grep deleted로 찾습니다.

💡 fsck — 파일 시스템 검사와 복구

fsck(file system check)는 손상된 파일 시스템의 정합성을 검사하고 복구합니다. ext 계열 전용은 e2fsck, XFS는 xfs_repair입니다.

가장 중요한 규칙은 "마운트된 상태에서 실행하지 말 것"입니다. 검사 도중에 파일 시스템이 변경되면 오히려 손상을 키웁니다. 그래서 루트 파일 시스템을 검사하려면 단일 사용자 모드(런레벨 1)로 들어가거나 라이브 USB로 부팅해야 합니다. 9강에서 배운 런레벨 1의 쓰임새가 여기서도 나옵니다.

옵션의미
-a / -p질문 없이 자동 복구
-y모든 질문에 yes
-n고치지 않고 검사만
-f깨끗해 보여도 강제 검사
-t파일 시스템 종류 지정

복구 과정에서 어느 디렉터리에도 속하지 않게 된 파일이 나오면 lost+found 디렉터리에 inode 번호를 이름으로 삼아 저장됩니다. 12강의 ls -l / 출력에 lost+found가 있었던 것이 이 때문입니다. 8강에서 배운 저널링이 있으면 fsck가 저널만 확인하면 되므로 복구 시간이 극적으로 줄어듭니다.

💡 디스크 쿼터 — 사용량 제한

쿼터(quota)는 사용자나 그룹이 쓸 수 있는 디스크 용량과 파일 개수(inode)를 제한하는 기능입니다. 한 사용자가 디스크를 다 채워 시스템 전체를 마비시키는 것을 막습니다.

핵심 개념은 세 가지입니다.

개념의미
soft limit넘어도 즉시 막히지는 않는 한계. 경고가 나가고 유예 기간이 시작됨
hard limit절대 넘을 수 없는 한계. 즉시 차단
grace periodsoft limit 초과 상태를 허용하는 기간. 이 기간이 지나면 soft limit이 hard limit처럼 작동

즉 soft는 "경고선", hard는 "한계선", grace는 "경고선을 넘은 채 버틸 수 있는 시간"입니다. 제한 대상은 블록(용량)과 inode(파일 개수) 두 가지이며, 각각에 soft·hard를 따로 정합니다.

명령역할
quotacheck파일 시스템을 검사해 쿼터 DB 파일 생성(aquota.user·aquota.group)
quotaon / quotaoff쿼터 기능 활성화 / 해제
edquota편집기로 사용자·그룹의 한계값 수정. -t는 유예 기간 설정
setquota명령 한 줄로 한계값 지정(스크립트용)
repquota쿼터 사용 현황 보고서
quota특정 사용자의 쿼터 조회

쿼터를 쓰려면 먼저 /etc/fstab의 옵션 필드에 usrquota(사용자별) 또는 grpquota(그룹별)를 추가하고 다시 마운트해야 합니다. 18강에서 본 네 번째 필드가 여기서 쓰입니다.

💡 LVM — 유연한 볼륨 관리

파티션의 근본적 한계는 한 번 정하면 크기를 바꾸기 어렵다는 것입니다. /home이 가득 찼는데 옆 파티션에 공간이 남아도 옮길 수가 없습니다. LVM(Logical Volume Manager)은 물리 디스크와 사용하는 볼륨 사이에 추상화 계층을 넣어 이 문제를 풉니다.

계층이름설명
1PV (Physical Volume)물리 디스크·파티션을 LVM이 쓸 수 있게 초기화한 것
2VG (Volume Group)PV 여러 개를 묶은 하나의 큰 저장 풀
3LV (Logical Volume)VG에서 떼어 낸 실제로 쓰는 볼륨(여기에 파일 시스템 생성)

VG를 나누는 최소 단위가 PE(Physical Extent)이고, LV 쪽에서 대응하는 단위가 LE(Logical Extent)입니다. PV → VG → LV 순서는 시험에 그대로 나옵니다.

# LVM 구성 순서 — 가상머신 등 실습 환경에서만 실행할 것
sudo pvcreate /dev/sdb1 /dev/sdc1        # ① PV 생성
sudo vgcreate vg_data /dev/sdb1 /dev/sdc1 # ② VG로 묶기
sudo lvcreate -L 50G -n lv_home vg_data   # ③ LV 잘라내기
sudo mkfs.ext4 /dev/vg_data/lv_home       # ④ 파일 시스템 생성
sudo mount /dev/vg_data/lv_home /home     # ⑤ 마운트

# 용량이 부족해지면 — 서비스 중단 없이 확장
sudo lvextend -L +20G /dev/vg_data/lv_home
sudo resize2fs /dev/vg_data/lv_home       # ext4는 파일 시스템도 늘려야 함

마지막 두 줄이 LVM의 핵심 가치입니다. lvextend로 볼륨을 늘린 뒤 resize2fs로 파일 시스템까지 늘려야 실제로 쓸 수 있습니다. XFS는 xfs_growfs를 씁니다. 두 단계라는 점이 자주 빠뜨리는 부분입니다. 상태 확인은 pvdisplay·vgdisplay·lvdisplay(또는 pvs·vgs·lvs)로 합니다.

💡 RAID — 레벨별 최소 디스크 수와 가용 용량

RAID(Redundant Array of Independent Disks)는 디스크 여러 개를 묶어 속도나 안정성을 얻는 기술입니다. 시험은 레벨별 특징·최소 디스크 수·가용 용량·허용 고장 개수를 묻습니다.

레벨방식최소 디스크가용 용량고장 허용
RAID 0스트라이핑 — 데이터를 쪼개 분산 저장2개100%없음(1개만 고장나도 전체 손실)
RAID 1미러링 — 똑같이 복제2개50%1개
RAID 5분산 패리티3개(n−1)/n1개
RAID 6이중 분산 패리티4개(n−2)/n2개
RAID 10미러링(1) 후 스트라이핑(0)4개50%쌍마다 1개
Linear(JBOD)이어 붙이기2개100%없음

원리를 이해하면 외울 것이 줄어듭니다. RAID 0은 데이터를 조각내 여러 디스크에 동시에 쓰므로 빠르지만 한 개만 고장나도 전부 못 씁니다. RAID 1은 같은 내용을 두 벌 보관하므로 절반만 쓸 수 있지만 하나가 죽어도 안전합니다.

RAID 5는 절충안입니다. 데이터를 분산 저장하면서 패리티(오류 검출·복구용 정보)를 함께 흩어 놓습니다. 패리티가 디스크 1개 분량을 차지하므로 가용 용량이 (n−1)/n입니다. 1TB 디스크 4개면 (4−1)×1TB = 3TB입니다. 디스크 하나가 고장나면 나머지와 패리티로 내용을 계산해 복구합니다. 패리티를 담을 자리가 필요하므로 최소 3개가 있어야 합니다.

RAID 6은 패리티를 두 벌 두어 디스크 2개가 동시에 고장나도 견딥니다. 대신 (n−2)/n으로 용량이 더 줄고 최소 4개가 필요합니다.

RAID 10은 미러링한 쌍들을 다시 스트라이핑합니다. 속도와 안정성을 모두 얻지만 용량은 절반이고 최소 4개가 필요합니다. 이름의 순서(1+0)는 먼저 미러, 그다음 스트라이프라는 뜻입니다.

리눅스에서 소프트웨어 RAID를 구성하는 명령은 mdadm이며, 상태는 /proc/mdstat에서 확인합니다. 한 가지 반드시 짚을 점은 RAID는 백업이 아니라는 것입니다. 디스크 고장에는 대응하지만, 실수로 지운 파일이나 랜섬웨어에는 모든 디스크에 똑같이 반영되므로 아무 도움이 되지 않습니다.

💻 실습으로 확인하기

아래는 실제 실행 결과입니다.

$ df -hT /
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sdd       ext4 1007G   38G  919G   4% /

$ du -sh /tmp/lm19
5.1M	/tmp/lm19

$ du -h --max-depth=1 /tmp/lm19
8.0K	/tmp/lm19/sub
5.1M	/tmp/lm19

df는 파일 시스템 전체(1007G 중 38G 사용)를, du는 지정한 디렉터리(5.1M)를 보여 줍니다. 대상 자체가 다르다는 점이 두 출력을 나란히 놓으면 분명해집니다. --max-depth=1은 한 단계 아래까지만 나눠 보여 주어, 어느 하위 디렉터리가 용량을 차지하는지 찾을 때 유용합니다.

$ ls -l sub/s.txt
-rw-r--r-- 1 chung chung 6 Sep 12 21:15 sub/s.txt

$ du -b sub/s.txt
6	sub/s.txt

$ du -h sub/s.txt
4.0K	sub/s.txt

같은 파일인데 값이 다릅니다. ls -l과 du -b는 6바이트라고 하는데 du -h는 4.0K라고 합니다. 이유는 파일 시스템이 블록 단위로 공간을 할당하기 때문입니다. 이 파일 시스템의 블록 크기가 4KB이므로, 6바이트짜리 파일도 블록 하나를 통째로 차지합니다. du는 기본적으로 "실제 점유한 디스크 공간"을, -b는 "파일 내용의 바이트 수"를 보여 준다는 차이입니다. 작은 파일이 아주 많은 시스템에서 ls로 합산한 크기와 du 값이 크게 벌어지는 이유가 여기 있습니다.

쿼터·LVM·RAID는 root 권한과 추가 디스크가 필요하므로 가상머신에서 확인하십시오. 특히 LVM과 RAID는 가상 디스크를 여러 개 붙여 두면 안전하게 반복 실습할 수 있습니다.

⚠️ 시험에 나오는 함정

함정정확한 사실
RAID 5의 최소 디스크는 2개다3개(RAID 0·1이 2개, RAID 6·10이 4개)
RAID 1의 가용 용량은 100%다50%. 100%는 RAID 0
RAID 5는 디스크 2개 고장까지 견딘다1개. 2개는 RAID 6
RAID를 쓰면 백업이 필요 없다RAID는 백업이 아니다. 삭제·감염은 그대로 복제됨
LVM 구성 순서는 VG → PV → LVPV → VG → LV
lvextend만 하면 바로 용량이 늘어난다resize2fs(또는 xfs_growfs)까지 해야 함
soft limit을 넘으면 즉시 쓰기가 막힌다즉시 막는 것은 hard limit. soft는 유예 기간 후 차단
마운트된 상태에서 fsck를 실행한다금지. 손상을 키움 — 단일 사용자 모드에서
파일을 지우면 df 값이 즉시 줄어든다프로세스가 열어 둔 파일이면 안 줄어듦

📝 핵심 요약 — 암기표

항목핵심
df vs du파일 시스템 전체 vs 디렉터리·파일 / df -i=inode, du -s=합계
fsck마운트 해제 후 실행 · 복구 파일은 lost+found로
쿼터 3개념soft(경고+유예) · hard(즉시 차단) · grace period
쿼터 명령quotacheck → quotaon → edquota(-t는 유예) → repquota
쿼터 사전 작업/etc/fstab에 usrquota·grpquota 추가
LVM 순서PV → VG → LV (pvcreate→vgcreate→lvcreate) · 단위 PE/LE
LVM 확장lvextend + resize2fs (XFS는 xfs_growfs)
RAID 0스트라이핑 · 최소 2 · 용량 100% · 내결함성 없음
RAID 1미러링 · 최소 2 · 용량 50% · 1개 허용
RAID 5분산 패리티 · 최소 3 · 용량 (n−1)/n · 1개 허용
RAID 6이중 패리티 · 최소 4 · 용량 (n−2)/n · 2개 허용
RAID 10미러+스트라이프 · 최소 4 · 용량 50%
RAID 도구mdadm · 상태는 /proc/mdstat

이것으로 2과목 1장 파일 시스템 관련 명령어가 끝났습니다. 다음 20강부터는 2장 Shell로 들어가, 셸의 종류와 로그인 셸 변경을 다룹니다.

📋 실전 문제

1. 1TB 디스크 4개로 RAID 5를 구성했을 때 사용할 수 있는 총 용량은?
① 1TB    ② 2TB    ③ 3TB    ④ 4TB

2. RAID 레벨과 최소 구성 디스크 수의 연결로 틀린 것은?
① RAID 0 — 2개    ② RAID 1 — 2개
③ RAID 5 — 2개    ④ RAID 6 — 4개

3. 디스크 2개가 동시에 고장나도 데이터를 복구할 수 있는 RAID 레벨은?
① RAID 0    ② RAID 1    ③ RAID 5    ④ RAID 6

4. LVM의 구성 순서로 알맞은 것은?
① VG → PV → LV    ② PV → VG → LV
③ LV → PV → VG    ④ PV → LV → VG

5. 디스크 쿼터에서 초과하면 즉시 차단되는 한계값은?
① soft limit    ② hard limit    ③ grace period    ④ block limit

6. 쿼터의 유예 기간(grace period)을 설정할 때 사용하는 명령과 옵션은?
① quotaon -t    ② edquota -t
③ repquota -t    ④ quotacheck -t

7. fsck 실행에 대한 설명으로 옳은 것은?
① 반드시 마운트된 상태에서 실행해야 한다.
② 마운트를 해제한 뒤 실행해야 하며, 루트는 단일 사용자 모드에서 수행한다.
③ 복구된 파일은 자동으로 원래 디렉터리에 복원된다.
④ 저널링 파일 시스템에서는 fsck를 아예 쓸 수 없다.

8. 파일을 삭제했는데도 df로 본 사용량이 줄어들지 않는 가장 흔한 원인은?
① 파일 시스템이 손상되었다.
② 어떤 프로세스가 해당 파일을 열어 둔 상태이다.
③ 쿼터가 설정되어 있다.
④ RAID가 구성되어 있다.

✅ 정답과 해설

1. 정답 ③
RAID 5의 가용 용량은 (n−1)/n이므로 디스크 1개 분량이 패리티로 쓰입니다. (4−1) × 1TB = 3TB입니다. ④의 4TB는 RAID 0, ②의 2TB는 RAID 1 또는 RAID 10의 결과입니다.

2. 정답 ③
RAID 5의 최소 디스크는 3개입니다. 데이터를 분산 저장하면서 패리티를 담을 자리가 필요하기 때문입니다. ①·②의 2개, ④의 4개는 모두 옳습니다. RAID 10도 최소 4개입니다.

3. 정답 ④
RAID 6은 패리티를 두 벌 두어 디스크 2개 동시 고장을 견딥니다. ③의 RAID 5는 1개까지만 허용하고, ①의 RAID 0은 내결함성이 전혀 없습니다.

4. 정답 ②
PV(물리 볼륨) → VG(볼륨 그룹) → LV(논리 볼륨) 순서입니다. 명령도 pvcreate → vgcreate → lvcreate로 대응합니다. 물리 디스크를 먼저 LVM용으로 초기화하고, 묶어서 풀을 만들고, 거기서 잘라 쓴다고 이해하면 순서가 헷갈리지 않습니다.

5. 정답 ②
hard limit이 절대 넘을 수 없는 한계입니다. ①의 soft limit은 넘어도 즉시 막히지 않고 경고와 함께 유예 기간이 시작되며, 그 기간이 지나야 차단됩니다. ③의 grace period는 그 유예 기간 자체를 가리킵니다.

6. 정답 ②
edquota -t가 유예 기간을 설정합니다. edquota는 기본적으로 사용자·그룹의 한계값을 편집기로 수정하는 명령이며, -t를 붙이면 유예 기간 편집 화면이 열립니다. ③의 repquota는 보고서 출력, ④의 quotacheck는 쿼터 DB 생성입니다.

7. 정답 ②
fsck는 마운트를 해제한 뒤 실행해야 합니다. 검사 중에 파일 시스템이 변경되면 손상이 커지기 때문입니다. 루트 파일 시스템은 해제할 수 없으므로 단일 사용자 모드(런레벨 1)나 라이브 매체로 부팅해 수행합니다. ③의 복구 파일은 lost+found에 inode 번호 이름으로 저장되며 원위치 복원은 되지 않습니다.

8. 정답 ②
프로세스가 열어 둔 파일은 이름이 지워져도 링크 수가 0이 된 뒤 실제 해제가 미뤄집니다. 그래서 du는 줄었는데 df는 그대로인 상태가 됩니다. lsof | grep deleted로 원인 프로세스를 찾아 재시작하면 공간이 반환됩니다.

📚 참고 자료

관련 주제

  • df
  • du
  • fsck
  • 쿼터
  • LVM
  • RAID
  • 미러링
  • 패리티
  • 자격증
  • 자격증 강의
  • 리눅스마스터 2급 완전정복
  • 무료강의
  • 무료 온라인 강의
  • NUGUNA
  • 누구나

📚 시리즈 전체 공유

리눅스마스터 2급 완전정복

이 강의가 속한 시리즈는 총 19강, 모두 무료입니다. 처음부터 배우려는 동료에게 시리즈 전체를 알려 주세요.

댓글

0/1000

불러오는 중...