İçeriğe geç
Çılgın Yazılım

DevOps ve Sistem Yönetimi kod örnekli

Disk Doldu Alarmı Geldiğinde İlk 10 Dakikada Ne Yapmalı?

Disk dolduğunda veritabanı yazamaz, log tutulamaz, oturumlar bozulur. Panik yapmadan uygulanacak sıralı bir müdahale planı.

Çılgın Yazılım 3 dk okuma

Disk Doldu Alarmı Geldiğinde İlk 10 Dakikada Ne Yapmalı?
İçindekiler
  1. Adım 1: Hangi bölümün dolduğunu belirleyin
  2. Adım 2: Alan boş görünüyorsa inode'lara bakın
  3. Adım 3: En büyük dizinleri bulun
  4. Adım 4: Silinmiş ama serbest bırakılmamış dosyaları kontrol edin
  5. Adım 5: Güvenli alan açma
  6. Kalıcı çözüm: bir daha olmaması için
  7. Sonuç

Disk doldu uyarısı, sunucu yönetiminde etkisi en hızlı yayılan olaylardan biridir. Disk dolduğu anda veritabanı yazamaz hâle gelir, oturum dosyaları bozulur, yükleme işlemleri yarım kalır ve — en kötüsü — sistem kendi log'unu tutamadığı için ne olduğunu anlamanız da zorlaşır. Bu yazıda, alarm geldikten sonraki ilk on dakikada sırayla ne yapılacağını ele alıyoruz.

Disk dolma müdahale adımları
En sık hata, sorunu bulmadan rastgele dosya silmektir.

Adım 1: Hangi bölümün dolduğunu belirleyin

İlk komut her zaman aynıdır:

Kod
df -h

Buradaki kritik ayrım, dolan bölümün hangisi olduğudur. Kök bölümü (/) dolduysa sistem servisleri etkilenir ve acil müdahale gerekir. Yalnızca veri bölümü dolduysa etki daha sınırlıdır. /var ayrı bir bölümdeyse ve o dolduysa, sorun büyük olasılıkla log'lardır.

Adım 2: Alan boş görünüyorsa inode'lara bakın

Sık karşılaşılan ve kafa karıştıran bir durum: df -h boş alan gösteriyor ama sistem "disk dolu" hatası veriyor. Bu, inode tükenmesidir — yani dosya sayısı sınırına ulaşılmıştır. Genellikle çok sayıda küçük dosya üreten bir süreçten (önbellek dosyaları, oturum dosyaları, kuyruk dosyaları) kaynaklanır.

Kod
df -i

Kullanım oranı %100'e yakınsa teşhis konmuştur. Bu durumda yapılacak şey büyük dosya aramak değil, çok sayıda küçük dosya üreten dizini bulup temizlemektir.

Adım 3: En büyük dizinleri bulun

Tepeden aşağı inerek ilerlemek, tüm diski taramaktan çok daha hızlıdır:

Kod
du -h --max-depth=1 / 2>/dev/null | sort -hr | head -10

Çıkan en büyük dizine geçip aynı komutu tekrarlayın. Birkaç adımda kaynağa ulaşırsınız. En sık çıkan suçlular: /var/log (rotasyonu yapılmayan log'lar), /var/lib/mysql (ikili günlükler), /tmp, uygulama yükleme dizinleri ve Docker kullanılıyorsa /var/lib/docker.

Adım 4: Silinmiş ama serbest bırakılmamış dosyaları kontrol edin

Bu, en çok zaman kaybettiren tuzaktır. Büyük bir log dosyasını sildiniz, ama df hâlâ diskin dolu olduğunu gösteriyor. Sebep şudur: bir süreç o dosyayı hâlâ açık tutuyorsa, dosya silinse bile alan serbest bırakılmaz.

Kod
lsof +L1 | head -20

Bu komut, silinmiş ama hâlâ açık olan dosyaları listeler. Çözüm, ilgili süreci yeniden başlatmak veya log dosyasını silmek yerine içeriğini boşaltmaktır:

Kod
# Silmek yerine boşaltın — süreç dosyayı açık tutmaya devam edebilir
: > /var/log/uygulama/buyuk.log

Adım 5: Güvenli alan açma

Acil durumda hangi dosyaların silinmesi güvenlidir?

  • Güvenli: Rotasyona uğramış eski log arşivleri (.gz uzantılı), paket yöneticisi önbelleği, uygulama derleme önbellekleri, eski Docker imajları ve kullanılmayan hacimler.
  • Dikkatli olun: Veritabanının ikili günlükleri (binlog). Bunlar çoğaltma için gerekebilir; doğrudan dosya silmek yerine veritabanının kendi temizleme komutunu kullanın.
  • Asla silmeyin: Veritabanı veri dosyaları, aktif yükleme dizinleri ve ne olduğunu bilmediğiniz hiçbir şey. Acil durumda tanımadığınız bir dosyayı silmek, disk dolmasından çok daha büyük bir olaya dönüşebilir.

Alan açtıktan sonra etkilenen servisleri kontrol edin: veritabanı yazamadığı için salt okunur moda geçmiş olabilir, uygulama sunucusu hata durumunda kalmış olabilir.

Kalıcı çözüm: bir daha olmaması için

Disk dolması neredeyse her zaman önlenebilir bir olaydır. Alarm sonrası yapılacak asıl iş, aynı olayın tekrarlanmasını engellemektir:

  1. Log rotasyonunu doğrulayın. logrotate yapılandırmasının uygulama log'larını da kapsadığından ve gerçekten çalıştığından emin olun. Uygulamanın kendi yazdığı log dosyaları çoğu zaman rotasyon kapsamı dışında kalır.
  2. Saklama süresi belirleyin. Yedekler, geçici dosyalar ve arşivler için otomatik temizleme kuralı yazın. "Bir gün lazım olur" diye biriken dosyalar, disk dolmasının en yaygın sebebidir.
  3. Erken uyarı kurun. %90 doluluk uyarısı çok geçtir; %75'te uyaran bir eşik, müdahale için zaman bırakır. Ayrıca doluluk oranının artış hızını izlemek, "üç gün içinde dolacak" gibi öngörülü uyarılar üretir.
  4. inode kullanımını da izleyin. Çoğu izleme kurulumu yalnızca alan izler; inode tükenmesi bu yüzden hep sürpriz olur.

Yeni bir sunucuyu ilk kurarken bu ayarların baştan yapılması en ucuz yoldur; kurulum kontrol listesi için Linux sunucu kurulumu yazımıza bakabilirsiniz. Log hacmini kaynağında azaltmak için log yazma rehberimiz, bulut ortamında saklama maliyetleri için bulut faturası yazımız ilgili okumalardır. Sistem yönetimi komutlarının ayrıntılı örnekleri için DigitalOcean topluluk rehberleri pratik bir kaynaktır.

Sonuç

Disk doldu alarmında en pahalı hata, sorunu teşhis etmeden rastgele dosya silmeye başlamaktır. Doğru sıra kısadır: hangi bölüm dolu, alan mı inode mu tükendi, en büyük dizin hangisi, silinmiş ama açık tutulan dosya var mı. Bu dört soru genellikle beş dakika içinde kaynağı gösterir. Asıl iş ise olaydan sonra başlar: rotasyon, saklama politikası ve erken uyarı kurulmadığı sürece aynı alarm birkaç ay içinde geri gelir. Sunucularınızda şu an df -i çıktısına bakın — çoğu ekip bu satırı ilk kez bir olay sırasında görür.

Beğeniniz benzer içerikleri öne çıkarmamıza yardımcı olur.

Sık sorulan sorular

Disk doluyken sunucuyu yeniden başlatmak işe yarar mı?

Geçici olarak yardımcı olabilir çünkü açık tutulan silinmiş dosyalar serbest kalır. Ancak sebebi ortadan kaldırmaz ve veritabanı tutarsızlığı riski taşır; önce lsof ile kontrol etmek daha güvenlidir.

Log dosyasını silmek yerine neden boşaltmalıyım?

Süreç dosyayı açık tutuyorsa silme işlemi alanı geri kazandırmaz; ayrıca süreç yazmaya devam edebilmek için dosya tanıtıcısına ihtiyaç duyar. İçeriği boşaltmak her iki sorunu da çözer.

inode tükenmesi nasıl kalıcı olarak çözülür?

Çok sayıda küçük dosya üreten süreci düzeltmek gerekir: oturum ve önbellek dosyalarına temizleme politikası koymak veya bu verileri dosya sistemi yerine Redis gibi bir depoya taşımak yaygın çözümlerdir.

Uyarı eşiğini kaça ayarlamalıyım?

Sabit bir yüzde yerine dolma hızını da dikkate almak en iyisidir. Pratikte %75'te bilgilendirme, %85'te müdahale gerektiren uyarı yaygın ve işleyen bir kurulumdur.

Yazan

Çılgın Yazılım

Ben Evren Çılgın; yazılım geliştirme, web teknolojileri ve sistem tasarımı alanlarında uzmanlaşmış bir geliştiriciyim. Uzun yıllardır hem frontend hem de backend tarafında üretken, ölçeklenebilir ve kullanıcı dostu çözümler üretiyorum.

Hakkımızda Bize ulaşın

Bu konuda bir projeniz mi var?

İhtiyacınızı birkaç cümleyle anlatın; uygun yaklaşımı birlikte belirleyelim.

Projenizi Anlatın

İlgili yazılar

Yorumlar

Henüz yorum yok. Sorunuzu ya da deneyiminizi ilk siz yazın.

Yorum yazın

Yorumunuz onaylandıktan sonra yayınlanır. Ekibimiz gerekirse konuyla ilgili bir yanıt da paylaşır.

Yayınlanmaz; yalnızca gerektiğinde size ulaşmak için.

En az 10 karakter.

Tüm yazılar