디스크가 가득 찼다는 경고가 보이면 무작정 파일을 삭제하기보다 파일시스템, 디렉터리, 대용량 파일, 삭제된 열린 파일 순서로 확인해야 합니다. 이 글의 명령 예시는 Linux 기준이며, BSD 계열이나 BusyBox 기반 NAS에서는 du -d와 find -printf 옵션이 다를 수 있습니다. Linux 서버나 NAS에서 셸 명령을 실행할 수 있고, 기본적인 터미널 사용이 가능하다고 가정합니다.
목차
파일시스템 사용량 확인

먼저 전체 디스크가 정말 부족한지 확인합니다. df는 파일시스템 단위의 사용량을 보여주므로, 특정 폴더만 살펴보기 전에 실행하는 것이 좋습니다.
df -hT
Use%가 높은 파일시스템의 마운트 경로를 확인하세요. 용량이 남아 있어도 inode(파일을 관리하는 메타데이터)가 부족하면 새 파일을 만들 수 없으므로 다음 명령도 함께 봅니다.
df -ih
디렉터리별 용량 분석
문제가 된 마운트 경로를 기준으로 어느 디렉터리가 큰지 확인합니다. / 전체를 검사하는 예시는 다음과 같습니다.
sudo du -xhd 1 / 2>/dev/null | sort -h
-x는 다른 파일시스템으로 넘어가지 않게 하는 옵션입니다. 이 옵션을 빼면 외부 디스크나 가상 파일시스템까지 합쳐져 실제 원인과 다른 결과가 보일 수 있습니다. 큰 경로를 찾았다면 같은 명령을 해당 경로에 다시 실행해 범위를 좁힙니다.
대용량 파일 검색
로그, 임시 파일, 백업 파일처럼 디렉터리 안에 숨어 있는 큰 파일은 find로 찾을 수 있습니다.
sudo find / -xdev -type f -size +1G -printf '%s %p\n' 2>/dev/null | sort -nr | head
출력된 파일을 바로 삭제하지 말고 소유 서비스와 마지막 수정 시각을 먼저 확인하세요. 운영 중인 로그를 임의로 지우면 서비스 오류나 추적 정보 손실이 생길 수 있으므로, 서비스의 로그 순환 설정이나 보관 정책을 확인한 뒤 정리하는 편이 안전합니다.
삭제된 열린 파일 확인
du에서 보이는 파일을 정리했는데도 df 사용량이 줄지 않는다면, 삭제됐지만 프로세스가 계속 열고 있는 파일일 수 있습니다. Linux에서는 파일 이름이 사라져도 프로세스가 파일을 닫기 전까지 공간이 반환되지 않습니다.
sudo lsof +L1
목록에서 큰 파일을 잡고 있는 프로세스와 PID를 확인한 뒤 해당 서비스의 정상 재시작 절차를 사용하세요. 이 경우 du에는 파일이 나타나지 않지만 df에는 사용량이 남는 현상이 보입니다. 프로세스를 강제 종료하기 전에는 서비스 영향과 재시작 가능 여부를 먼저 판단해야 합니다.
격리된 파일시스템에서 직접 확인한 예
2026년 10월 18일 Docker Engine 29.6.2의 네트워크 없는 임시 컨테이너에서 16 MiB tmpfs에 1,048,576바이트 파일을 만들고 df -k /work, du -k /work/sample.bin, wc -c /work/sample.bin을 실행했습니다. df는 전체 16,384 KiB 중 사용 1,024 KiB, 여유 15,360 KiB와 7%를 표시했고, du는 파일의 할당량 1,024 KiB, wc는 내용 길이 1,048,576바이트를 출력했습니다.
이 예에서 df는 파일시스템 전체, du는 해당 파일, wc는 실제 바이트 길이를 봅니다. 컨테이너의 임시 메모리 파일시스템에서 얻은 결과이며 NAS 실디스크의 여유 공간을 측정한 값은 아닙니다.
같은 날 별도의 네트워크 없는 16 MiB tmpfs에서 1 MiB 파일을 연 채 삭제하는 실험도 했습니다. 사용 가능 공간은 생성 전 16,777,216바이트, 쓰기 후 15,728,640바이트였고, 파일 경로를 삭제한 뒤에도 열린 동안에는 15,728,640바이트였습니다. 파일을 닫자 16,777,216바이트로 돌아왔습니다. 이 결과는 해당 임시 파일시스템에서 열린 파일이 공간을 유지하는 예이며 NAS의 실제 사용량이나 특정 서비스 상태를 뜻하지 않습니다.
또 다른 차이는 희소 파일에서 나타납니다. 임시 디렉터리에서 마지막 바이트에만 기록한 파일은 stat 기준 논리 크기 1,048,576바이트에 실제 할당 블록은 4,096바이트였습니다. 빈 영역을 물리적으로 모두 할당하지 않는 파일의 예이므로 이 결과를 NAS 실측값으로 해석하면 안 됩니다. 파일시스템과 할당 방식에 따라 수치는 달라지며, 파일의 논리 크기와 실제 할당량을 비교할 때 이 차이를 확인하세요.
하드링크와 삭제 공간 확인
네트워크 없는 임시 컨테이너의 16 MiB tmpfs에서 1 MiB 파일에 하드링크를 하나 만들었습니다. 두 이름은 같은 inode를 가리켰고 링크 수는 2였습니다. 첫 이름을 지운 뒤에도 1,048,576바이트가 할당된 채 링크 수가 1로 남았고, 마지막 이름까지 지우자 할당량이 0으로 돌아왔습니다. 이는 임시 파일시스템에서의 예시이며 NAS 디스크를 측정한 결과가 아닙니다.
파일 이름 하나를 지워도 같은 파일의 다른 하드링크가 남아 있으면 공간이 반환되지 않을 수 있습니다. GNU du 문서는 기본적으로 같은 하드링크의 사용량을 한 번만 계산한다고 설명합니다. 파일 목록과 링크 수를 확인하고 운영 서비스에 필요한 파일은 임의로 지우지 마세요.
정리 순서와 결론
df -hT로 가득 찬 파일시스템을 찾고, du로 큰 디렉터리를 좁힌 다음, find로 파일을 확인합니다. 그래도 차이가 남으면 lsof +L1로 삭제된 열린 파일을 점검하면 됩니다.
무작정 삭제하지 말고 원인과 소유 서비스를 확인하는 것이 핵심입니다. 파일을 지운 뒤에도 용량이 그대로라면 열린 파일부터 의심해 보세요.