No Space Left on Device Hatası Nasıl Çözülür (Linux)

Son gözden geçirme: Eylül 2026 · Ubuntu 24.04 resmî dokümanına göre

Hızlı çözüm

No space left on device hatası, dosyanın yazılacağı bölümde ya boş alanın ya da boş inode’un bittiğini gösterir; önce hangisinin bittiğini bulup sonra yer açarsınız.

  1. df -h ile dolu bölümü, df -i ile inode doluluğunu kontrol edin.
  2. du ile yer kaplayan klasörü bulun (çoğunlukla /var/log, /var/lib/docker, yedek klasörleri).
  3. Günlükleri journalctl --vacuum-size ile küçültün, apt clean ile paket önbelleğini boşaltın.
  4. df boş gösteriyorsa lsof +L1 ile silinmiş ama açık tutulan dosyaları bulun.
Panel Yok — komutlar SSH ya da tarayıcı terminalinden çalıştırılır
Sistem Ubuntu 22.04/24.04, Debian 12 (VPS/VDS)
Yetki Sunucunuzun root ya da sudo yetkili kullanıcısı
Narhost ürünü VPS Sunucu, VDS Sunucu

Başlamadan önce

  • Disk tamamen dolduğunda SSH girişi bile yavaşlayabilir; bağlanamıyorsanız ürünle gelen tarayıcı terminalini kullanın.
  • Silme işleminden önce veritabanı ve site dosyalarının güncel bir kopyasının sunucu dışında durduğundan emin olun.
  • Paylaşımlı hostingde SSH yoktur; orada bu uyarı kota ya da inode sınırından gelir, inode limiti kartını izleyin.

No Space Left on Device Hatası Neden Olur

Linux’ta bir dosya yazılırken iki kaynak birden gerekir: veri blokları için boş alan ve dosyanın kaydı için boş bir inode. Hangisi biterse bitsin çekirdek aynı ENOSPC hata kodunu döndürür; MySQL tablo yazamaz, PHP oturum dosyası oluşturamaz, apt paket açamaz ve web sunucusu 500 vermeye başlar.

Alan tükenmesinin olağan kaynakları büyüyen günlük dosyaları, systemd-journal kayıtları, sunucuda biriken yedek arşivleri ve kullanılmayan Docker imajlarıdır. İnode tükenmesi ise milyonlarca küçük dosyadan gelir: PHP oturum klasörü, uygulama önbelleği, kuyruğa takılmış e-postalar. Üçüncü ve en şaşırtıcı durum, silinmiş ama bir süreç tarafından hâlâ açık tutulan dosyadır: du onu göremez, df ise alanı dolu gösterir.

Adım Adım Çözüm

  1. Hangi kaynağın bittiğini belirleyin.df belgesine göre-h alanı okunur birimlerle, -i inode kullanımını gösterir.
    df -h
    df -i

    Beklenen sonuç: Use% sütunu %100’e yakınsa alan, IUse% %100’e yakınsa inode tükenmiştir.

  2. Yer kaplayan klasörü bulun.-x seçeneği taramayı aynı dosya sisteminde tutar.
    sudo du -xh --max-depth=1 / 2>/dev/null | sort -rh | head -15
    sudo du -xh --max-depth=1 /var 2>/dev/null | sort -rh | head -15

    Beklenen sonuç: en büyük klasörler üstte sıralanır; şüpheli klasöre aynı komutla bir seviye daha inin.

    no space left on device hatası çözüm akış şeması — alan ve inode kontrolü, büyük klasör, temizlik ve açık dosya adımları
    Disk dolu uyarısında dört adımlı kontrol: alan mı inode mu, büyük klasör, günlük temizliği, açık tutulan dosyalar.
  3. İnode doluysa dosya sayısı en yüksek klasörü bulun.
    sudo du --inodes -x -d 1 / 2>/dev/null | sort -rn | head -15

    Beklenen sonuç: dosya sayısı en yüksek klasör üstte görünür; oturum ya da önbellek klasörüyse eski dosyaları uygulamanın kendi temizleme aracıyla silin.

  4. Günlük ve paket önbelleğini temizleyin.
    sudo journalctl --disk-usage
    sudo journalctl --vacuum-size=200M
    sudo apt clean
    sudo apt autoremove --purge

    Beklenen sonuç: journalctl silinen arşiv dosyalarını ve açılan alanı yazar; df -h boş alanın arttığını gösterir.

  5. Büyük günlük dosyasını silmeyin, boşaltın. Açık bir günlük dosyası rm ile silinirse alan geri gelmez; içeriği sıfırlayın:
    sudo truncate -s 0 /var/log/ornek-uygulama.log
  6. Silinmiş ama açık dosyaları bulun.lsof belgesine göre+L1 bağlantı sayısı sıfır olan, yani silinmiş dosyaları listeler.
    sudo lsof +L1

    Beklenen sonuç: COMMAND sütununda dosyayı tutan süreç görünür; o servisi yeniden başlattığınızda (sudo systemctl restart nginx gibi) alan serbest kalır.

Dikkat

docker system prune -a çalışmayan konteynerleri ve kullanılmayan tüm imajları siler; önce docker system df ile neyin yer kapladığına bakın. Veritabanı dosyalarını (/var/lib/mysql) ve /boot içeriğini elle silmeyin.

Doğrulama

Sonuç

df -h ve df -i kullanım oranını %90’ın altında gösteriyor, hata veren işlem (paket kurulumu, veritabanı yazması, dosya yükleme) yeniden denendiğinde tamamlanıyorsa sorun çözülmüştür. Kalıcı çözüm için günlük döndürme (logrotate) ayarlarını ve yedeklerin sunucu dışına taşınmasını kontrol edin.

Hâlâ Çözülmediyse

  • Temizlik yetmiyor, veri gerçekten büyüdü. Diski büyütmeniz gerekir; paket yükselttikten sonra bölümü genişletmek için Ubuntu disk genişletme kartını izleyin.
  • Hangi dosyanın büyük olduğunu bulamıyorsunuz.Linux’ta büyük dosyaları bulma kartındaki find komutlarını kullanın.
  • Disk birkaç günde yeniden doluyor. Bir uygulama hızla günlük yazıyordur; log dosyalarını okuma kartıyla kaynağı bulun.

Narhost desteği

VPS/VDS yönetimsizdir, sunucu içindeki temizlik sizin sorumluluğunuzdadır; sunucuya hiç erişemiyorsanız talep açın. Talebe şunları ekleyin: sunucu adı, No space left on device hatasının geçtiği tam çıktı, df -h ve df -i çıktıları, hatanın başladığı saat ve denediğiniz adımlar.

Destek talebi aç

Sıkça sorulan sorular

df boş alan gösteriyor ama yine de yazamıyorum

İnode’lar bitmiş olabilir; df -i çıktısında IUse% değerine bakın. İkinci olasılık silinmiş ama açık tutulan dosyalardır, lsof +L1 bunları listeler.

Sunucuyu yeniden başlatmak alanı açar mı?

Yalnız silinmiş ama açık tutulan dosyalar için açar, çünkü süreçler kapanınca bu dosyalar serbest kalır. Günlük, yedek ve imaj kaynaklı doluluğu çözmez; o dosyaların temizlenmesi gerekir.

Journal günlüklerini kalıcı olarak sınırlayabilir miyim?

Evet. /etc/systemd/journald.conf dosyasında SystemMaxUse= değeri verip systemd-journald servisini yeniden başlattığınızda günlükler bu boyutun üzerine çıkmaz.

Bu makale sorununuzu çözdü mü?

Çözemediniz mi?

Teknik ekibimiz sunucu tarafındaki ayarları sizin için kontrol edebilir. Destek talebinizde alan adınızı ve aldığınız hata metnini paylaşmanız süreci hızlandırır.

İlgili çözümler