Dünyanın en detaylı ücretsiz FDE + DevOps kütüphanesi: 140 üzeri ders, 70 üzeri lab ve 80 uzun yazı, İngilizce ve Türkçe. Öğrenmeye başla →

DevOps Foundations · Modül 1: Linux çalışma modeli

Disk, Inode ve Bellek

Üç kaynak aynı belirtiyle tükenir, tedavisi farklıdır. Bu ders üçlü ayrımı öğretir; temizlik nedeni ortadan kaldırır, kanıtı silmez.

10 dk okuma

Kazanımlar

  • Üç komutla disk dolu, inode dolu ve bellek tükenmesini birbirinden ayırmak
  • Tahminle veya kör silmeyle değil, alanı gerçekte neyin tükettiğini bulmak
  • Açık log dosyasını silmenin neden yer açmadığını açıklamak
  • Geri getirilemeyecek veriye dokunmayan güvenli temizlik sırasını uygulamak

Neden önemli

Yazmalar düşmeye başlar ve her içgüdü diskin dolu olduğunu söyler. Çoğu zaman değildir: dosya sisteminde boş blok vardır ama boş inode sıfırdır, ya da ikisi de bolken makine belleksiz kalmış ve OOM katili kurban seçiyordur. Her yanlış tahmin bir yeniden başlatmaya veya geri alınamaz bir silmeye mal olur. Üçlü kontrol otuz saniye sürer ve her kurtarma aracından çok veri kurtarmıştır.

Kavramlar

Disk alanının iki sayacı vardır ve ikisi de yazmayı durdurur. Bloklar dosya içeriğini tutar; inode'lar dosya üstverisini tutar, boyuttan bağımsız dosya başına birdir. df -h blokları, df -i inode'ları raporlar; ikisinden biri yüzde 100 olan dosya sistemi yeni dosya kabul etmez. Milyonlarca minik oturum veya önbellek dosyası bloklar sağlıklı görünürken inode'ları tüketir; kaçak tek çekirdek dökümü tersini yapar. Hareketten önce ikisini de oku.

du tüketiciyi bulur: du -xhd1 /srv 2>/dev/null | sort -rh tek dosya sisteminde kalır, bir seviye özetler, büyükten küçüğe dizer. Silinmiş ama açık dosyalar klasik tuzaktır: rm ile ismi kaldırmak, süreç dosyayı açık tutarken yalnızca dizin girdisini düşürür; tutucu kapanana veya kesilene kadar df boşalan alan göstermez. lsof | grep deleted tutucuları adlandırır; : > dosya ile kesmek veya servisi yeniden başlatmak blokları gerçekten serbest bırakır. Başka dosya sistemine sıkıştırmak veya taşımak, açık tanıtıcı kapanana kadar aynı şekilde etkisizdir.

Bellek baskısı farklı görünür: makine yavaşlar, sonra süreçler disk hatası olmadan ölür. free -h kullanılan RAM'i geri alınabilir önbellekten ayırır; yüksek önbellek sağlıklıdır, kullanılabilir sıfırken yüksek kullanım sağlıklı değildir. dmesg ve günlük, OOM katilinin kurbanı adlandıran hükmünü taşır. Takas kararı geciktirir ama asla çözmez: takasa düşmüş servis, üstündeki her zaman aşımını tetikleyecek kadar yavaş yanıt verir. Bellek tükenmesinin dürüst çözümü sayılarla seçilmiş daha az eşzamanlı iş veya daha büyük makinedir; forumdan kopyalanmış swappiness ayarı değildir.

Uygulamalı örnek

/srv yazmaları düşüyor. Sırayla ayrım:

$ df -h /srv | tail -1 /dev/sda1 20G 9.1G 9.9G 48% /srv $ df -i /srv | tail -1 /dev/sda1 1.3M 1.3M 0 100% /srv $ du -xhd1 /srv/app/tmp 2>/dev/null | sort -rh | head -3 4.0K /srv/app/tmp/sess_9f2c ... $ ls /srv/app/tmp | wc -l 1298433

Beklenen okuma: bloklar yarı boş, inode'lar tükenmiş, tek dizinde 1,3 milyon oturum dosyası. Tedavi, uygulamanın yeniden ürettiği dosyaların önce eskilerden başlayarak sınırlı partilerle silinmesidir (milyon argümanlı tek rm yıldız argüman sınırına takılır; dilimli find ... -delete takılmaz); ardından buna yol açan oturum temizleme işi düzeltilir. Bu örneğin elediklerine dikkat: bellek kanıtı yok, blok baskısı yok; yeniden başlatma yok, temizliğin gerektirdiğinden fazla servis müdahalesi yok.

Yaygın yanlış hamle

Yalnızca boyut sıralamasıyla silmek: en büyük dosya genelde veritabanı veya makinedeki tek yedektir ve geri getirilemeyecek olan tam da odur. Güvenli sıra şudur: tüketiciyi du ile belirle, dizinde önemli bir şey paylaşılmadığını doğrula, veritabanı silmek yerine log kesmeyi tercih et, önce yeniden üretilebilir veriyi sil ve her adımda df ile doğrula. Yeri doldurulamaz her şey, olay bitene kadar silinmez, taşınır. "Disk doluydu, en büyük dosyaları sildim" cümlesi, olay incelemelerinin açılış cümlesidir.

Lab ve sonraki adım

L03 labı, sınırlı eğitim dizininde inode baskısı üretip her adımda doğrulayarak güvenle temizletir; host disklerine yapısı gereği dokunulmaz. Sırada 4. ders: bu kontrolleri loglarla tekrarlanabilir teşhis yöntemine çevirir.

Mini kontrol

4 soruluk isteğe bağlı öz kontrol. Yanıtlar cihazından çıkmaz, saklanmaz ve hiçbir değerlendirmeye sayılmaz.

Ders geri bildirimi

Henüz yayında geri bildirim yok.

Geri bildirim yazmak için giriş yap ve dersi tamamla.

Kaynaklar

Alıştırma

Yalnızca /tmp içinde bir döngüyle 50.000 küçük dosya oluştur, df -i değişimini izle, sonra find partileriyle kaldır ve toparlanmayı doğrula. Üç komutu ve önce/sonra sayılarını kaydet.

Geçme kriterleri

df -i çıktısında inode kullanımı yükselip düşüyor; kaldırma find ile yapılmış (rm yıldız değil); en az bir df -i okumasında önce/sonra sayıları kayıtlı.

İlerlemeni kaydetmek için giriş yapÜcretsiz hesap: yalnızca ders ilerlemen ve quiz sonuçların saklanır.