![오래된 파일을 삭제하면 속도가 느려지고 IO 성능이 "취소"됩니다.](https://linux55.com/image/99355/%EC%98%A4%EB%9E%98%EB%90%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%82%AD%EC%A0%9C%ED%95%98%EB%A9%B4%20%EC%86%8D%EB%8F%84%EA%B0%80%20%EB%8A%90%EB%A0%A4%EC%A7%80%EA%B3%A0%20IO%20%EC%84%B1%EB%8A%A5%EC%9D%B4%20%22%EC%B7%A8%EC%86%8C%22%EB%90%A9%EB%8B%88%EB%8B%A4..png)
오래된 파일을 정리하기 위해 find를 사용하고 있는데 파일이 너무 많습니다. 실행하는 데 몇 분/시간이 걸리고 다른 서버 프로세스에서는 IO 성능 문제가 발생합니다.
find -mtime +100 -delete -print
ionice를 사용해 보았으나 도움이 되지 않는 것 같습니다.
ionice -c 3
1. 조회 작업 속도를 높이고 2. 다른 프로세스에 영향을 주지 않으려면 무엇을 할 수 있습니까? FS는 ext4인데.. 이런 작업에는 ext4가 적합하지 않나요? 커널은 3.16이고 스토리지는 RAID 1의 2x 1TB 7200rpm HDD입니다. 이제 610228개의 파일에 93GB가 있으므로 평균 152KB/파일입니다.
어쩌면 하나의 디렉토리에 너무 많은 파일을 저장하면 안 될까요?
답변1
게시됨과 같은 명령을 실행하면 찾은 모든 파일에 대해 작업이 수행 find
됩니다 . rm
성능면에서 이는 좋은 접근 방식이 아닙니다.
이 작업을 개선하려면 -exec
find의 옵션을 사용하여 명령의 출력을 처리 할 수 있습니다 rm
.
find -mtime +100 -exec rm {} +
+
대체보다는 종료를 사용하는 것이 중요합니다 \;
. 를 사용하면 +
find는 rm
단순 실행 시 처리할 수 있는 최대 파일 수에 대해서만 명령을 실행합니다. 종료 후에는 각 파일에 대해 하나의 명령이 \;
실행되므로 동일한 문제가 발생합니다.find
rm
ionice
더 나은 성능을 위해 언급한 명령 에 이를 추가할 수 있습니다 . 시스템 성능이 향상되는 것을 느끼지 못한다면 CPU와 같은 I/O보다 다른 리소스를 더 많이 소비할 가능성이 높습니다. 이렇게 하려면 renice
명령을 사용하여 프로세스의 CPU 사용 우선순위를 낮출 수 있습니다.
나는 다음을 사용합니다 :
ionice -c 3 find -mtime +100 -exec rm {} +
이제 다른 셸에서 find 명령의 PID를 찾아야 합니다.ps -ef | grep find
마지막으로 renice 명령을 실행합니다.renice +19 -p <PID_find_command>