안녕하세요. 비전 IDC 기술팀입니다.
CentOS 7에서 파일 생성, 패키지 설치, 로그 기록 또는 애플리케이션 실행 중 No space left on device 오류가 발생하면 단순히 디스크 용량만 부족하다고 판단해서는 안 됩니다. Linux의 ENOSPC 오류는 해당 파일시스템에서 새 데이터를 할당할 공간이 없을 때 발생하며, 실제 원인은 디스크 블록 소진, inode 소진, 삭제됐지만 프로세스가 계속 열고 있는 파일 등으로 나뉠 수 있습니다.
이번 문서에서는 df, du, find, lsof를 이용해 어느 파일시스템에서 문제가 발생했는지 확인하고 원인을 단계적으로 좁히는 방법을 설명합니다. 파일을 바로 삭제하기보다 먼저 공간을 점유하는 원인을 확인하는 것이 중요합니다.
적용 환경
| 운영체제 | CentOS Linux 7 |
|---|---|
| 주요 명령어 | df, du, find, lsof, dmesg |
| 필요 권한 | 전체 파일 및 프로세스를 확인하려면 root 또는 sudo 권한 필요 |
1. 가장 먼저 확인할 항목
오류가 발생한 경로가 어느 파일시스템에 속하는지 먼저 확인합니다. 예를 들어 /var 아래에서 파일 생성이 실패했다면 다음과 같이 확인합니다.
df -hT /var
df -i /var
df -hT에서는 Use%와 Avail을 확인하고, df -i에서는 IUse%와 IFree를 확인합니다. 오류가 다른 경로에서 발생했다면 /var 대신 해당 경로를 지정하십시오.
2. 디스크 블록 부족 확인
전체 파일시스템의 사용률을 확인합니다.
df -hT
Use%가 100%에 가깝고 Avail이 거의 없다면 실제 데이터 블록 부족이 우선 원인입니다. 문제가 발생한 마운트 지점을 확인한 뒤 그 파일시스템 안에서 용량을 많이 사용하는 디렉터리를 좁힙니다.
루트 파일시스템을 조사하는 예시는 다음과 같습니다. -x는 다른 파일시스템으로 넘어가지 않도록 제한합니다.
sudo du -x -h --max-depth=1 / 2>/dev/null | sort -hr
예를 들어 /var가 크다면 범위를 한 단계씩 좁힙니다.
sudo du -x -h --max-depth=1 /var 2>/dev/null | sort -hr
sudo du -x -h --max-depth=1 /var/log 2>/dev/null | sort -hr
특정 파일시스템에서 1GiB보다 큰 파일을 찾으려면 다음과 같이 시작 경로를 지정할 수 있습니다.
sudo find /var -xdev -type f -size +1G -exec du -h -- {} + 2>/dev/null | sort -hr | head -n 30
3. inode 부족 확인
디스크 용량이 남아 있는데도 새 파일이나 디렉터리를 만들 수 없다면 inode 사용률을 확인합니다.
df -i
IUse%가 100%에 가깝거나 IFree가 0에 가까우면 inode 부족이 원인일 수 있습니다. 이 경우 대용량 파일 하나보다 작은 파일이 매우 많이 누적된 경로를 찾아야 합니다.
예를 들어 /var에서 파일이 많이 생성되는 위치를 조사하려면 먼저 캐시, 세션, 메일 큐, 임시 파일, 애플리케이션 로그 디렉터리 등을 서비스별로 확인합니다. 전체 파일 개수 검색은 파일 수가 매우 많은 서버에서 I/O 부하를 발생시킬 수 있으므로 문제가 있는 마운트 지점과 하위 경로를 먼저 좁히는 것이 좋습니다.
4. 삭제됐지만 프로세스가 계속 열고 있는 파일 확인
df에서는 사용량이 매우 높은데 du로는 그만큼 큰 파일을 찾을 수 없다면, 실행 중인 프로세스가 삭제된 파일을 계속 열고 있을 가능성을 확인합니다.
먼저 lsof 설치 여부를 확인합니다.
command -v lsof
lsof가 설치되어 있다면 링크 수가 0인 열린 파일을 확인합니다.
sudo lsof +L1
출력에서 COMMAND, PID, SIZE/OFF, NAME을 확인합니다. 삭제된 파일이라도 프로세스가 파일 설명자를 닫지 않았다면 해당 공간은 즉시 반환되지 않습니다.
lsof가 설치되어 있지 않고 yum 저장소 오류로 설치할 수 없다면 아래 비전 IDC의 CentOS 7 Vault 저장소 문서를 먼저 참고할 수 있습니다.
5. 용량과 inode가 남아 있는데도 오류가 발생하는 경우
df -h와 df -i 모두 충분한 여유를 표시한다면 오류가 발생한 경로가 실제로 어느 파일시스템에 있는지 다시 확인하고 커널 로그를 점검합니다.
df -hT /var
df -i /var
mount | grep ' /var '
sudo dmesg | egrep -i 'xfs|ext4|enospc|no space|I/O error' | tail -n 50
별도 마운트가 없는 경우 mount | grep ' /var ' 결과가 비어 있을 수 있습니다. 커널 로그에서 XFS 또는 ext4 관련 오류가 반복된다면 단순 파일 삭제보다 파일시스템 상태와 스토리지 장치를 먼저 점검해야 합니다.
6. 원인별 판단 방법
| 확인 결과 | 가능한 원인 | 다음 점검 |
|---|---|---|
df -h에서 Use%가 100%에 가까움 |
데이터 블록 부족 | du와 find로 큰 디렉터리·파일 확인 |
df -i에서 IUse%가 100%에 가까움 |
inode 소진 | 작은 파일이 대량 생성된 캐시·세션·큐·로그 경로 확인 |
df 사용량이 높은데 du 합계가 크게 작음 |
삭제된 열린 파일 또는 마운트 구조 차이 | lsof +L1과 마운트 상태 확인 |
| 블록과 inode 모두 여유가 있음 | 다른 파일시스템을 확인했거나 파일시스템·스토리지 계층 문제 가능성 | 오류 경로 기준 df 재확인 및 dmesg 점검 |
7. 조치 후 확인
원인을 확인해 안전한 방법으로 공간을 확보하거나 해당 서비스를 정상적으로 재시작한 뒤 파일시스템 상태를 다시 확인합니다.
df -hT
df -i
sudo lsof +L1
df의 여유 공간 또는 inode가 회복되었는지 확인하고, 삭제된 열린 파일을 처리했다면 lsof +L1에서 해당 항목이 사라졌는지 확인합니다. 이후 오류가 발생했던 애플리케이션이나 작업을 다시 실행해 정상적으로 파일을 생성하거나 기록할 수 있는지 검증합니다.
자주 묻는 질문
디스크가 남아 있는데도 No space left on device가 나올 수 있나요?
가능합니다. inode가 소진되었거나, 오류가 발생한 경로가 별도 파일시스템에 있거나, 파일시스템 자체의 할당 문제가 있는 경우가 있습니다. 따라서 df -h와 df -i를 함께 확인해야 합니다.
파일을 삭제했는데 왜 df 사용량이 바로 줄지 않나요?
실행 중인 프로세스가 삭제된 파일을 계속 열고 있으면 파일 이름은 사라져도 디스크 블록은 반환되지 않습니다. sudo lsof +L1으로 확인하고 해당 서비스의 정상적인 로그 재열기나 재시작 절차를 사용해야 합니다.
/var가 가득 찼다면 가장 먼저 무엇을 확인해야 하나요?
df -hT /var와 df -i /var로 블록과 inode를 먼저 확인한 다음, du -x --max-depth=1 /var로 로그, 캐시, 데이터 디렉터리 중 어느 경로가 증가했는지 좁혀가는 것이 좋습니다.
공식 참고자료
- CentOS Project — CentOS Linux: CentOS Linux 7 지원 종료일이 2024년 6월 30일임을 확인했습니다. 조회일: 2026-09-04.
- Red Hat — Red Hat Enterprise Linux 7 Storage Administration Guide: File System Structure and Maintenance:
df와du를 이용한 파일시스템 공간 확인 방법을 확인했습니다. 조회일: 2026-09-04. - GNU Project — GNU Coreutils Manual: df 및 GNU Coreutils Manual: du: 블록·inode 사용량과 디렉터리별 디스크 사용량 관련 옵션을 확인했습니다. 조회일: 2026-09-04.
- lsof Project — lsof Manual:
+L1이 링크가 해제되었지만 여전히 열려 있는 파일을 선택하는 옵션임을 확인했습니다. 조회일: 2026-09-04. - Linux man-pages Project — errno(3):
ENOSPC의 오류 문자열이No space left on device임을 확인했습니다. 조회일: 2026-09-04.
마무리
CentOS 7에서 No space left on device 오류가 발생하면 먼저 오류 경로가 속한 파일시스템의 블록 사용률과 inode 사용률을 확인해야 합니다. 공간이 부족하면 du와 find로 원인을 좁히고, df와 du 결과가 크게 다르면 삭제된 열린 파일을 확인하는 순서가 효과적입니다.
중요한 운영 데이터를 즉시 삭제하기보다 어떤 서비스가 공간을 사용하고 있는지 먼저 확인한 뒤 해당 서비스의 정상적인 정리 절차를 적용하시기 바랍니다. 오늘 준비한 내용은 여기까지입니다.
