대부분의 경우 리눅스는 오류 메시지가 꽤 구체적인 편입니다. "작동하지 않았습니다 – 이 패키지를 설치해 보세요"처럼 말이죠. 하지만 그중 하나는 별로 도움이 되지 않는데, 바로 "장치에 남은 공간이 없습니다(No space left on device)"라는 오류입니다. 무엇이 원인일까요? 2TB 저장 공간이 있었는데 어떻게 가득 찰 수 있을까요? 어디서부터 확인해야 할까요? 이번 가이드에서는 리눅스에서 이 오류를 해결하는 모든 과정을 단계별로 안내합니다.
디스크 여유 공간 확인하기
본격적으로 시작하기 전에 디스크에 실제로 여유 공간이 있는지 먼저 확인하는 것이 좋습니다. 데스크톱 환경에서 제공하는 도구들도 유용하지만, 명령줄 도구를 직접 사용하는 편이 더 빠를 때가 많습니다.
데스크톱 환경의 도구를 선호한다면, 아래 명령어로 얻을 수 있는 정보를 시각적으로 보기 쉽게 보여줍니다. 필자는 GNOME이 설치된 Fedora를 사용 중이며, GNOME 디스크 사용량 분석기(GNOME Disk Usage Analyzer) 도구는 다음과 같은 화면을 제공합니다.
먼저 du 명령어부터 시작해 보겠습니다. 문제가 발생한 드라이브의 최상위 디렉터리를 지정하세요. 여기서는 / 파티션이라고 가정하겠습니다.
sudo du -sh /
전체 파일을 검사하는 데 다소 시간이 걸립니다. 이번에는 df로 확인해 보겠습니다.
sudo df -h
/ 값에 그 아래 마운트된 파일시스템들의 용량을 더하세요. 예를 들어 /home이 별도 드라이브에 있다면, 해당 수치도 / 값에 포함해야 합니다. 합산 결과가 앞서 du로 확인한 값과 비슷하게 나와야 정상입니다. 만약 차이가 크다면, 어떤 프로세스가 삭제된 파일을 계속 붙잡고 있을 가능성이 있습니다.
핵심은 이 명령들의 합산 결과가 드라이브 전체 용량보다 작은지 여부입니다. 만약 용량을 초과한다면 분명히 뭔가 문제가 있는 것이므로, 아래의 원인들을 하나씩 점검해 보세요.
장치 공간 부족의 주요 원인과 해결 방법
주요 원인은 크게 세 가지입니다. du와 df 결과 사이에 차이가 있었다면 첫 번째 해결책으로 바로 넘어가고, 그렇지 않다면 두 번째 항목부터 확인하면 됩니다.
1. 프로세스가 점유 중인 삭제된 파일
파일이 삭제되었지만 특정 프로세스가 여전히 그 파일을 사용 중인 경우가 있습니다. 리눅스는 프로세스가 실행되는 동안에는 해당 파일이 차지하던 저장 공간을 해제하지 않습니다. 이럴 때는 프로세스를 찾아 재시작하면 공간이 반환됩니다.
다음 명령으로 문제의 프로세스를 찾아보세요.
sudo lsof / | grep deleted
문제가 되는 프로세스가 목록에 표시됩니다. 해당 서비스를 재시작하기만 하면 됩니다.
sudo systemctl restart service_name
원인이 바로 눈에 띄지 않는다면, 전체 데몬을 리로드해 보세요.
sudo systemctl daemon-reload
2. 아이노드(Inode) 부족
파일시스템에는 아이노드(inode)라고 하는 메타데이터 집합이 존재합니다. 아이노드는 파일에 관한 정보를 추적하는 역할을 합니다. 대부분의 파일시스템은 아이노드 수가 고정되어 있기 때문에, 디스크 용량이 남아 있어도 아이노드 할당량을 먼저 소진할 수 있습니다. 다음 명령으로 확인할 수 있습니다.
sudo df -i /
사용된 아이노드(IUsed)와 전체 아이노드(IFree) 수를 비교해 보세요. 사용 가능한 아이노드가 더 이상 없다면, 안타깝게도 추가로 생성할 수 없습니다. 불필요하거나 오래된 파일, 특히 수많은 작은 파일들을 삭제하여 아이노드를 확보해야 합니다.
3. 배드 블록(Bad Blocks)
마지막으로 흔한 원인은 파일시스템의 배드 블록입니다. 파일시스템은 시간이 지나면서 손상될 수 있고, 하드 드라이브 자체도 수명이 다하면 고장 납니다. 운영체제는 해당 블록이 별도로 결함 표시되지 않는 한 사용 가능한 블록으로 인식할 가능성이 높습니다. 이런 블록을 찾아내고 표시하는 가장 좋은 방법은 -cc 플래그와 함께 fsck를 실행하는 것입니다. 단, 검사 중인 파일시스템 자체에서는 fsck를 실행할 수 없으므로, 라이브 CD나 USB 부팅 환경이 필요할 수 있습니다.
sudo fsck -vcck /dev/sda2
물론 드라이브 경로는 실제 검사하려는 드라이브로 바꿔 입력하세요. 앞서 살펴본 df 명령으로 해당 경로를 확인할 수 있습니다. 배드 블록 검사는 상당한 시간이 걸릴 수 있으니, 커피 한 잔을 준비하고 기다리는 것도 좋습니다.
마무리
이 가이드의 해결 방법 중 하나가 문제 해결에 도움이 되었기를 바랍니다. "장치에 남은 공간이 없습니다" 오류는 모든 상황에서 원인을 쉽게 찾기 어렵지만, 위 단계를 차근차근 따라 하면 대부분 해결하고 시스템을 정상 상태로 되돌릴 수 있습니다.
추가로 리눅스 팁이 필요하다면, 리눅스에서 블루투스를 설정하는 방법 가이드를 확인해 보세요. 색다른 내용을 원한다면 리눅스에 맥의 Safari 브라우저를 설치하는 방법도 살펴볼 만합니다.