티스토리 뷰

반응형

docker 를 통해 실행하려고 하는데, "no space left on device" 라는 오류가 발생했다.

말 그대로 용량이 부족하다는 말이다. 이를 해결하기위해서는 용량이 얼마나 남았는지 확인하고 불필요한 파일을 제거해야한다.

$ docker run --entrypoint /keytab/c3s_init.sh --rm\
>  -v /local/keytab:/keytab\
>  -e HADOOP_USER_NAME=admin\
>  xxx.yyy.zzz/myImage:latest\
>  hadoop fs -ls hdfs://myhost/data/tmp/2022-01-01
Unable to find image 'xxx.yyy.zzz/myImage:latest' locally
latest: Pulling from c3/c3s-env
f34b00c7da20: Pull complete 
3ad0f864cde6: Pull complete 
b5ed754d4c09: Pull complete 
acc862ec4341: Pull complete 
cbe38bbfeca5: Pull complete 
d8d3897af613: Pull complete 
bfe8d58434f5: Pull complete 
1b5c87105f9a: Pull complete 
4991d9d0db03: Extracting [==================================================>]  2.949GB/2.949GB
16b940526b99: Download complete 
1f141b4e9b55: Download complete 
df3130e7d29b: Download complete 
707670620a07: Download complete 
58024db9dc5a: Download complete 
a25d7112d90c: Download complete 
8fee9e65cc66: Download complete 
f571cf5334c4: Download complete 
docker: failed to register layer: Error processing tar file(exit status 1): write /usr/hdp/3.1.0.0-78/hadoop-yarn/lib/service-dep.tar.gz: no space left on device.
See 'docker run --help'.

 

원인확인

원인은 위에 디스크 용량이 부족하기 때문이다. 리눅스에서 디스트 용량을 확인해 보려면 df 명령을 통해서 확인이 가능한데, 여유공간이 4.3G 밖에 없고 이를 확보해야한다. 클라우드 서버를 사용한다면 디스크 용량 확보를 요청하면 쉽게 증설이 되겠지만 그게 아니라면 불필요한 파일을 지워야 한다.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.9G     0  3.9G   0% /dev
/dev/vda2        50G   46G  4.3G  92% /           <--- 여유공간 4.3G

 

빠른 해결은 용량확보

클라우드 서버 사용자라면 현질을 해서 디스크를 더 확보하는 방법을 찾도록 하자. (물론 물리서버 사용자도 디스크 확보 되면 좋다)

하지만, 모든건 돈이고 바로 해결하려면 결국은 안쓰는 파일을 찾아서 삭제하는게 현실적이다.

1. 안쓰는 도커이미지 삭제하기

파일삭제할게 docker 를 쓰면 로컬에 이미지가 보관되는데, 오래 운영하다보면 안쓰는 이미지들도 생길텐데 이걸 삭제해보자.

(어짜피 다시 이미지는 받으면 되니 일단 돌리는게 급하면 모두 삭제해도 문제는 없다)

$ docker images
REPOSITORY                   TAG       IMAGE ID       CREATED       SIZE
xx.yy.zz/image1             latest    c90c253d0dff   11 days ago   4.25GB 
xx.yy.zz/image2             latest    a30b655d0dee   11 days ago   3.24GB 
xx.yy.zz/image3             latest    b90a123d0dcb   255 days ago   1.21GB

# image3 번을 최근 안쓴다면? 아래와 같이 삭제 가능하다.
$ docker rmi -f b90a123d0dcb

 

2. 용량높고 안쓰는 파일 찾기

보통은 logs 파일이나 dump 혹은 download 받고 안지운 tar.gz 파일이 삭제 대상이 된다.

du 명령으로 특정폴더의 용량을 조회할수 있는데  기준점을 정하고 찾도록 하자.

예를 들어  /home1 하위 경로를 확인해본다면 아래와 같은 결과를 확인할수 있다.

$ sudo du -sh /home1/* | sort -hr
10.4G    /home1/airflow
1.4G    /home1/admin
0.4G    /home1/guest
16K     /home1/www

여기서 용량이 큰 폴더를 찾으면 다시 또 검토 (=airflow 계정용량이 좀 크니 체크) 하는걸 반복하면 삭제할만한 파일을 찾을수 있다.

나같은 경우는 실제로 airflow 의 로그가 생각보다 많이 쌓인걸 찾아서 이걸 지웠다.

$ du -sh /home1/airflow/* | sort -hr
4.7G    /home1/airflow/logs
484M    /home1/airflow/py3
...

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함