우리는 du
다수의 하위 디렉토리를 요약하고, 최악의 범죄자를 찾아 내고, 잠재적 문제를 발견하기 위해 급격히 증가하고있는 것들이 있는지 알아 내기 위해 결과를 사용 하는 정규직을 가지고 있습니다. diff
스냅 샷과 비교하여 사용 합니다.
여러 개의 하위 디렉토리가있는 최상위 디렉토리가 있으며 각 디렉토리에는 각각 수만 개의 파일이있을 수 있습니다.
du -s
이러한 맥락에서 ” “는 IO를 매우 공격적으로 처리 할 수 있으므로 서버가 캐시를 중단시키고 그 다음에 부적당 한 IO 영향이 발생할 수 있습니다.
원치 않는 부작용없이 동일한 데이터를 얻는 데 어떤 전략을 사용할 수 있습니까?
답변
를보십시오 ionice
. 보낸 사람 man ionice
:
이 프로그램은 io 스케줄링 클래스와 프로그램의 우선 순위를 설정하거나 얻습니다. 인수가 없거나 -p 만 제공되면 ionice는 해당 프로세스의 현재 IO 스케줄링 클래스 및 우선 순위를 조회합니다.
du
사용 가능한 가장 낮은 우선 순위 인 “유휴”I / O 클래스로 실행하려면 다음 과 같이하십시오.
ionice -c 3 du -s
이것은 du
다른 프로세스의 I / O를 방해 하지 않아야합니다 . 다음과 같이 CPU 우선 순위를 낮추기 위해 프로그램을 재생하는 것을 고려할 수도 있습니다.
renice -n 19 "$duPid"
초기화시 두 가지를 모두 수행 할 수도 있습니다.
nice -n 19 ionice -c 3 du
답변
단일 디렉토리에 많은 파일이있는 경우 많은 파일 시스템이 단일 디렉토리에서 큰 파일 트리를 처리하지 않기 때문에 I / O 스파이크가 발생할 수 있습니다. 더 많은 하위 디렉토리로 나누면 도움이 될 수 있습니다. 하나의 디렉토리에 10k 개 이상의 파일이 있고 이것이 문제를 일으키는 경우, 아마도 분할해야합니다.
디스크 사용량 추적에 대해서는 먼저 df
사용량 값이 급상승하지 않으면 하위 디렉토리가 증가하지 않고를 건너 뛸 수 있습니다 du
.
다른 대안은 파일 시스템이 지원하는 경우 지속적인 사용 추적을 유지하는 디스크 할당량 시스템 일 수 있습니다.
답변
또한 ionice
디스크 액세스를보다 효율적으로 만들 수 있습니다. 이것은 실행하여 시도 할 수 있습니다
find /du/root -printf ""
find /du/root -perm 777 -printf ""
먼저 (아마도을 통해 ionice
). 파일이 너무 많으면 작동하지 않습니다. 사용 가능한 RAM의 양에 따라 너무 많은 수가 있습니다.