본문 바로가기

컴퓨터 이야기/Raspbian

Transmission 에러 메시지 : Unable to save resume file: No space left

라즈베리 파이에 많이 사용하는 Transmission 에서 가끔 이런 에러가 날 때가 있다. 

분명 외장하드는 용량이 많은데?

확인해보면 /dev/root가 100%가 되어있는 경우가 많다. 

어 이건 SD카드인데 뭐지?

의아하긴하지만 어쨌든 이 문제로 해당 에러가 나는 것이 맞다. 

외장하드에서 관리 되던 파일이 ... 

 

이 문제로 해결책을 찾을 수가 없어서 해매었는데, 

보통은

df -h

fdisk -l 

명령어로 용량 분포를 확인한 뒤에

ncdu / (혹은 특정 디렉토리 /var) 

으로 커맨드 형식으로 화면에서 용량이 큰 곳을 찾은 뒤 D 키를 눌러 삭제하는 방식으로 용량을 정리를 한다. 

 

이걸로 해결이 되는 경우는 /var에 수 gb가 있다던가 하는 식의 이상한 상황이다. 

 

내 경우는 위의 명령어로 확인했을 때 특이점이 없었다. 

 

그래서 한참 뒤지다가 

apt-get clean으로 해결을 했다. 

일종의 라즈베리 파이 os (보통은 debian)에 설치되어있는 패키지를 정리하는 명령어로,

일단은 이렇게 해서 공간을 만들어 다운로드를 할 수는 있지만 이렇게 해서 생기는 용량이 수백 메가에 불과해서

금방 같은 에러가 뜨면서 모든 다운로드가 중지된다. 

 

그러다 찾은 해결책을 하나 공유해본다. 

이 역시 ncdu 명령어이긴한데 

다음과 같다. 

 

sudo mount --bind / /mnt

sudo ncdu -x /mnt

링크: https://www.raspberrypi.org/forums/viewtopic.php?t=71520

 

Rootfs and /dev/root full - Raspberry Pi Forums

Mon Mar 17, 2014 1:10 pm Hi, ich have the same problem. Until yesterday everthing worked fine. Then, i got this Filesystem 1K-blocks Used Available Use% Mounted on rootfs 2595624 2595056 0 100% / /dev/root 2595624 2595056 0 100% / devtmpfs 216108 0 216108

www.raspberrypi.org

이미 마운트 된 외장하드를 /로 /mnt의 내용을 마운트를 하는 명령어다. 

그러니까 특정 디렉토리에 디렉토리를 마운트 하는 것이다. 

예를 들어 마운트 된 하드디스크의 일부를 다른 곳에 또 마운트 할 때 사용한다고 한다. 

그리고 나서 ncdu로 하나의 폴더 처럼 외장하드인 /mnt를 스캐닝한다. 

여기서 -x 옵션은 다음과 같다. (man ncdu 명령어로 확인 가능)

   -x  Do not cross filesystem boundaries, i.e. only count files and
           directories on the same filesystem as the directory being scanned.

 

스캔된 디렉토리와 같은 파일 시스템에 있는 파일과 디렉토리만을 체크하는 옵션이다. 

 

내 생각으로는 결국 이 문제의 원인은 외장하드인데,

(SD카드가 트랜스미션의 목적지인 외장하드에 의해 어떤 이유로든 100%가 되었으니)

(어떤 파일인지 확인하기 위해)외장하드를 SD 카드의 디렉토리의 일부처럼 마운트 해서 비교,

그렇게 영향을 받은 파일들을 확인하는 과정인 것이다. 

 

결국 외장하드에 있던, SD카드를 100% 만든, 어떤 파일들이 /과 /mnt 비교한 상황에서의 ncdu에 의한 체크로 인해

드러난다. 

 

그렇게 나온 파일을 확인 한 뒤에 D키를 눌러 삭제 해줬더니

100%에서 13%의 사용율로 바뀌면서 공간이 생긴다.

 

그런데 트랜스미션을 다시 시작해봐도 다른 에러가 뜨기 시작한다. 

 

이유는 바인드 된 마운트를 해제하지 않아서다. 

df -h를 실행해보면 /mnt에 마운트 되어있던 놈이 보이지 않는다. 

 

https://askubuntu.com/questions/156667/how-to-unmount-after-using-mount-bind-option

 

How to unmount after using mount --bind option?

I have mounted a hard disk /dev/sda1 on /media/backup. Further, I have issued the following command: mkdir /home/users/Desktop/backup sudo mount --bind /media/backup /home/users/Desktop/backup This

askubuntu.com

이 때 

umount /mnt (외장하드 마운트된 주소)

를 실행 후 재시작하면 다운로드가 시작된다.