ghost 로그인 시 SQLITE_FULL 에러

최근 블로그에 글을 안 쓴지 오래되었다. 마지막 글이 4달 전에 작성된 걸 보면, 그동안 내가 얼마나 글쓰는 것을 미루었는가를 다시금 반성하게 된다. 그래서 큰 맘먹고 오랜만에 글을 쓰기 위해 로그인하였지만, 아래와 같이 예상치 못한 에러가 나타나며 로그인을 할 수 없었다. (만약 이 문제를 해결못했다면, 슬프게도 이 글조차 쓰지 못했을 것이다.)

여태껏 로그인하며 한번도 본 적이 없었던 에러였기 때문에, 처음에는 믿지 못하고(?) 몇 번을 재시도했지만 결과는 마찬가지였다.
이 에러 로그를 보고 처음 알았지만, ghost에서는 내부적으로 유저가 로그인할때마다 유저의 accessToken을 데이터베이스에 저장하고 있었고, 별도로 설정하지 않았다면 기본적으로 DBMS는 SQLite를 사용하고 있었다. 하지만 에러 로그에서 알 수 있듯이, 저장을 하려고 할 때 데이터베이스 또는 디스크의 용량이 부족하여 실패하였다.

이때까지만 해도, 에이 설마 디스크가 꽉 찼겠어?라고 생각했지만, 서버에 직접 접속해서 확인해보니

$ df -h

정말 디스크를 100% 모두 사용하고 있었다.
그렇다면 어떤 디렉토리들이 용량을 많이 차지하고 있는지를 알고 싶어, 아래의 명령어로 용량이 가장 큰 20개의 디렉토리를 뽑아보았다.

$ cd  /
$ sudo du -ckx | sort -n | tail -n 20

눈에 띄는 점은, logs 디렉토리와 tmp 디렉토리가 대부분의 용량을 차지하고 있었다는 점이었다. 사실 블로그를 운영하며 여태껏 단 한번도 log 파일을 지운적도 없었고, tmp 디렉토리의 임시 파일들을 지운 적도 없었기 때문에 어찌 보면 당연한 결과이기도 했다. 결국 올게 오고야 말았구나하는 생각이 들었다.
블로그를 운영하며 현재 log를 따로 보고 있지 않고, 또 임시 파일 역시 삭제해도 서비스에 영향없으므로 모두 삭제하기로 하였다.

해당 위치에 있는 많은 log 파일들과 임시 파일들을 모두 정리한 후, 다시 디스크 용량을 확인해보았다.

디스크 전체의 절반정도의 여유공간이 생겨났음을 확인할 수 있다.

참고