Bir Ubuntu sunucusundaki ‘Cihazda yer kalmadı’ hatası, disk veya dosya sistemi dolduğunda ortaya çıkan ve sistemin yeni dosyalar yazmasını veya oluşturmasını engelleyen yaygın bir sorundur.
Bir Ubuntu sunucusundaki “Cihazda yer kalmadı” hatası, disk veya dosya sistemi dolduğunda ortaya çıkan ve sistemin yeni dosyalar yazmasını veya oluşturmasını engelleyen yaygın bir sorundur. Bu sorun, özellikle düzgün çalışması için disk alanı gerektiren uygulamaları veya hizmetleri çalıştırırken sunucu performansını ve kararlılığını etkileyebilir. Bu kılavuzda, bu sorunu teşhis etmek ve düzeltmek için çeşitli yöntemleri inceleyeceğiz.
# 1. df Komutu ile Disk Kullanımını Kontrol Edin
“Cihazda yer kalmadı” sorununu çözmenin ilk adımı, kullanılabilir disk alanını kontrol etmektir. Bu işlemi disk kullanım istatistiklerini gösteren df komutu ile yapabiliriz.
Tüm bağlı dosya sistemleri için disk kullanımını görüntülemek için aşağıdaki komutu çalıştırın:
df -h
-h, çıktıyı insan tarafından okunabilir hale getirir (örneğin, GB veya MB cinsinden).
- Çıktı, dosya sistemini, boyutu, kullanılan alanı, kullanılabilir alanı ve bağlama noktasını gösterecektir.
Örnek çıktı:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 20G 19G 1G 95% /
/dev/sdb1 50G 10G 40G 20% /data
Bu durumda, /dev/sda1 (kök dosya sistemi) %95 doludur, yani yalnızca 1 GB boş alan kalmıştır. Hatanın nedeni bu olabilir.
# 2. Büyük dosyaları ve dizinleri tanımlayın
Disk neredeyse doluysa, hangi dosyaların veya dizinlerin en fazla alanı tükettiğini belirlemek çok önemlidir. Büyük dosya ve dizinleri bulmak için DU (Disk Kullanımı) komutunu kullanabiliriz.
Kök dosya sistemindeki dizine göre disk kullanımının bir özetini almak için:
sudo du -h --max-depth=1 /
-h, insan tarafından okunabilir bir biçim verir.
--max-depth=1, listeyi dizinlerin ilk düzeyiyle sınırlar.
Bu bize hangi dizinlerin en fazla yer kapladığına dair bir genel bakış sağlayacaktır.
Belirli bir dizini daha fazla keşfetmemiz gerekirse, örneğin, /var, şunu çalıştırabiliriz:
sudo du -h --max-depth=1 /var
# 3. Büyük günlük dosyalarını kontrol edin
Günlük dosyaları genellikle hızlı bir şekilde büyür ve doğru yönetilmezse önemli miktarda yer kaplayabilir. Günlükler için ortak bir konum /var/log dizinidir.
/var/log içindeki dosyaların disk kullanımını kontrol etmek için şunu çalıştırın:
sudo du -sh /var/log/*
syslog, kern.log veya nginx/*.log gibi büyük günlük dosyalarını arayın.
Günlük dosyalarını keserek güvenli bir şekilde temizleyebiliriz. Mesela:
sudo truncate -s 0 /var/log/syslog
sudo truncate -s 0 /var/log/kern.log
Alternatif olarak, günlük dosyası boyutlarını otomatik olarak yönetmek için logrotate gibi günlük döndürme araçlarını kullanabiliriz.
# 4. Gereksiz dosyaları sil
Kaldırılabilecek gereksiz dosyaları kontrol edin. Bunlar şunlar olabilir:
- Eski yedeklemeler
- Geçici dosyalar
- Kullanılmayan yazılım paketleri
Eski paket dosyalarını ve önbelleğe alınmış verileri temizlemek için aşağıdaki komutları kullanabiliriz:
- APT önbelleğini temizleyin:
sudo apt-get clean
- Kullanılmayan paketleri kaldırın:
sudo apt-get autoremove
- Artık paketleri kaldırın:
sudo apt-get autoclean
- Geçici dosyaları temizleyin: Geçici dosyaları /tmp dizininden aşağıdakilerle silebiliriz:
sudo rm -rf /tmp/*
# 5. Dosya Sistemi Sorunlarını İnceleyin ve Düzeltin
Eğer disk kullanımı normal görünüyor ancak hala “Cihazda yer kalmadı” hatasını görüyorsak, dosya sisteminin kendisinde dosya sistemi bozulması veya düğüm tükenmesi gibi sorunlar olabilir.
# Inode Kullanımını Kontrol Edin
Inode’lar, dosyalarla ilgili meta verileri depolayan veri yapılarıdır ve düğümler tükenirse, boş alan olsa bile sistem yeni dosyalar oluşturamaz. DF -I komutu ile inode kullanımını kontrol edebiliriz:
df -i
Örnek çıktı:
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 1M 1M 0 100% /
Düğümlerin% 100 kullanıldığını görürsek, birçok küçük dosya içeren dosyaları veya dizinleri silerek yer açmamız gerekecektir.
# Dosya Sistemini Kontrol Edin ve Onarın
Dosya sistemini kontrol etmek ve onarmak için fsck (dosya sistemi kontrolü) aracını kullanın. İlk olarak, dosya sisteminin bağlantısını kesin:
sudo umount /dev/sda1
Ardından bölümdeki fsck aracını çalıştırın:
sudo fsck /dev/sda1
Diskte bulunan hataları onarmak için istemleri izleyin.
# 6. Dosya sistemini yeniden boyutlandırın veya daha fazla disk alanı ekleyin
Disk gerçekten doluysa ve yeterli alan boşaltamıyorsak, dosya sistemini yeniden boyutlandırmayı veya daha fazla disk alanı eklemeyi düşünün. Bir sanal makine kullanıyorsak, sanal diski wer hypervisor’da yeniden boyutlandırabilir ve ardından gparted veya resize2fs kullanarak bölümü genişletebiliriz.
Örneğin, kök bölümü yeniden boyutlandırmak için resize2fs’yi kullanabiliriz:
sudo resize2fs /dev/sda1
# 7. Disk Alanı Kullanımını İzleyin
Bu sorunun gelecekte oluşmasını önlemek için disk kullanımını düzenli olarak izlemek çok önemlidir. Aşağıdakiler de dahil olmak üzere çeşitli izleme araçları mevcuttur:
df
anddu
commands (Manuel kontroller)dstat
orsysstat
(Ayrıntılı disk etkinliği için)
# 8. Logrotate kullanarak büyük günlük dosyalarını düzeltin
Günlük dosyaları, özellikle /var/log içindekiler, düzgün yönetilmezse hızla büyüyebilir. Bunun “Cihazda yer kalmadı” sorununa neden olmasını önlemek için Logrotate’i yapılandırabiliriz.
- Logrotate’i yükleyin
sudo apt-get install logrotate
- Logrotate Yapılandırması
- Global Configuration: /etc/logrotate.conf dosyasında bulunan bu dosya, tüm günlükler için geçerli olan genel ayarları içerir.
- Individual Log Configurations: /etc/logrotate.d/ dizininde bulunan bu dizin, belirli günlük dosyaları veya hizmetler (örneğin, Apache, Nginx, MySQL, vb.) için ayrı yapılandırma dosyaları içerir.
- Logrotate, günlükleri dosya boyutu, yaş veya zaman gibi önceden tanımlanmış kriterlere göre döndürerek çalışır. Ayrıca yerden tasarruf etmek için günlükleri sıkıştırabilir.
- Belirli Günlük Dosyaları için Logrotate’i Yapılandırma
- Belirli günlük dosyaları için çok büyüdüklerinde otomatik olarak döndürmek için bir yapılandırma dosyası oluşturabilir veya değiştirebiliriz. /var/log/syslog gibi büyük bir günlük dosyası için günlük döndürmeyi yapılandıralım.
- Belirli Günlük Dosyaları için Logrotate’i Yapılandırma
- Belirli günlük dosyaları için çok büyüdüklerinde otomatik olarak döndürmek için bir yapılandırma dosyası oluşturabilir veya değiştirebiliriz. /var/log/syslog gibi büyük bir günlük dosyası için günlük döndürmeyi yapılandıralım.
- Özel Bir Günlük Döndürme Dosyası Oluşturun: Belirli bir günlük dosyası için döndürmeyi yapılandırmak için /etc/logrotate.d/ içinde yeni bir dosya oluşturabiliriz.
sudo vim /etc/logrotate.d/syslog
- Logrotate Yapılandırması: Syslog dosyasını döndürmek için örnek bir yapılandırma aşağıda verilmiştir
/var/log/syslog { daily # Rotate logs every day missingok # Ignore errors if the log file is missing rotate 7 # Keep 7 days of log files compress # Compress old logs to save space delaycompress # Delay compression until the second rotation notifempty # Do not rotate if the log file is empty create 0640 root root # Create new log with specified permissions and ownership size 50M # Rotate the log file when it reaches 50MB in size }
daily
: Rotates the log file every day.rotate 7
: Keeps the last 7 log files and removes older ones.compress
: Compresses old log files to save space.delaycompress
: Delays the compression of old logs until the second rotation.size 50M
: Rotates the log file when it reaches 50MB.notifempty
: Does not rotate the log if it’s empty.create 0640 root root
: Creates a new log file with specific permissions and ownership.
- Logrotate yapılandırmasını test edin
- Büyük günlük dosyaları için logrotate’i yapılandırdıktan sonra, beklendiği gibi çalıştığından emin olmak için yapılandırmayı test edebiliriz
sudo logrotate -d /etc/logrotate.conf
- -d seçeneği, logrotate’e hata ayıklama modunda çalışmasını söyler ve döndürme işlemini gerçekten gerçekleştirmeden simüle eder. Çıktıda herhangi bir hata veya sorun olup olmadığını kontrol edin.
- Her şey yolunda görünüyorsa, logrotate’i günlükleri hemen çalıştırmaya ve döndürmeye zorlayabiliriz:
sudo logrotate -f /etc/logrotate.conf
- Logrotate için cron’u kurma:
- Logrotate genellikle bir cron işi aracılığıyla otomatik olarak çalışacak şekilde yapılandırılır. Cron dizinini inceleyerek logrotate’in önceden planlanıp programlanmadığını kontrol edin
sudo vim /etc/cron.daily/logrotate
- Bu dosya zaten mevcut olmalıdır ve logrotate günde bir kez otomatik olarak çalıştırılacaktır.
- Logrotate’in ne sıklıkta çalıştığını ayarlamak istiyorsak, daha sık rotasyonlar için özel cron işleri oluşturabiliriz. Örneğin, gerekirse her saat logrotate çalıştıran bir cron işi oluşturabiliriz:
sudo vim /etc/cron.hourly/logrotate
Bu dosyanın içine şunu ekleyin:
#!/bin/sh /usr/sbin/logrotate /etc/logrotate.conf
- Dosyayı yürütülebilir hale getirme
sudo chmod +x /etc/cron.hourly/logrotate
- Döndürme ayarlarını izleyin ve ayarlayın
- Logrotate’i kurduktan sonra, log rotation’ın düzgün çalıştığından emin olmak için sistemin disk kullanımını izlemek önemlidir. Sıklığı, boyut sınırlarını ve tutulan günlük dosyalarının sayısını gerektiği gibi ayarlayabiliriz.
- Ayrıca, eski günlüklerin beklendiği gibi sıkıştırıldığından ve kaldırıldığından emin olmak için /var/log dizinini düzenli aralıklarla denetlemek isteyebiliriz.
Yazının orijinalini buradan okuyabilirsiniz.

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.