- Konu sahibi
- #1
İşletim sistemiyle birlikte gelen
İlk olarak sunucuya SSH ile bağlanıp şu komutu çalıştırın:
Çıktıdaki
Önemli:
Dolan bölüm kök dizinse aşağıdaki komutu çalıştırın:
Buradaki
Örneğin
Bu örnek,
Klasör dağılımını gördükten sonra belirli bir bölümdeki büyük dosyaları bulmak için
Çıktının ilk sütunu dosya boyutunu bayt cinsinden, ikinci sütunu dosya yolunu gösterir. Büyük sayının yanında hangi dosyanın bulunduğunu kontrol etmeden dosyayı silmeyin. Özellikle veritabanı dosyaları, sanal makine diskleri, konteyner katmanları ve uygulama veri dosyaları el ile silinirse servis bozulabilir.
İnsanların daha kolay okuyabilmesi için boyutları dönüştürmek isterseniz dosya yollarını
Bu komut dosyaları ve klasörleri birlikte listeler. Aynı alanın hem dosyada hem de onu içeren klasörde görünmesi normaldir; toplamı hesaplarken bu satırları birbirine eklemeyin.
Arama sonucunda en büyük alanı hangi tür verinin kullandığı, uygulanacak işlemi değiştirir:
Çıktıda
Büyük dosyanın yolunu bulmanız, onun gereksiz olduğunu kanıtlamaz. Silme veya taşıma işleminden önce dosyanın sahibini, değişiklik tarihini, hangi servise ait olduğunu ve gerekiyorsa yedeğinin bulunup bulunmadığını kontrol edin:
Log dosyalarında doğrudan
Geçici olarak alan açmanız gerekiyorsa yalnızca kaynağı kesinleşmiş ve yeniden oluşturulabilir verileri temizleyin. İşlemden sonra sonucu şu komutlarla yeniden kontrol edin:
df ve du komutlarıyla disk alanını hangi dosya ve klasörlerin kullandığını bulabilirsiniz. Önce df -h ile hangi dosya sisteminin dolduğunu belirleyin, ardından ilgili bağlama noktasında du ile klasörleri büyükten küçüğe sıralayın. Böylece sorunun büyük bir log, yedek, veritabanı, önbellek veya silinmiş olmasına rağmen hâlâ açık bir işlem tarafından kullanılan dosyadan kaynaklanıp kaynaklanmadığını ayırabilirsiniz.Önce dolan disk bölümünü belirleyin
İlk olarak sunucuya SSH ile bağlanıp şu komutu çalıştırın:
Bash:
df -hT
Çıktıdaki
Use% sütunu kullanım yüzdesini, Mounted on sütunu ise dosya sisteminin hangi dizine bağlandığını gösterir. Örneğin / yüzde 95 doluysa aramayı kök dosya sistemi içinde yapmanız gerekir. /var, /home veya ayrı bir disk yüzde 100 doluysa yalnızca o bağlama noktasını inceleyin.Önemli:
df dosya sisteminin toplam kullanımını, du ise erişebildiği dosya ve klasörlerin kapladığı alanı gösterir. Bu nedenle iki komutun sonuçları her zaman birebir aynı olmayabilir.En fazla alan kullanan klasörleri bulun
Dolan bölüm kök dizinse aşağıdaki komutu çalıştırın:
Bash:
sudo du -xhd1 / 2>/dev/null | sort -h
Buradaki
-h değerleri okunabilir birimlerle gösterir, -d1 yalnızca birinci seviye alt klasörleri listeler, -x ise başka dosya sistemlerine geçilmesini önler. sort -h sonuçları küçükten büyüğe sıralar; listenin sonundaki klasörler en fazla alan kullananlardır.Örneğin
/var büyük görünüyorsa aramayı daraltın:
Bash:
sudo du -xhd1 /var 2>/dev/null | sort -h
/var/log öne çıkarsa log klasörünü, /var/lib öne çıkarsa veritabanı, konteyner, paket yöneticisi veya başka bir servis verisini ayrıca inceleyin. Bir klasörün içini daha ayrıntılı görmek için aynı komutta derinlik seviyesini artırabilirsiniz:
Bash:
sudo du -xhd2 /var 2>/dev/null | sort -h | tail -n 30
Bu örnek,
/var altında iki seviyeye kadar en büyük 30 sonucu gösterir. sudo kullanmanız, normal kullanıcı hesabının okuyamadığı servis dizinlerinin de hesaba katılmasını sağlar. Yetkiniz yoksa komut bazı dizinleri atlayabilir ve sonuç gerçekte olduğundan düşük görünebilir.Büyük dosyaları doğrudan listeleyin
Klasör dağılımını gördükten sonra belirli bir bölümdeki büyük dosyaları bulmak için
find kullanabilirsiniz. Aşağıdaki varsayımsal örnek, kök dosya sisteminde 1 GiB'tan büyük normal dosyaları listeler:
Bash:
sudo find / -xdev -type f -size +1G -printf '%s %p\n' 2>/dev/null | sort -n | tail -n 30
Çıktının ilk sütunu dosya boyutunu bayt cinsinden, ikinci sütunu dosya yolunu gösterir. Büyük sayının yanında hangi dosyanın bulunduğunu kontrol etmeden dosyayı silmeyin. Özellikle veritabanı dosyaları, sanal makine diskleri, konteyner katmanları ve uygulama veri dosyaları el ile silinirse servis bozulabilir.
İnsanların daha kolay okuyabilmesi için boyutları dönüştürmek isterseniz dosya yollarını
du ile de inceleyebilirsiniz:
Bash:
sudo du -ahx /var 2>/dev/null | sort -h | tail -n 30
Bu komut dosyaları ve klasörleri birlikte listeler. Aynı alanın hem dosyada hem de onu içeren klasörde görünmesi normaldir; toplamı hesaplarken bu satırları birbirine eklemeyin.
Komut sonuçlarını doğru yorumlayın
Arama sonucunda en büyük alanı hangi tür verinin kullandığı, uygulanacak işlemi değiştirir:
| Bulgu | Olası anlamı ve güvenli sonraki adım |
|---|---|
| /var/log altında büyük dosyalar | Uygulama veya sistem logları büyümüş olabilir. Dosyanın hangi servis tarafından yazıldığını belirleyin; silmeden önce log döndürme ve saklama politikasını kontrol edin. |
| /home veya web sitesi dizinleri | Yüklemeler, yedekler, önbellekler veya eski site dosyaları alan tüketiyor olabilir. Kullanılmayan veriyi doğruladıktan sonra arşivleyin ya da kaldırın. |
| /var/lib altında büyük servis verisi | Veritabanı, Docker, paket yöneticisi veya başka bir servisin kalıcı verisi olabilir. Servisin kendi temizleme veya taşıma yöntemini kullanın. |
| df büyük, du toplamı belirgin biçimde küçük | Silinmiş bir dosya hâlâ çalışan işlem tarafından açık tutuluyor olabilir veya farklı bağlama noktaları hesaba katılmıyor olabilir. lsof ile açık silinmiş dosyaları kontrol edin. |
df ile du arasında büyük fark varsa şu komutu çalıştırın:
Bash:
sudo lsof +L1
Çıktıda
(deleted) görünen dosyalar silinmiş olsa da dosyayı açık tutan işlem kapanana kadar disk blokları serbest bırakılmaz. Satırdaki işlem adını ve PID değerini not edin. İlgili servisi kontrollü biçimde yeniden başlatmak genellikle alanı geri kazandırır; ancak bunu üretim sunucusunda servis kesintisini planlamadan yapmayın. İşlem yeniden başlatılamıyorsa önce servis yöneticisinin durumunu ve dosyanın hangi uygulamaya ait olduğunu doğrulayın.Alan açmadan önce kontrol edilmesi gerekenler
Büyük dosyanın yolunu bulmanız, onun gereksiz olduğunu kanıtlamaz. Silme veya taşıma işleminden önce dosyanın sahibini, değişiklik tarihini, hangi servise ait olduğunu ve gerekiyorsa yedeğinin bulunup bulunmadığını kontrol edin:
Bash:
ls -lh /dosya/yolu
sudo stat /dosya/yolu
sudo file /dosya/yolu
Log dosyalarında doğrudan
rm kullanmak yerine servisin log döndürme mekanizmasını tercih edin. Yedekleri silmeden önce başka bir kopyanın gerçekten okunabildiğini doğrulayın. Veritabanı veya konteyner verilerinde ise önce ilgili yazılımın dokümantasyonundaki temizleme, dışa aktarma ya da taşıma yöntemini uygulayın.Geçici olarak alan açmanız gerekiyorsa yalnızca kaynağı kesinleşmiş ve yeniden oluşturulabilir verileri temizleyin. İşlemden sonra sonucu şu komutlarla yeniden kontrol edin:
Bash:
df -hT
sudo du -xhd1 / 2>/dev/null | sort -h
df kullanım yüzdesi düşmüşse alan dosya sistemi seviyesinde geri kazanılmıştır. Yüzde değişmiyorsa silinen dosya hâlâ açık olabilir, farklı bir dosya sistemi dolu olabilir veya temizlenen dosya beklenenden küçük olabilir. Bu durumda önce hangi bağlama noktasının dolu olduğunu tekrar belirleyip incelemeyi o dizinde sürdürün.