리눅스 시스템을 운영하다 보면 디스크 공간 관리는 필수적인 작업입니다. 디스크 용량이 부족해지면 시스템이 느려지거나 최악의 경우 작동을 멈출 수도 있죠. 이러한 문제를 예방하고 효율적으로 디스크를 관리하기 위해 리눅스는 다양한 명령어를 제공합니다. 이 글에서는 디스크 공간 관리에 필요한 핵심 명령어들인 df, du, fdisk, lsblk와 함께 유용한 추가 명령어들도 알아보겠습니다.

 

1. df (Disk Free) 명령어

df 명령어는 파일 시스템의 디스크 공간 사용량을 확인하는 명령어입니다. 마운트된 모든 파일 시스템의 사용 가능한 공간과 사용된 공간을 보여줍니다.

기본 사용법

가장 기본적인 형태로 df를 실행하면 시스템에 마운트된 모든 파일 시스템의 정보를 보여줍니다.

df

주요 옵션

  • -h : 사람이 읽기 쉬운 형태(human-readable)로 출력 (KB, MB, GB 단위로 표시)
  • -T : 파일 시스템 유형도 함께 표시
  • -i : 아이노드(inode) 사용량 정보 표시
  • -a : 모든 파일 시스템 표시 (0 크기 파일 시스템 포함)
  • -t TYPE : 특정 유형의 파일 시스템만 표시
  • -x TYPE : 특정 유형의 파일 시스템 제외

사용 예시

용량을 사람이 읽기 쉬운 형태로 확인하는 예시:

df -h

파일 시스템 타입과 함께 용량을 확인하려면:

df -hT

특정 디렉토리의 디스크 사용량만 확인하려면:

df -h /home

ext4 파일 시스템만 보려면:

df -ht ext4

아이노드 사용량을 확인하려면 (파일 개수가 많을 때 유용):

df -i

주의사항

df 명령어는 파일 시스템 단위로 정보를 제공하므로, 특정 디렉토리나 파일의 상세한 사용량을 알고 싶다면 du 명령어를 사용해야 합니다.

 

2. du (Disk Usage) 명령어

du 명령어는 특정 파일이나 디렉토리의 디스크 사용량을 확인하는 명령어입니다. 폴더별 용량을 파악하거나 용량을 많이 차지하는 곳을 찾을 때 유용합니다.

기본 사용법

현재 디렉토리의 디스크 사용량을 표시합니다.

du

주요 옵션

  • -h : 사람이 읽기 쉬운 형태(human-readable)로 출력
  • -s : 요약(summary) 정보만 표시
  • -a : 모든 파일의 사용량도 표시 (기본은 디렉토리만)
  • -c : 총합(total)을 마지막에 표시
  • --max-depth=N : 지정된 깊이까지만 디렉토리 표시
  • -k, -m, -g : 각각 KB, MB, GB 단위로 표시

사용 예시

현재 디렉토리의 사용량을 읽기 쉬운 형태로 보려면:

du -h

특정 디렉토리의 총 사용량만 요약해서 보려면:

du -sh /var/log

여러 디렉토리의 용량을 한번에 확인하려면:

du -sh /home /var /opt

현재 디렉토리에서 가장 큰 10개 하위 디렉토리를 찾으려면 (sort 명령어와 함께 사용):

du -h | sort -hr | head -n 10

디렉토리 깊이를 1단계로 제한해서 보려면:

du -h --max-depth=1 /home

주의사항

대용량 디렉토리에서 du 명령어를 실행하면 시간이 오래 걸릴 수 있습니다. 먼저 상위 디렉토리 용량을 확인한 후 문제가 있는 디렉토리를 점차 좁혀가는 것이 효율적입니다.

 

3. fdisk (Fixed Disk) 명령어

fdisk는 디스크 파티션 테이블을 관리하는 강력한 도구입니다. 파티션 생성, 삭제, 변경 등의 작업에 사용됩니다.

기본 사용법

fdisk는 대화형 인터페이스를 제공하며, 디스크 장치를 지정해서 실행합니다.

sudo fdisk /dev/sda

주요 옵션

  • -l : 파티션 테이블 목록 표시 (읽기 전용)
  • -u : 섹터 단위 크기 표시
  • -b SIZE : 섹터 크기 지정
  • -s PARTITION : 특정 파티션의 크기 표시

대화형 명령어

fdisk 내에서 사용할 수 있는 주요 명령어:

  • m : 도움말 표시
  • p : 파티션 테이블 출력
  • n : 새 파티션 생성
  • d : 파티션 삭제
  • t : 파티션 유형 변경
  • w : 변경사항 저장 및 종료
  • q : 변경사항 저장하지 않고 종료

사용 예시

시스템의 모든 디스크와 파티션 정보를 확인하려면:

sudo fdisk -l

특정 디스크의 파티션 정보만 확인하려면:

sudo fdisk -l /dev/sda

새 파티션을 생성하는 과정 예시 (대화형 인터페이스 사용):

sudo fdisk /dev/sdb

그 후 대화형 인터페이스에서:

  • n을 눌러 새 파티션 생성
  • p를 눌러 주(primary) 파티션 선택
  • 파티션 번호, 시작 섹터, 끝 섹터 입력
  • w를 눌러 저장 및 종료

주의사항

fdisk는 디스크 파티션 구조를 직접 변경하는 명령어이므로, 데이터 손실 위험이 있습니다. 사용 전에 반드시 중요 데이터를 백업하고, 작업 내용을 정확히 이해한 후 실행해야 합니다. 또한 현재 마운트된 파티션에서는 변경 작업이 제한될 수 있습니다.

 

4. lsblk (List Block Devices) 명령어

lsblk는 시스템에 연결된 모든 블록 장치(하드 디스크, SSD, USB 드라이브 등)의 정보를 트리 구조로 보여주는 명령어입니다.

기본 사용법

기본 형태로 실행하면 모든 블록 장치를 트리 형태로 표시합니다.

lsblk

주요 옵션

  • -a : 모든 장치 표시 (비어있는 장치 포함)
  • -f : 파일 시스템 정보 포함
  • -m : 권한 정보 포함
  • -o NAME,SIZE,... : 출력할 열 지정
  • -p : 전체 경로 표시
  • -S : SCSI 장치만 표시
  • -d : 디스크만 표시 (파티션 제외)

사용 예시

파일 시스템 정보를 포함해 블록 장치 확인:

lsblk -f

원하는 정보만 선택해서 보려면:

lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

전체 경로를 포함해서 보려면:

lsblk -p

디스크만 표시하고 파티션은 제외하려면:

lsblk -d

JSON 형식으로 출력하려면:

lsblk -J

주의사항

lsblk는 읽기 전용 명령어로, 디스크 구조를 변경하지 않기 때문에 안전하게 사용할 수 있습니다. 하지만 권한이 제한된 시스템에서는 일부 정보가 표시되지 않을 수 있습니다.

 

5. 추가 디스크 관리 명령어

5.1 mount/umount – 파일 시스템 마운트/언마운트

파일 시스템을 특정 디렉토리에 마운트하거나 언마운트합니다.

# 마운트 예시
sudo mount /dev/sdb1 /mnt/usb

# 언마운트 예시
sudo umount /mnt/usb

5.2 parted – 고급 파티션 관리 도구

fdisk보다 더 많은 기능을 제공하는 파티션 관리 도구입니다. 특히 2TB 이상의 대용량 디스크 파티셔닝에 유용합니다.

# 디스크 정보 확인
sudo parted -l

# 대화형 모드로 시작
sudo parted /dev/sdc

5.3 blkid – 블록 장치 식별자 확인

디스크 파티션의 UUID와 파일 시스템 유형 등을 확인합니다.

sudo blkid

5.4 fstab 관리

/etc/fstab 파일을 편집하여 시스템 부팅 시 자동으로 마운트될 파일 시스템을 설정합니다.

sudo nano /etc/fstab

5.5 mkfs – 파일 시스템 생성

새 파티션에 파일 시스템을 생성합니다.

# ext4 파일 시스템 생성
sudo mkfs.ext4 /dev/sdb1

# xfs 파일 시스템 생성
sudo mkfs.xfs /dev/sdb2

5.6 fsck – 파일 시스템 검사 및 복구

파일 시스템 무결성을 검사하고 필요시 복구합니다.

sudo fsck /dev/sdb1

 

6. 명령어 조합 활용 예시

6.1 용량이 부족한 파티션 찾기

df -h | grep -v tmpfs | sort -k 5 -r | head

이 명령어는 tmpfs를 제외한 파티션 중 사용률이 높은 순서대로 상위 몇 개를 표시합니다.

6.2 대용량 파일 찾기

find /home -type f -size +100M -exec ls -lh {} \; | sort -k 5 -r

이 명령어는 /home 디렉토리에서 100MB 이상인 파일을 크기 순으로 정렬하여 표시합니다.

6.3 특정 사용자의 디스크 사용량 확인

du -sh /home/* | sort -hr

모든 사용자의 홈 디렉토리 사용량을 확인할 수 있습니다.

6.4 파일 시스템 사용량 모니터링

watch -n 5 "df -h"

5초마다 df -h 명령어 결과를 업데이트하여 실시간으로 디스크 사용량을 모니터링합니다.

6.5 빠르게 디스크 I/O 성능 테스트하기

sudo dd if=/dev/zero of=/tmp/test bs=1G count=1 oflag=direct

1GB 파일을 직접 I/O로 쓰면서 디스크 쓰기 성능을 테스트합니다.

6.6 파티션 생성부터 마운트까지 전체 과정

새 디스크를 추가하고 파티션을 생성한 후 마운트하는 전체 과정:

  1. 디스크 확인:
lsblk
  1. 파티션 테이블 생성:
sudo fdisk /dev/sdb
  1. 파일 시스템 생성:
sudo mkfs.ext4 /dev/sdb1
  1. 마운트 포인트 생성:
sudo mkdir /mnt/newdisk
  1. 마운트:
sudo mount /dev/sdb1 /mnt/newdisk
  1. 영구 마운트 설정 (/etc/fstab에 추가):
echo "UUID=$(sudo blkid -s UUID -o value /dev/sdb1) /mnt/newdisk ext4 defaults 0 2" | sudo tee -a /etc/fstab

 

7. 디스크 관리 팁을 드리자면…

  1. 주기적인 모니터링: df와 du를 활용하여 정기적으로 디스크 사용량을 확인하세요.
  2. 로그 파일 관리: 시스템 로그가 과도하게 쌓이면 디스크 공간이 부족해질 수 있습니다. logrotate를 적절히 설정하세요.
  3. 백업 전 확인: 중요 작업 전에는 항상 df로 충분한 공간이 있는지 확인하세요.
  4. inode 모니터링: df -i를 통해 inode 사용량도 정기적으로 확인하세요. 작은 파일이 많으면 inode가 먼저 소진될 수 있습니다.
  5. 불필요한 파일 정리: /tmp, /var/log, /var/cache 등의 디렉토리는 정기적으로 정리하세요.
  6. LVM 활용: 논리 볼륨 관리(LVM)를 활용하면 유연하게 디스크 공간을 관리할 수 있습니다.

 

디스크 공간 관리는 리눅스 시스템 관리의 기본 중 하나입니다. 이 글에서 소개한 명령어들을 적절히 활용하면 디스크 공간 부족으로 인한 문제를 예방하고 효율적인 시스템 운영이 가능합니다. 특히 서버 환경에서는 이러한 명령어들을 활용한 모니터링 스크립트를 작성하여 정기적으로 실행하는 것도 좋은 방법입니다. 🙂

 

댓글 남기기