giriiş
Ubuntu sunucunuzda disk alanı mı tükeniyor?
Temizleyip biraz yer açmak ister misiniz? Öyleyse doğru yerdesiniz.
Birçok geliştirici sizinle aynı sorunla karşı karşıyadır; Ubuntu sunucularına bir veya iki küçük uygulama yüklemişlerdir, ancak zamanla disk alanı dolar ve ne yapacaklarını, disk alanlarını nasıl boşaltacaklarını bilemezler.
Yakın zamanda benzer bir durumla karşılaştım. Disk kapasitesinin 'ünü doldurmuş bir Ubuntu sunucum vardı ve sunucuda çalışan küçük bir Django uygulamasının disk kullanımı yaklaşık 39 GB'tı. Uygulama dosyalarının boyutu 1 GB'tan az olduğu için ek disk alanı edinmenin bir seçenek olmadığını biliyordum.
Sonuç olarak, tüm sunucuyu tarayıp hangi dizinlerin ve programların disk alanımı kapladığını belirlemek için bir gün harcamak zorunda kaldım.
Bu yazımda, Ubuntu sunucunuzdaki gereksiz dosyaları bulmak ve disk alanını temizlemek için uyguladığım kanıtlanmış adımları paylaşıyorum.
Ön koşullar
- Ubuntu'lu sunucu (örneğin Hetzner Cloud ile)
- Sunucuya SSH erişimi
- Kök kullanıcıya veya sudo izinlerine sahip bir kullanıcıya erişim
Örnek terimler
- Kullanıcı adı: holu (sunucu kullanıcı adınız)
- Sunucu adı:
Ubuntu sunucu diski nasıl temizlenir
Disk alanı kullanımı söz konusu olduğunda, en büyük suçlu genellikle günlüklerdir. Ubuntu işletim sistemi neredeyse her şeyin kaydını tutar ve Celery ve Nginx gibi birçok geliştirici ve sunucu aracı ve çerçevesi de sunucunuzda günlükler oluşturur ve depolar.
Çeşitli araçlar ve paketler tarafından oluşturulan bu raporlar genellikle gigabaytlarca boyutta olur, disk alanınızı tüketir ve sunucunuzu yavaşlatır.
Pratik adımlara geçmeden önce, kök sistem günlük klasörünü silmemeniz gerektiğini belirtmek isterim. Asla kök günlük klasörünü (/var/log/) silmeye kalkışmayın. Aksi takdirde, bozmak istemediğiniz birçok şeyi bozmuş olursunuz.
Adım 1 – Disk alanını kontrol edin
İlk adım, Ubuntu sunucusuna SSH üzerinden erişmektir. Aşağıdaki komutu kullanarak oturum açabilirsiniz:
Holu kullanıcı adınızla ve Sunucu IP'nizle değiştirin.
ssh holu@<your_host>
Giriş yaptıktan sonra disk alanı kullanımınızı görüntülemek için aşağıdaki komutu çalıştırın.
sudo du -cha --max-depth=1 / | grep -E "M|G"
Örnek çıktı:
holu@<your_host>:~$ sudo du -cha --max-depth=1 / | grep -E "M|G"
2.8G /root
5.4G /usr
53M /tmp
9.8M /etc
203M /boot
du: cannot access '/proc/100209/task/100209/fd/4': No such file or directory
du: cannot access '/proc/100209/task/100209/fdinfo/4': No such file or directory
du: cannot access '/proc/100209/fd/3': No such file or directory
du: cannot access '/proc/100209/fdinfo/3': No such file or directory
2.5G /home
1.1M /run
307M /opt
522M /logs
11G /var
1.3G /snap
24G /
24G totalGördüğünüz gibi bu komut bize diskteki çeşitli klasörlerin/dizinlerin boyutları hakkında üst düzey ayrıntılar gösteriyor.
Yukarıdaki örnek çıktıya bakarsanız, disk alanımızı en çok kullananlar /root, /usr, /home ve /var dizinleridir. Sadece var dizini 11 GB'dir ve bu, bu dizin tarafından kullanılan büyük bir alandır.
Adım 2 – var dizinine gidin
Bir sonraki adım, aşağıdaki komutu kullanarak /var klasörüne girmektir.
cd /var
Ardından, /var klasöründeki tüm klasörlerin disk alanı kullanımını görmek için aşağıdaki komutu çalıştırın. Bu, temizleme işlemine hangi klasörlerden başlayacağımızı anlamamıza yardımcı olacaktır.
sudo du -bsh *
Örnek çıktı:
holu@<your_host>:/var$ sudo du -bsh *
2.7M backups
150M cache
4.0K crash
3.6G lib
4.0K local
9 lock
2.5G log
3.0G mail
4.0K opt
4 run
53K snap
52K spool
44K tmp
460M wwwBu komutu sunucumda çalıştırdığımda, /var klasöründe en çok alanı lib ve log dizinlerinin kullandığını görebiliyorum.
Bu bilgilerle hem lib dizinine hem de log dizinine odaklanarak sabit diskimde yer açabilirim.
Adım 3 – Silmek için her dizine gidin
Bir sonraki adım, bu dizinlere girip temizlemek. Bu makalede yalnızca günlük dizinine odaklanacağım, ancak burada uyguladığımız adımları Ubuntu sunucunuzdaki diğer dizinleri temizlemek için de uygulayabileceğinizi unutmayın.
Günlük dizinini temizleyebilmek için sunucudaki eski günlük dosyasını ve diğer gereksiz dosyaları silmemiz gerekir. Günlük dizinine erişmek için aşağıdaki komutu çalıştırın.
cd log
O zaman şunu yapın:
lsÖrnek çıktı:
holu@<your_host>:/var$ cd log
holu@<your_host>:/var/log$ ls
alternatives.log fail2ban.log php7.4-fpm.log.5.gz
alternatives.log.1 fail2ban.log.1 php7.4-fpm.log.6.gz
alternatives.log.2.gz fail2ban.log.2.gz php7.4-fpm.log.7.gz
alternatives.log.3.gz fail2ban.log.3.gz php7.4-fpm.log.8.gz
alternatives.log.4.gz fail2ban.log.4.gz php7.4-fpm.log.9.gz
alternatives.log.5.gz faillog postgresql
alternatives.log.6.gz fontconfig.log private
apport.log installer supervisor
apport.log.1 journal syslog
apport.log.2.gz kern.log syslog.1
apport.log.3.gz kern.log.1 syslog.2.gz
apport.log.4.gz kern.log.2.gz syslog.3.gz
apport.log.5.gz kern.log.3.gz syslog.4.gz
apport.log.6.gz kern.log.4.gz syslog.5.gz
apport.log.7.gz landscape syslog.6.gz
apt lastlog ls komutu bize bu dizindeki tüm dosyaları gösterir ve gördüğünüz gibi bu dizinde çok sayıda arşivlenmiş günlük dosyası vardır.
Daha sonra aşağıdaki komutu kullanarak bu dizindeki tüm dosya ve klasörlerin boyutunu kontrol edin.
sudo du -bsh *
Bu, yukarıda kullandığımız komutla aynı, yani tüm dosyaların ve boyutlarının bir listesini görmelisiniz. Günlük klasörünü not edin.
Adım 4 – Eski günlük dosyalarını silin
Bir sonraki adım, tüm eski günlük dosyalarını silmek. Eski günlük dosyalarını tespit etmek kolaydır ve genellikle .gz dosya adı uzantısıyla biterler.
Sunucumuzdaki tüm .gz dosyalarını bulup silmek için bir komut kullanacağız.
Günlük dizinindeki tüm .gz ve .log.1 dosyalarını bulup silmek için aşağıdaki komutu çalıştırın.
sudo find -type f \( -name "*.log.1" -o -name '*.gz' \) -delete
Hemen yap:
lsSilinmiş bir günlük dizini görmelisiniz. Ayrıca, -name özniteliğinin değerini değiştirerek farklı dosya türlerini silmek için bu komutu da değiştirebilirsiniz.
Dergi dizini çok fazla disk alanı kapladığı için henüz işimiz bitmedi. Bu nedenle, bu dizini kontrol edip bazı dosyaları temizlememiz gerekiyor.
cd journal
Dergi dizininin içinde, genellikle bir dizi sayıyla adlandırılan bir klasör göreceksiniz. Bunu silmek için aşağıdaki komutu kullanabiliriz.
Bu komut, dergi dizininin boyutunu makul bir boyut olan 100 MB'a düşürecektir.
sudo journalctl --vacuum-size=100M
Dergi diski kullanımında kalıcı bir çözüm istiyorsanız aşağıdaki işlemi izleyin.
sudo nano /etc/systemd/journald.confYapılandırma dosyasında SystemMaxFileSize ve SystemMaxFiles ayarlarını kaldırın (#'yi kaldırın) ve bunları 100 olarak ayarlayın. Yani şu şekilde olmalı:
SystemMaxFileSize=100
SystemMaxFiles=100Sonra şunları yapın:
sudo service systemd-journald restart
Bu, değişiklikleri uygulayacak ve ekstra günlükleri kaldıracaktır.
Adım 5 – /var/lib klasörünü kontrol edin
Deneyimlerime göre, bir diğer büyük alan kullanıcısı da /var/lib dizini. Ubuntu sunucunuzda yüklü olan kütüphane veya araç sayısına bağlı olarak, bu dizin çok fazla yer kaplayabilir.
Hangi kütüphanelerin çok fazla yer kapladığını bulmanın hızlı bir yolu aşağıdaki komutu çalıştırmaktır.
sudo du -hs /var/lib/* | sort -hr | head -10
Bu komut size bu dizindeki en büyük 10 kütüphane klasörünü gösterecektir, daha sonra temizleme işleminize devam etmek için bu bilgileri kullanabilirsiniz.
Şu anda kullanmadığınız kütüphaneleri veya araçları tamamen kaldırmalısınız.
Çözüm
Gördüğünüz gibi, Ubuntu sunucunuzu temizlemek o kadar da zor değil. Yukarıdaki adımları izleyerek /var/log/ dizinimizi başarıyla temizledik. /var klasöründeki diğer dizinleri temizlemek için de aynı adımları izleyin ve Ubuntu sunucunuzda önemli miktarda alan boşaltın.









