Linux에서 “장치에 남은 공간 없음” 오류를 효과적으로 해결하는 방법
“장치에 남은 공간 없음”이라는 메시지가 나타나면 정말 짜증 날 수 있습니다.특히 디스크가 아직 비어 있는 것처럼 보일 때는 더욱 그렇습니다. Linux는 이렇게 이상하게 작동할 수 있습니다.여유 공간이 충분한 것이 아니라, 내부적으로 뭔가 은밀하게 작동하는 경우가 있습니다.삭제된 파일을 계속 사용하는 프로세스, inode 고갈, 심지어 하드웨어 고장 등이 원인일 수 있습니다.어떤 문제가 있는지 파악하면 머리를 싸매는 수고를 덜 수 있습니다.화를 내지 않고 문제를 해결하고 해결하는 방법을 소개합니다.
Linux에서 “장치에 남은 공간 없음” 오류를 해결하는 방법
실제로 공간이 있는지 확인하세요.du와 df로 확인하세요.
이것이 첫 번째 단계입니다. Linux는 디스크가 실제로 가득 차지 않았는데도 공간이 없다고 표시하는 경우가 있기 때문입니다.터미널에서 다음 명령을 실행하세요.
sudo du -sh /
루트 디렉터리의 총 디스크 사용량을 간략하게 요약해 줍니다.출력이 길 수 있지만, 맨 위의 총 사용량에 집중하세요.그 후, 다음을 사용하여 마운트의 여유 공간을 확인하세요.
sudo df -h
이는 마운트된 파일 시스템에서 사용 가능한 공간을 보여줍니다.이러한 출력을 비교하면 실제로 공간이 부족한지, 아니면 다른 원인이 오류의 원인인지 확인하는 데 도움이 됩니다.때로는 프로세스가 큰 파일을 삭제했지만 다른 프로세스가 해당 파일을 여전히 열어두고 있기 때문에 공간을 해제하지 않은 경우가 있습니다.따라서 Linux는 공간이 있어도 전체 공간을 표시합니다.
수정 1: 삭제된 파일을 보관하는 프로세스 종료
흔한 문제입니다.어떤 프로세스가 삭제된 파일을 잠그고 있는데, Linux가 해당 파일이 기술적으로 아직 “사용 중”이기 때문에 해당 공간을 해제할 수 없는 경우가 있습니다.다음과 같이 하세요.
sudo lsof / | grep deleted
이 명령은 삭제된 파일 중 아직 열려 있는 프로세스 목록을 표시합니다.왜 작동하는지는 확실하지 않지만, 일부 컴퓨터에서는 이 명령이 잘못된 파일을 찾는 데 도움이 됩니다.해당 공간을 확보하려면 프로세스를 다시 시작하세요.
sudo systemctl restart your-service-name
정확한 서비스를 모르거나 서비스가 여러 개 있는 경우 다음을 사용하여 모든 시스템 종속성을 다시 로드할 수 있습니다.
sudo systemctl daemon-reload
참고: 재시작하거나 다시 로드하면 해당 프로세스가 차지했던 파일 공간이 비워집니다.일반적으로 이 방법으로 문제가 빠르게 해결됩니다.하지만 일부 설정에서는, 특히 여러 서비스가 연결되어 있는 경우, 전체 효과를 보려면 재부팅이 필요할 수 있습니다.
수정 2: inode가 부족했는지 확인하세요
이는 다소 덜 명확한 원인입니다.inode는 모든 파일을 담는 작은 메타데이터 컨테이너와 같습니다.작은 파일이 너무 많으면 디스크가 가득 차기 전에 inode 제한에 도달할 수 있습니다.확인하려면 다음을 실행하세요.
sudo df -i
이 명령은 총 inode 수, 사용 중인 inode 수, 사용 가능한 inode 수를 표시합니다.시스템에 사용 가능한 inode가 0개라면 문제가 있는 것입니다.불필요한 작은 파일을 삭제하거나 캐시를 비우면 inode를 확보하는 데 도움이 될 수 있습니다.디스크 공간과 달리 inode는 드라이브를 포맷할 때 설정되므로 더 이상 생성할 수 없습니다.
수정 3: 드라이브의 불량 섹터 표시
하드웨어 마모로 인해 디스크의 물리적으로 손상된 영역인 불량 섹터가 발생할 수 있습니다.이러한 영역은 여전히 사용 가능한 공간으로 표시될 수 있지만, 실제로 데이터를 쓰거나 읽을 수는 없습니다.이 문제를 해결하려면 라이브 환경에서 부팅하고 파일 시스템 검사를 실행해야 합니다.
sudo fsck -vcck /dev/sda
/dev/sda드라이브의 실제 장치 경로로 바꾸세요.이 명령은 불량 섹터를 검사하여 사용할 수 없는 것으로 표시하여 데이터 쓰기 오류를 방지합니다.이 명령이 마법처럼 공간을 확보해 주는 것은 아니며, 파일 시스템을 손상으로부터 안전하게 보호할 뿐입니다.불량 섹터가 계속 발생하면 정리 작업이나 하드웨어 교체가 필요할 수 있습니다.
시도해 볼 만한 다른 팁
- 크기가 커졌을 수 있는 로그나 캐시 폴더를 지우세요./var/log 나 /tmp 같은 폴더를 생각해 보세요.
- 디스크 정리 루틴을 다시 살펴보세요.오래된 커널이나 장치 스냅샷이 기가바이트를 차지하는 경우가 있습니다.
- 특정 볼륨을 사용 중이라면 할당량을 확인하세요.예상보다 한도가 낮게 설정되어 있을 수 있습니다.
“남은 공간 없음” 오류의 원인이 되는 버그를 파악하는 데는 약간의 시행착오가 필요할 수 있습니다.하지만 대부분의 경우, 삭제된 파일을 보관하는 프로세스나 inode 고갈이 원인으로 추정됩니다.하드웨어 문제는 완전히 다른 문제이며 하드웨어 진단이나 교체가 필요할 수 있다는 점을 명심하세요.
요약
- sudo du -sh / 와 sudo df -h 를 실행하여 공간 문제를 확인하세요.
- sudo lsof / | grep deleted를 사용하여 삭제된 파일을 잠그는 프로세스를 식별합니다.
- 문제가 있는 서비스나 프로세스를 다시 시작하여 공간을 확보합니다.
- sudo df -i 명령어로 inode 가용성을 확인하세요.필요한 경우 작은 파일을 삭제하세요.
- 불량 섹터가 의심되는 경우 sudo fsck -vcck /dev/sda 로 파일 시스템 검사를 실행하세요.
마무리
이 문제는 대부분 프로세스 지연이나 inode 제한으로 인해 발생합니다.이러한 문제가 해결되면 디스크 공간은 다시 정상적으로 작동할 것입니다.때로는 약간의 노력과 인내심이 필요하지만, 이 단계들을 통해 대부분의 문제를 해결할 수 있습니다.이 단계들이 누군가의 몇 시간 동안의 좌절을 덜어주기를 바랍니다.
이 글이 도움이 되었나요?