Ubuntu sunucu disk alanı nasıl temizlenir

0 Hisse senetleri
0
0
0
0

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 total

Gö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 www

Bu 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:

ls

Silinmiş 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.conf

Yapı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=100

Sonra ş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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Ayrıca Şunları da Beğenebilirsiniz