본문 바로가기

OS/Linux

[LINUX] 실제 디스크 용량과 df 용량의 차이가 있은 경우

반응형

증상


  • 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