디스크 공간 문제 진단하기

LinuxBeginner
지금 연습하기

소개

디스크 공간 부족은 시스템 관리자와 개발자에게 흔히 발생하는 문제입니다. 디스크가 가득 차면 애플리케이션이 실패할 수 있으며 시스템이 불안정해질 수 있습니다. 이러한 문제를 신속하게 진단하고 해결하는 방법을 아는 것은 매우 중요한 기술입니다.

본 랩에서는 디스크 공간 부족에 대한 경고를 받은 시스템 관리자의 역할을 맡게 됩니다. 공간을 차지하는 것이 무엇인지 식별하고 안전하게 공간을 확보하는 체계적인 접근 방식을 배울 것입니다. df, du, find, truncate와 같은 표준 Linux 명령줄 도구 세트를 사용할 것입니다. 이 랩이 끝날 때쯤이면 기본적인 디스크 공간 비상 상황을 처리하는 능력에 자신감을 갖게 될 것입니다.

디스크 사용량 확인

이 단계에서는 마운트된 모든 파일 시스템에 걸친 디스크 공간 사용량에 대한 개요를 파악하여 조사를 시작합니다. 이 작업을 위한 가장 좋은 도구는 df (disk free) 명령어입니다.

df 명령어는 파일 시스템에서 사용 및 사용 가능한 디스크 공간을 보고합니다. -h (human-readable, 사람이 읽기 쉬운) 플래그와 함께 사용하면 크기를 1024 의 거듭제곱 (예: 킬로바이트, 메가바이트, 기가바이트) 으로 표시하여 출력을 훨씬 더 쉽게 읽을 수 있습니다.

현재 디스크 사용량을 확인하려면 터미널에서 다음 명령을 실행하십시오.

df -h

다음과 유사한 출력을 보게 될 것입니다. 특히 루트 파일 시스템 (/에 마운트됨) 에 대한 Use% 열에 주의하십시오. 이 수치가 높으면 잠재적인 문제가 있음을 나타냅니다.

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3        40G   38.5G  1.5G  96% /
tmpfs           1.8G     0  1.8G   0% /dev/shm
tmpfs          1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/vdb1        20G  1.2G   19G   6% /home/labex/project
...

예시 출력에서 루트 파일 시스템 (/dev/vda3, /에 마운트됨) 이 96% 용량임을 확인할 수 있습니다. 이는 해결해야 할 디스크 공간 문제가 있음을 확인시켜 줍니다.

대용량 파일 찾기

이 단계에서는 디스크가 가득 차고 있음을 확인한 후, 다음 작업은 어떤 디렉토리가 공간을 가장 많이 차지하고 있는지 알아내는 것입니다. du (disk usage, 디스크 사용량) 명령어가 이 작업에 완벽합니다. 이 명령어는 파일 공간 사용량을 추정합니다.

다음 옵션들과 함께 du를 사용할 것입니다:

  • -s: (summarize, 요약) 각 인수에 대한 총합만 표시합니다.
  • -h: (human-readable, 사람이 읽기 쉬운) 크기를 더 읽기 쉬운 형식 (예: 1K, 234M, 2G) 으로 출력합니다.

project 디렉토리 내 콘텐츠의 크기를 확인해 보겠습니다. 현재 작업 디렉토리가 ~/project이므로 상대 경로를 사용할 수 있습니다.

~/project 디렉토리 내의 각 파일 및 하위 디렉토리의 크기를 보려면 다음 명령을 실행하십시오.

du -sh ~/project/*

이 명령은 각 항목의 크기를 보여주는 출력을 생성할 것입니다. 랩 설정 중에 생성된 대용량 파일을 보게 될 것입니다.

3.0G /home/labex/project/large_data_archive.dat

이 출력은 프로젝트 디렉토리 내의 large_data_archive.dat라는 파일이 3.0GB 의 공간을 차지하고 있음을 알려줍니다. 이것이 공간 소비의 한 가지 원인이지만, 이전 단계의 df 출력은 홈 디렉토리 외부에 있을 수 있는 더 큰 문제가 있음을 시사했습니다.

대용량 로그 파일 위치 파악

이 단계에서는 디스크 공간 문제의 또 다른 일반적인 원인인 대용량 로그 파일을 조사합니다. 시스템 및 애플리케이션 로그는 종종 /var/log 디렉토리에 저장됩니다. 적절하게 관리되지 않으면 이러한 파일은 무한정 커질 수 있습니다.

find 명령어는 파일과 디렉토리를 검색하는 강력한 유틸리티입니다. 이름, 유형, 크기 등 다양한 기준에 따라 파일을 찾는 데 사용할 수 있습니다.

/var/log 디렉토리에서 10 메가바이트 (-size +10M) 보다 큰 모든 파일 (-type f) 을 검색하기 위해 find를 사용할 것입니다. /var/log 디렉토리는 root 사용자가 소유하므로, 명령어가 모든 파일을 검사할 수 있도록 관리자 권한을 부여하기 위해 sudo를 사용해야 합니다.

터미널에서 다음 명령을 실행하십시오.

sudo find /var/log -type f -size +10M

이 명령어는 지정된 디렉토리를 스캔하고 기준과 일치하는 모든 파일의 경로를 출력합니다. 출력에는 하나 이상의 파일이 표시될 수 있습니다.

/var/log/syslog
/var/log/journal/deaaf690a67544aaaa83c02167a202c6/user-6000@0005fc8f16f7df1a-7ea5bde2c8c33f92.journal~

출력은 /var/log/syslog가 10MB 보다 크다는 것을 명확하게 보여줍니다. 저널 로그와 같은 다른 대용량 파일도 있을 수 있지만, 이 실습에서는 syslog에 초점을 맞출 것입니다. 이제 디스크 공간 문제에 기여하고 있는 특정 대용량 로그 파일을 식별했습니다.

로그 파일 정리

이 단계에서는 대용량 로그 파일을 식별했으므로, 해당 파일이 차지하고 있는 공간을 확보해야 합니다. rm으로 파일을 단순히 삭제하면 서비스가 해당 파일에 활발하게 쓰고 있는 경우 문제가 발생할 수 있습니다. 더 안전한 방법은 파일 자체를 삭제하지 않고 파일의 내용을 비우는 것입니다.

truncate 명령어는 이러한 목적으로 설계되었습니다. 파일 크기를 지정된 크기로 줄이거나 늘릴 수 있습니다. 크기를 0 으로 설정하면 파일을 효과적으로 비우게 됩니다.

파일 크기를 0 바이트로 설정하는 -s 0 옵션과 함께 truncate를 사용할 것입니다. 시스템 파일을 수정하는 것이므로 다시 sudo가 필요합니다.

syslog의 내용을 비우려면 아래 명령을 실행하십시오.

sudo truncate -s 0 /var/log/syslog

성공적인 truncate 명령어는 출력을 생성하지 않습니다. 작동 여부를 확인하려면 ls -lh 명령어를 사용하여 파일의 새 크기를 확인할 수 있습니다.

ls -lh /var/log/syslog

이제 출력에서 파일 크기가 0 으로 표시되어야 합니다.

-rw-r----- 1 syslog adm 0 Oct 22 15:31 /var/log/syslog

대용량 로그 파일을 성공적이고 안전하게 비워 디스크 공간을 확보했습니다.

수정 사항 확인

이 단계에서는 마지막이자 가장 중요한 조치, 즉 노력이 디스크 공간 문제를 해결했는지 확인하는 작업을 수행합니다. 첫 번째 단계에서 했던 것처럼 다시 df -h 명령어를 사용할 것입니다.

새로운 출력 결과를 첫 번째 단계의 결과와 비교하여 디스크 공간이 확보되었는지 확인할 수 있습니다.

다시 한번 df -h 명령어를 실행하십시오.

df -h

루트 파일 시스템 (/) 의 Use%가 1 단계에서보다 낮아진 출력을 보게 될 것입니다.

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3        40G   37G  3.0G  92% /
tmpfs           1.8G     0  1.8G   0% /dev/shm
tmpfs          1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/vdb1        20G  1.2G   19G   6% /home/labex/project
...

사용률이 96% 에서 92% 로 감소하여 로그 파일을 잘라낸 (truncate) 작업이 성공했음을 확인시켜 줍니다. 정리를 완료하기 위해 프로젝트 디렉토리에서 찾은 대용량 데이터 파일도 제거할 수 있습니다.

rm ~/project/large_data_archive.dat

이제 모든 정리 작업을 통해 얻은 최종 결과를 확인하기 위해 마지막으로 df -h를 실행하십시오. 사용 가능한 공간이 훨씬 더 늘어났을 것입니다. 이는 디스크 공간 문제를 성공적으로 진단하고 해결했음을 확인시켜 줍니다.

요약

실습을 완료하신 것을 축하드립니다! Linux 시스템에서 흔히 발생하는 디스크 공간 문제를 성공적으로 진단하고 해결했습니다.

본 실습에서 여러분은 다음과 같은 실용적인 단계별 워크플로우를 배웠습니다.

  1. df -h를 사용하여 디스크 사용량에 대한 전반적인 개요를 확인하고 문제를 확인했습니다.
  2. du -sh를 사용하여 특정 디렉토리의 크기를 검사하고 대용량 파일을 식별했습니다.
  3. find를 사용하여 크기와 같은 특정 기준에 따라 파일을 검색하여 대용량 로그 파일을 정확히 찾아냈습니다.
  4. 파일을 삭제하지 않고 안전하게 비우는 방법으로 truncate -s 0을 사용하는 방법을 배웠습니다.
  5. 마지막으로 df -h를 다시 실행하여 확보된 공간을 확인함으로써 수정 사항을 검증했습니다.

이 명령어들은 모든 Linux 사용자나 시스템 관리자에게 필수적인 도구입니다. 이 지식을 통해 시스템을 원활하게 유지 관리할 준비가 더욱 잘 갖춰졌습니다.