리눅스 삭제 파일 공간이 릴리스의 문제가 해결되지 않습니다

장면 설명

어느 날, 경찰은 프로 메테우스을받은 제조 공정 기계는 디스크 공간 부족 경보가, 서버가 원격 서비스로, 라이브러리에서 로그인 후 mysql을되는 이유는, 문제 해결 디스크 공간, 너무 많은 MySQL의 로그 파일을 찾을 수있다, 다음 로그 파일을 비우하지만 로그 청소, 디스크 공간 및 이후 릴리스, 다음과 같은 분석 과정과 이유를 찾을 수 없습니다

로그를 정리 한 후, 디스크 공간을 볼 수

[root@hhjy3-21 ~]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda3      xfs        98G  65G   33G   73% /
devtmpfs       devtmpfs  1.5G     0  1.5G   0% /dev
tmpfs          tmpfs     1.5G     0  1.5G   0% /dev/shm
tmpfs          tmpfs     1.5G  8.9M  1.5G   1% /run
tmpfs          tmpfs     1.5G     0  1.5G   0% /sys/fs/cgroup
/dev/sda1      xfs      1014M  120M  895M  12% /boot
tmpfs          tmpfs     293M     0  293M   0% /run/user/0

이유

리눅스 나 유닉스 시스템에서, 원칙을 사용하여 삭제 된 파일을 RM은,하지만, rm 명령은 파일 시스템, 파일을 열 경우 (프로세스가 파일 핸들을 사용하는) 것을 수단의 디렉토리 구조에서 (링크 해제) 연결을 해제 프로세스가 여전히 삭제 된 파일을 읽을 수 있지만 나는 그것이, 삭제 된 파일이 시간에 사용되는 작업에서 MySQL의 로그입니다 삭제 된 것으로,이 디스크 공간을 확보하지 않습니다.

솔루션

리눅스 사용 lsof | grep deleted명령은 삭제되었지만 여전히 응용 프로그램에 의해 점유되는 파일의 목록을 얻을 수 있습니다

[root@hskj3-21 ~]# lsof | grep -i delete
mysqld_sa  1311          root    2u      CHR              136,0       0t0          3 /dev/pts/0 (deleted)
mysqld     1607         mysql    1w      REG                8,3    312627    1700052 /mysql/3306/logs/mysql.log (deleted)
mysqld     1607         mysql    2w      REG                8,3    312627    1700052 /mysql/3306/logs/mysql.log (deleted)
mysqld     1607         mysql    5u      REG                8,3         0  134335687 /mysql/3306/tmp/ibz8LDOk (deleted)
mysqld     1607         mysql    6u      REG                8,3         0  134374089 /mysql/3306/tmp/ibprHY8C (deleted)
mysqld     1607         mysql    7u      REG                8,3         0  135173881 /mysql/3306/tmp/ibS7LjtV (deleted)
mysqld     1607         mysql    8u      REG                8,3         0  134429856 /mysql/3306/tmp/ibX2QZcx (deleted)
mysqld     1607         mysql   12u      REG                8,3         0  134429858 /mysql/3306/tmp/ibMxDsTQ (deleted)
mysqld     1607         mysql   21w      REG                8,3    153673    1700035 /mysql/3306/logs/slow.log (deleted)
mysqld     1607  1609   mysql    1w      REG                8,3    312627    1700052 /mysql/3306/logs/mysql.log (deleted)
......

이 명령을 사용한 후, 나는 파일의 목록은 우리가 필요로하는, 아주 많이 차지 발견 占用已删除文件的进程하나 하나를 죽일

[root@hskj3-21 ~]# kill -9 PID

온라인 빈 파일

사실, 바로 위에 그 rm삭제 된 파일 방법은 특히 MySQL은, MongoDB를가, 데이터 관련 서비스를 위해, 매우 위험 rm삭제 후, 공간을 확보 할 수 있습니다 手动重启또는 kill비즈니스에 영향을 미칠 것이다, 프로세스에 관련 데이터 서비스를 제공합니다.

다음과 같은 방법을 사용할 수 있습니다, 디스크 공간이 부족 즉시 해제 할 수 있습니다, 당신은 또한 프로세스가 로그 파일에 기록을 계속하도록 할 수 있습니다,이 방법은 온라인 청소에 적합합니다.

$ echo >xxx/log

추천

출처www.cnblogs.com/jasonminghao/p/12466698.html