du 명령이 실행하는 데 너무 오래 걸립니다


9

du -sh디스크 디렉토리를 찾기 위해 다양한 디렉토리에서 실행 중 입니다. RHEL5를 사용하는 두 개의 동일한 서버 (Dell PE2850)가 du있으며 한 서버에서 다른 서버 를 실행 하는 데 시간이 훨씬 오래 걸립니다 .

예를 들어, du -sh /opt/foobar서버 A (25GB 정도)에서 5 분이 걸리고 서버 B에서는 같은 양의 데이터가있는 동일한 명령이 거의 즉시보고됩니다. 탑 등을 실행할 때 눈에 띄는 것이 보이지 않습니다.

모든 조언을 부탁드립니다.


3
속도는 du -s데이터 크기가 아니라 파일 수에 따라 다릅니다. 두 디렉토리 트리 모두 비슷한 수의 파일을 가지고 있습니까?
Ladadadada

2
또한 du모든 디렉토리 메타 데이터 (예 : 파일 크기)가 현재 캐시되어 있으면 훨씬 빠르게 작동합니다. 한 서버에서 어떤 이유로 든 다른 서버가 아닌 경우 큰 차이가 발생합니다.
Sven

@Ladadada 나는 거의 같은 양의 파일이 있다고 말할 것입니다. 별표를 추가하여 파일 크기 목록을 개별적으로 가져 오더라도 스크롤하는 데 시간이 오래 걸립니다. 그러나 메타 데이터가 캐시되는지 여부를 확인하는 방법을 완전히 확신하지 못합니다.
Jon Weinraub

답변:


6

해당 디렉토리에 많은 수의 파일이 있고 디렉토리의 내용이 지속적으로 변경되면 디렉토리 항목 자체는 시간이 지남에 따라 조각화됩니다. 그런 다음 OS가 디렉토리 내용을 읽을 때 불필요한 디스크 탐색이 많이 발생합니다. 이것은 특히 ext * 파일 시스템 (ext4가 더 나을 수도 있음)과 이전 ReiserFS v3.x 파일 시스템 (85 % 이상 찼을 경우)에서 발생합니다.

해결책은 매우 쉽습니다.

cp -pr origdir newdir
mv origdir origdir.bak
mv newdir origdir

물론 모든 것이 RAM에 캐시되어 있다면 그다지 중요하지 않습니다. 일반적으로 Linux는 자주 액세스하는 파일을 캐시하고 상당히 공격적입니다. 이러한 디렉토리의 내용을 RAM에 그대로 유지하려면 ls -lah /your/dir 2>&1 >/dev/nullcron 과 같은 것을 넣을 수 있습니다 .

편집 : 오, 내 마음에 한 가지가 나타났습니다. 서버에 캐시 된 일부 배터리 백업 RAID 컨트롤러가있는 경우 배터리가 정상인지 확인하십시오. 배터리가 방전되고 컨트롤러가 캐시를 완전히 비활성화하여 성능이 크게 저하되는 상황을 보았습니다. 예를 들어, HP 서버는 iLO 로그에 컨트롤러 배터리에 대한 정보를 알려줄 수 있습니다. 실제 서버 상태 대시 보드에서는 모든 것이 양호하고 녹색 인 것처럼 보이지만 로그 항목 만이 이에 대해 알려줍니다.


1
이것은 아마 시간이 걸릴 것입니다. 프로덕션 서버에 있기 때문에 밤새해야하며 전체 디렉토리에는 수백 기가 바이트의 데이터가 포함되어 있기 때문에 늪지대를 원하지 않습니다 ...보고 할 것입니다. 내일 아침에 제일 먼저 아이디어 주셔서 감사합니다.
Jon Weinraub

나는 여전히이 명령을 실행 중이며 시간이 얼마나 걸리는지 말하지 않습니다. 나는 그것을 reniced하고 cp는 여전히 실행 중이며, 시작한 지 약 1 시간 15 분이 걸렸습니다. 다른 쉘의 해당 폴더에서 du를 실행하더라도 시간이 오래 걸리지 만 umount드라이브와 폴더 만 사용해야한다고 생각 fsck합니까?
Jon Weinraub

어떻게 든 생산을 방해하지 않는 한 실행하십시오. RHEL5와 기본 CFQ I / O 스케줄러를 사용하면 다른 프로세스를 괴롭히지 않도록 유휴 클래스에 cp 명령을 넣을 수 있습니다 ionice -c3 -p $(pidof cp).
Janne Pikkarainen

최신 편집 내용도 읽어보십시오.
Janne Pikkarainen

1
나는 그것이 오래되었다는 것을 알고 있지만 마침내 언급 한 cp 명령을 수행하게되었습니다. 25GB를 복사하는 데 2 ​​시간이 걸립니다. 빠른 이동을 한 후 다른 du-sh를 실행하는 것이 느려졌습니다. 실제로 백업 디렉토리를 지우는 것조차 느립니다!
Jon Weinraub

0

스위치없이 간단한 du 명령을 시도하는 것이 좋습니다. 결국 어떤 디렉토리가 프로세스 속도를 늦추는 지 알 수 있습니다. 디스크에 결함이 있거나 다른 이유가있을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.