운영중이던 프로젝트를 개발하던 도중에 인스턴스를 재시작하려고 하자, ~/log/~~ : 장치에 남은 공간이 없음 이라는 문구와 함께 실행되지 못 하였다.
(회사 프로젝트다 보니 캡처는 하지 못하였다... 간단하게 수기로 작성한 부분 양해부탁드립니다..)
1. 서버 용량 확인
- 기본적으로 서버의 용량이 꽉차있을 경우에, 이런 메시지가 발생된다.
- df -h 명령어를 통해, 용량을 확인해본다.
- 만약, 용량이 부족하지 않다면 2번을 진행한다.
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/abc 9.8G 1.9G 7.4G 21% /
tmp 3.9G 0 3.9G 0% /dev/shm
/log/ 2.0G 1.0G 1.0G 50% /log
2. inode 용량 확인
- df -i 명령어를 통해, inode 용량을 확인한다.(df -ih : 용량을 더욱 보기 쉽게 표시)
- 확인해보면, 어느 한 곳의 파티션에 용량이 100% 사용중일 것이다.
- 즉, 더이상 inode를 쓰지 못해, 장치에 남은 공간이 없음 이라는 메시지가 발생한 것이다.
- 대부분 log 관련된 부분에서 발생할 것 같지만, 이외에 경우에는 어느 부분에서 용량을 차지하는지 확인하여 처리한다.
inode 란?
리눅스 시스템에서, 파일 시스템 관련하여 처리할 때, 리눅스 전용의 특수한 index를 사용한다.
이 index를 i-node(index-node)라 부른다.
즉, 아이노드란 파일에 대한 정보(메타데이터)를 가진, 일종의 데이터 이다.
[root@localhost ~]# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/abc 9.8G 1.9G 7.4G 21% /
tmp 3.9G 0 3.9G 0% /dev/shm
/log/ 2.0G 2.0G 0.0 100% /log
2-1. inode 확인 및 처리
- 간략하게 아래 명령어를 통해서 어느 부분에서 용량을 차지하고 있는지 조회한다.
- for i in [경로]; do echo $i; find $i | wc -l; done
for i in [경로]; do echo $i; find $i | wc -l; done
- ex) for i in /log/app/2022/*; do echo $i; find $i | wc -l; done
[root@localhost] for i in /log/app/2022/*; do echo $i; find $i | wc -l; done
/log/app/2022/01
123
/log/app/2022/02
456
/log/app/2022/03
123456
- /log/app/2022/03 에서 많이 차지하고 있는 것을 확인 할 수 있다.
- 해당 영역에서 용량을 자세히 확인해본다.
- du -sh * 명령어 사용.
[root@localhost] du -sh *
10.0k 01
11.0k 02
10.0k 03
2.0G 04
10.0k 05
- 04 폴더에서 용량을 많이 사용하는 것을 확인 할 수 있다.
- 해당 폴더에서 불필요하다면, 삭제를 진행한다.
- rm *.log (글쓴이는 확장자가 log인 파일을 지운것 입니다. 확보하고자하는 영역의 파일을 지워주시면 됩니다.)
- 이후 다시 inode를 확인하여 용량을 체크한다.(df -i)
- 용량이 확보가 되었다면, 정상적으로 파일 작성이 된다.
참고
'Infra > Linux' 카테고리의 다른 글
[Linux] 파일 압축하기(tar, bzip2) (0) | 2021.06.05 |
---|---|
[Linux] 파일 라인 수 세기 (0) | 2021.06.05 |
[Linux] curl 명령어 시 [globbing] bad range 해결 (0) | 2021.05.16 |