우분투 · 리눅스 입문 — 15편 (중급)

리눅스 디스크 관리 — df·du·lsblk로 용량 찾기

"디스크 공간이 부족합니다" 알림이 떴을 때, 뭐가 다 잡아먹었는지 찾아 비우는 법. 그리고 USB·외장하드를 안전하게 다루기.

2026년 5월 13일 · 약 8분 · 26편 입문 시리즈 15편

터미널에 df·du·lsblk 명령으로 디스크 사용량을 보는 화면 — 리눅스 디스크 관리를 상징하는 일러스트

5편에서 "리눅스엔 C: 드라이브가 없고 모든 게 / 아래 매달린다"고 했죠. USB를 꽂으면 /media/이름/USB 같은 폴더로 나타난다고도 했고요. 이번 편은 그 디스크들을 들여다보고·재고 관리하는 법입니다 — 특히 "공간 부족" 경고가 떴을 때 범인을 찾아 비우는 것.

핵심 도구 셋 — lsblk(디스크·파티션이 어떻게 생겼나), df(파일시스템별로 얼마나 찼나), du(어느 폴더가 얼마나 먹나). 윈도우에서 "내 PC 우클릭 → 속성"으로 보던 걸, 그리고 "디스크 정리"로 비우던 걸 명령어로 합니다. 26편 입문 시리즈 15편, "중급" 묶음. 보는 명령은 다 안전하고, 비우는 건 신중히 짚어드릴게요.

준비물 — 우분투 + 터미널. 5편(디렉토리 구조)·14편(프로세스)을 봤다면 자연스럽게 이어집니다. 디스크 '보기'는 다 안전 — 가상 머신이면 마운트·언마운트 실험도 부담 없어요.

디스크가 어떻게 보이나 — lsblk와 마운트

먼저 "이 컴퓨터에 어떤 저장장치가, 어떻게 쪼개져, 어디에 연결돼 있나"를 봅니다.

$ lsblk NAME SIZE TYPE MOUNTPOINT sda 256G disk ├─sda1 512M part /boot/efi ← 부팅용 파티션 └─sda2 255G part / ← 메인 파일시스템(루트)이 여기 들어있음 sdb 32G disk └─sdb1 32G part /media/jspark/USB ← 꽂은 USB ← 디스크(disk) 안에 파티션(part)들, 각각 '어느 폴더에 연결(mount)됐는지'

읽는 법: 디스크(sda·sdb… — 물리적 저장장치 하나) → 그 안의 파티션(sda1·sda2… — 디스크를 쪼갠 칸) → 각 파티션이 어느 폴더에 마운트됐는지(MOUNTPOINT). "마운트(mount)"는 "이 파티션의 내용을 이 폴더에서 보이게 한다"는 뜻이에요 — 그래서 /에 마운트된 파티션 안에 우리 시스템 전체가 들어 있고, USB는 /media/...에서 보이는 거죠. (요즘 우분투는 NVMe SSD면 nvme0n1·nvme0n1p2 식 이름이 나오기도 — 원리는 같음.) findmnt를 치면 마운트 관계만 트리로 깔끔하게 보입니다.

공간이 얼마나 — df와 du

"용량이 부족하다"는 이 두 명령으로 추적합니다. 둘의 차이가 중요해요.

$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 255G 198G 44G 82% / ← 루트(/)가 82% 찼다. 여유 44G /dev/sda1 512M 30M 482M 6% /boot/efi ← df = '파일시스템별' 사용 현황. -h = 사람 읽기 좋게(G/M). "어느 디스크가 찼나" $ du -sh ~/ 42G /home/jspark ← du -sh = 그 '폴더 전체'가 차지하는 용량. -s 합계만, -h 보기 좋게 $ du -sh ~/* 2>/dev/null | sort -h 1.2G /home/jspark/Documents 8.5G /home/jspark/Downloads 28G /home/jspark/.cache ← 범인! 캐시가 28G. 폴더별로 줄세워 보면 어디가 큰지 보임 ← du = '디렉토리별' 사용량. 7편의 sort -h 파이프와 조합 — 12편에서 본 그 패턴
차이 한 줄: df = "디스크(파티션) 단위로 얼마나 찼나" — 큰 그림. du = "이 폴더가 얼마나 먹나" — 범인 추적. 순서: 먼저 df -h로 어느 파일시스템이 꽉 찼는지 보고 → 그 안에서 du -sh 경로/* | sort -h로 점점 좁혀 들어가 범인 폴더를 찾는다. sudo apt install ncduncdu /를 쓰면 — 화살표로 폴더를 파고들며 시각적으로 볼 수 있어 훨씬 편합니다(나가기 q).

"용량 부족" 잡기 — 흔한 범인과 청소

du로 범인을 찾았으면 비웁니다. 입문자에게 흔한 범인 셋 + 안전한 청소법:

  • apt 캐시 (/var/cache/apt): 설치한 패키지 파일이 쌓임. sudo apt clean(전부 비움) 또는 sudo apt autoremove --purge(11편 — 안 쓰는 패키지+의존성 제거). 안전.
  • 저널 로그 (/var/log/journal): systemd 로그가 쌓임. sudo journalctl --vacuum-time=7d(7일치만 남김) 또는 --vacuum-size=200M. 안전 (오래된 로그만 지움).
  • 내 캐시/휴지통 (~/.cache, ~/.local/share/Trash): 브라우저·앱 캐시, 휴지통. 휴지통 비우기는 파일 매니저에서, 캐시는 앱 닫고 ~/.cache 안의 큰 폴더를 골라 삭제(앱이 다시 만듦 — 보통 안전하지만 앱별로 다름).
  • 스냅 옛 버전: sudo snap set system refresh.retain=2sudo snap list --alldisabled 표시된 옛 리비전을 sudo snap remove 이름 --revision=N으로. 스냅 앱을 많이 깔았다면 의외로 큼.
⚠️ "비우기"는 신중히: du로 큰 폴더를 찾았다고 무작정 rm -rf 하지 마세요(6편의 그 경고). /var·/usr·/boot 같은 시스템 폴더의 내용은 함부로 지우면 시스템이 망가집니다. "지워도 되는 것"은 캐시·로그·휴지통·다운로드 폴더의 안 쓰는 파일 정도로 한정하고, 시스템 영역은 위에 적은 전용 명령(apt clean·journalctl --vacuum-*)으로만 정리하세요. 의심스러우면 그 경로를 검색하고 — "이거 지워도 되나요"는 누군가 이미 물어봤습니다.

USB·외장하드 다루기 — 마운트와 안전하게 빼기

요즘 우분투는 USB를 꽂으면 데스크탑에 알아서 자동 마운트됩니다(/media/사용자/...). 명령어로 확인·관리하려면:

$ lsblk ← USB가 sdb1 같은 이름으로, /media/jspark/... 에 마운트됐는지 확인 $ df -h /media/jspark/USB이름 ← 그 USB의 용량/여유 확인 $ sudo umount /media/jspark/USB이름 ← '안전하게 빼기'의 명령어 버전 = 언마운트. 이걸 해야 쓰던 데이터가 다 기록됨. (또는 파일매니저의 ⏏ 버튼) $ sudo mount /dev/sdb1 /mnt ← 자동 마운트가 안 됐을 때 수동으로: sdb1 파티션을 /mnt 폴더에서 보이게. 끝나면 sudo umount /mnt
⚠️ 빼기 전 꼭 umount(또는 파일매니저 ⏏): 그냥 USB를 뽑으면 미처 다 기록 안 된 데이터가 날아갈 수 있습니다(윈도우의 "USB 안전하게 제거"와 같은 이유). 그리고 파티션 만들기·포맷(fdisk·mkfs·디스크 앱의 "포맷")은 대상을 잘못 고르면 그 디스크 내용이 통째로 사라집니다 — 입문 단계에선 손대지 마세요. /etc/fstab(부팅 시 자동 마운트 설정 파일)도 잘못 고치면 부팅이 안 될 수 있으니, 건드릴 땐 8편처럼 백업 먼저(sudo cp /etc/fstab /etc/fstab.bak).
오늘의 정리: lsblk(디스크·파티션·마운트 트리)·findmnt(마운트만). df -h(파일시스템별 사용량 — 큰 그림). du -sh 경로·du -sh 경로/* | sort -h(폴더별 — 범인 추적). ncdu /(시각적 탐색). 청소: sudo apt clean·apt autoremove --purge·journalctl --vacuum-time=7d·~/.cache 정리. USB: lsblk로 확인 → 빼기 전 sudo umount. 포맷·fdisk·/etc/fstab은 신중히(백업 먼저).

시리즈 흐름

  1. 1~13편 입문·기초·vim ✔   14편 프로세스 관리 ✔
  2. 15편 — 디스크 관리 (이 글) ✔
  3. 16편 — 네트워크 명령어 (ip·ping·curl·ss — "인터넷 안 돼요" 진단)
  4. 17편~ — ufw 방화벽 / SSH 키 / systemd 서비스 / cron / 셸 스크립트 …

오늘 할 일: lsblk·df -h를 한 번씩 쳐서 내 디스크가 어떻게 생겼고 얼마나 찼는지 보고, du -sh ~/* 2>/dev/null | sort -h로 홈에서 뭐가 제일 큰지 확인해보세요. (놀랄걸요 — 대개 .cacheDownloads입니다.) 그리고 sudo apt clean 한 번 — 안전한 청소입니다. 16편에서 만나요. (디스크 명령 전체는 man df·man du·man lsblk, 또는 우분투 서버 문서.)

우분투·리눅스 입문 시리즈

이제 "용량 부족"의 범인을 찾습니다. 16편 "리눅스 네트워크 명령어"로 이어집니다.

다음 편은 JUNAI 블로그에서 이어 보세요.

© 2026 JUNAI · 우분투·리눅스 입문 시리즈 15편 · 본 글은 2026년 5월 13일 기준으로 작성되었습니다.

© 2026 주나이테크(주) @JUNAITECH