du komutunun çalışması çok uzun sürüyor


9

du -shDisk domuzlarını bulmak için çeşitli dizinlerde çalışıyorum . Her ikisi de RHEL5 ile iki özdeş sunucum (Dell PE2850s) aldım ve dubir sunucuda diğeri üzerinde çalışmak çok daha uzun sürecek .

Örneğin, du -sh /opt/foobarsunucu A'da (içinde yaklaşık 25 GB olan) ve sunucu B'de 5 dakika sürecektir, aynı miktarda veriye sahip aynı komut bana neredeyse anında rapor verecektir. Üstte koşarken göze çarpan belirgin bir şey görmüyorum, vb.

Herhangi bir tavsiye büyük beğeni topluyor.


3
Hızı du -s, verilerin boyutuna değil, dosya sayısına bağlıdır. Her iki dizin ağacında da benzer sayıda dosya var mı?
Ladadadada

2
Ayrıca, dutüm dizin meta verileri (dosya boyutları gibi) şu anda önbelleğe alınmışsa çok daha hızlı çalışır. Bir sunucuda diğerinde değil, herhangi bir nedenden dolayı durum buysa, büyük farklılıklara neden olacaktır.
Sven

@Ladadada Evet aynı miktarda dosya var diyebilirim. Yıldız işareti eklerken bile dosya boyutlarının listesini tek tek almak uzun zaman alır. Ancak meta verilerin önbelleğe alınmış olup olmadığını nasıl doğrulayacağımı tam olarak bilmiyorum.
Jon Weinraub

Yanıtlar:


6

Bu dizinde çok sayıda dosyanız varsa ve dizinin içeriği sürekli değişiyorsa, dizin girdisinin kendisi zamanla parçalanır. Sonra işletim sistemi dizin içeriğini okurken, çok ve gereksiz disk aramaları olacaktır. Bu özellikle ext * dosya sistemlerinde (ext4 daha iyi olabilir) ve eski ReiserFS v3.x dosya sistemlerinde (% 85 dolmuşsa) gerçekleşir.

Çözüm oldukça kolaydır:

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

Tabii ki her şey RAM'de önbelleğe alınırsa, bu o kadar önemli değil; Linux genellikle erişilen dosyaları ve dizinleri oldukça agresif bir şekilde önbelleğe alır. Bu dizinlerin içeriğini gerçekten RAM'de tutmak istiyorsanız ls -lah /your/dir 2>&1 >/dev/null, cronunuza benzer bir şey koyabilirsiniz .

EDIT: Ah, aklıma bir şey geldi. Sunucunuzda bir miktar önbellek bulunan pil destekli bir RAID denetleyicisi varsa, lütfen pilin iyi durumda olup olmadığını kontrol edin. Pilin bittiği ve denetleyicinin önbelleği tamamen devre dışı bıraktığı, performansı çok kötü bozduğu durumlar gördüm. Örneğin, HP sunucuları iLO günlüklerinde denetleyici pili hakkında bir şeyler söyleyebilir; gerçek sunucu sağlığı panosunda her şey iyi ve yeşil gibi görünür, ancak yalnızca günlük girişi size bunu anlatacaktır.


1
Bu muhtemelen bana biraz zaman alacaktır, bu bir üretim sunucusunda olduğunu, bu yüzden bir gecede yapmam gerekecek ve tüm dizin birkaç yüz gigabayt veri içeriyor, bu yüzden onu boglamak istemiyorum ... rapor edeceğim yarın sabah ilk iş. Fikir için teşekkürler.
Jon Weinraub

Hala bu komutu çalıştırıyorum ve ne kadar süreceğini söylemiyorum. Hatta bunu fark ettim ve cp hala çalışıyor, başladıktan sonra yaklaşık 1 saat 15 dakika oldu. Başka bir kabukta bu klasörde bir du çalıştırmak bile uzun sürdü, ama sadece umountsürücüyü ve fsckonu mı yapmam gerektiğini düşünüyorsun ?
Jon Weinraub

Bir şekilde üretiminizi bozmadığı sürece çalışmasına izin verin. RHEL5 ve varsayılan CFQ I / O zamanlayıcısı ile cp komutunu boştaki sınıfa koyabilirsiniz, böylece diğer işlemleri zorbalık etmez: ionice -c3 -p $(pidof cp)ya da öylesine.
Janne Pikkarainen

Lütfen son düzenlememi de okuyun.
Janne Pikkarainen

1
Bir süre geçtiğini biliyorum ama sonunda bahsettiğiniz cp komutunu yerine getirdim. 25 GB kopyalamak iki iki saat sürüyor. Hte hamlesini yaptıktan sonra başka bir du -sh çalıştırmak da o kadar yavaştı. Aslında yedek dizini silmek bile yavaş!
Jon Weinraub

0

Herhangi bir anahtar olmadan basit du komutunu denemenizi öneririm. Sonunda hangi dizinin süreci yavaşlattığını göreceksiniz. Hatalı bir disk veya başka bir neden olabilir ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.