장면 설명
어느 날, 경찰은 프로 메테우스을받은 제조 공정 기계는 디스크 공간 부족 경보가, 서버가 원격 서비스로, 라이브러리에서 로그인 후 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