반응형
증상
- df로 찍은 Used 사이즈와 du로 찍은 사용량이 큰 차이를 보이면 다르게 나타남.
## df로 사용중인 675G 확인
[root@locahost]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 817G 675G 101G 88% /
tmpfs 32G 0 32G 0% /dev/shm
- 실제 du 로 찍어 본 / 파티션 사용량은 67G 였음.
원인
- 이경우 구동 중인 프로세스 File Descriptor 가 파일을 잡고 쓰기작업을 계속 하고 해제를 하지 않는 경우 로 추측 할 수 있음.
원인 확인
- 모든 프로세스들의 SIZE/OFF 합산 하면 아래의 결과로 df 용량과 거의 일치함.
[root@localhost]# lsof -n | awk '{sum += $7} END {printf sum}'
670734589439
- 이번 건의 경우는 구동중인 java가 이미 지워진 파일을 계속 잡고 해제 되지 않아 발생함
[root@localhost]# lsof -p 134413 | more
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
...
java 134413 ******** 53r REG 8,1 63460705059 34606084 /usr/local/apache-tomcat-7.0.62/ep/*******.txt.src (deleted)
java 134413 ******** 54w REG 8,1 66035429376 34606083 /usr/local/apache-tomcat-7.0.62/ep//*******..txt (deleted)
java 134413 ******** 55r REG 8,1 64009335362 34605995 /usr/local/apache-tomcat-7.0.62/ep//*******..txt.src (deleted)
java 134413 ******** 56w REG 8,1 59081510912 34606099 /usr/local/apache-tomcat-7.0.62/ep//*******..txt (deleted)
...
java 134413 ******** 58r REG 8,1 63678651796 34605945 /usr/local/apache-tomcat-7.0.62/ep//*******..txt.src (deleted)
java 134413 ******** 59w REG 8,1 62700376064 34607955 /usr/local/apache-tomcat-7.0.62/ep//*******..txt (deleted)
...
java 134413 ******** 61w REG 8,1 67399172096 34606020 /usr/local/apache-tomcat-7.0.62//*******..txt (deleted)
...
java 134413 ******** 63w REG 8,1 1614 34604922 /usr/local/apache-tomcat-7.0.62/logs//*******..txt
...
java 134413 ******** 68r REG 8,1 64303008102 34605044 /usr/local/apache-tomcat-7.0.62//*******.txt.src (deleted)
java 134413 ******** 69w REG 8,1 67448954880 34605279 /usr/local/apache-tomcat-7.0.62//*******..txt (deleted)
## 해당 프로세스의 합산 SIZE/OFF 확인
[root@localhost]# lsof -p 134413 | awk '{sum += $7} END {printf sum}'
652800497685
조치
조치1. 재기동
- 해당 프로세스를 재기동하여 리소스를 해소 할 수 있음.
## 이경우 java(tomcat) 재기동.
## 줄어든 용량 확인
[root@localhost]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 817G 76G 699G 10% /
tmpfs 32G 0 32G 0% /dev/shm
조치2. FD 해제
- "deleted" 된 fd(file descriptor)을 강제 해제하여 리소스를 해소 할 수 있음.
# (deleted) 로 표출되는 프로세스의 PID로 fd 확인
[root@localhost fd]# pwd
/proc/134413/fd
[root@localhost fd]# ls -al
...
lr-x------ 1 ******** ***** 64 2020-11-12 09:29 56 -> /usr/local/apache-tomcat-7.0.62/********************.txt.src (deleted)
...
l-wx------ 1 ******** ***** 64 2020-11-12 09:29 59 -> /usr/local/apache-tomcat-7.0.62//********************..txt (deleted)
...
## echo로 강제 해제
[root@localhost fd]# echo > /proc/134413/fd/56
[root@localhost fd]# echo > /proc/134413/fd/59
## 해제 확인
## SIZE.OFF 1로 변경됨
[root@localhost fd]# lsof -p 134413
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
...
java 134413 ******** 56r REG 8,1 1 34605406 /usr/local/apache-tomcat-7.0.62/********************.txt.src (deleted)
...
java 134413 ******** 59w REG 8,1 1 34605417 /usr/local/apache-tomcat-7.0.62/********************.txt (deleted)
...
반응형
'OS > Linux' 카테고리의 다른 글
Ubuntu 12.04 Repository 변경 (0) | 2022.04.26 |
---|---|
Linux child process 중 cpu가 높은 pid 확인 방법 (0) | 2021.03.23 |
Linux wondershaper을 이용한 QOS 적용 (0) | 2021.03.18 |
tmux-xpanes (0) | 2021.03.17 |
[Linux] screen (0) | 2021.03.17 |