부족한 디스크 공간을 자동으로 처리하는 방법은 무엇입니까?

부족한 디스크 공간을 자동으로 처리하는 방법은 무엇입니까?

우리 프로토타입 중 하나는 현재 매우 나쁜 캐싱 시스템을 가지고 있습니다. 몇 분 안에 하드 드라이브가 가득 차서 시스템을 사용할 수 없게 될 수 있습니다. 그런 다음 해야 할 일은 mysql 서비스를 다시 시작하여 공간을 확보하는 것입니다.

내 질문: 디스크 사용량이 95%를 초과하면 mysql 서비스를 다시 시작할 수 있는 방법이 있습니까?

나는 이것이 정통적이지 않다는 것을 안다. 예, 이것이 실제로 해결책이 아니라는 것은 압니다. 하지만 우리는 안정적이고 올바른 프로토타입이 아니라 데모 및 기타 테스트 목적으로 실행해야 하는 프로토타입에 대해 이야기하고 있습니다.

답변1

systemd시작을 사용하는 경우 유닛 파일에 mysql추가할 수 있습니다 .LimitFSIZE

그것 없이는 다음을 systemd사용할 수 있습니다 ulimit.

bash -c 'ulimit -f 100; dd if=/dev/zero of=bigfile bs=10M count=1; echo foo'

그러나 두 방법 모두 여유 공간을 포함하지 않습니다. 그들이 소비할 가능성이 얼마나 되는지 미리 계산해야 합니다.

어쩌면 파일 시스템 할당량이 더 유연할 수도 있습니다(저는 그것에 익숙하지 않습니다). 방금 실행 중인 사용자 계정이 있는 경우 mysql(아마도 그럴 수 있음) 이것이 옵션이 될 수 있습니다.

답변2

말씀하신대로 비정통적인 해결방법을 요구하고 계시는데 그걸 인정하시니 여유공간을 확인하시면 됩니다df

df /partition/you/need/to/monitor

출력을 구문 분석하고 찾은 내용에 따라 mysql 서비스를 다시 시작합니다. 이를 위해서는 루트 액세스가 필요할 수 있으므로 서비스를 다시 시작할 수 있는 권한을 스스로 부여해야 할 수도 있습니다.비밀번호 없는 sudo환경.

cron을 사용하여 이러한 모든 작업을 자동화할 수 있습니다.

답변3

monit을 사용하는 경우 파일 시스템을 모니터링하고 디스크 공간이 너무 부족해지면 mysql 서비스를 다시 시작하기 위해 이 작업을 수행할 수 있습니다.

확인하다https://mmonit.com/monit/documentation/monit.html#filesystem_flags_testing

관련 정보