İçeriğe Atla
Mustafa Erbay
Yaşam İnsan tarafından yazıldı · 9 dk okuma · görüntülenme Read in English
100%

VPS'imde Swap Yangını: Kernel CVE Yamasıyla Başlayan Kabus

VPS'imdeki swap kullanımının aniden artması ve sistemin çökmesiyle başlayan süreci, kernel CVE yaması ve çözüm adımlarını detaylıca anlatıyorum.

VPS'in terminal ekranında swap kullanımının zirveye ulaştığını gösteren grafik.

Swap Kullanımının Aniden Artması: Semptomlar ve İlk Bulgular

Bu sabah sunucuma bağlandığımda, her zamanki gibi iş akışıma başlamadan önce sistem sağlığını kontrol etmek istedim. Ancak karşılaştığım manzara hiç de alışık olduğum gibi değildi. htop çıktısı, mysqld işleminin anormal derecede yüksek CPU ve RAM kullandığını gösteriyordu, ama asıl dikkatimi çeken şey swap kullanımının neredeyse tam kapasiteye ulaşmış olmasıydı. free -h komutuyla baktığımda, sistemin neredeyse tamamının swap alanını kullandığını gördüm. Bu durum, sunucunun performansını inanılmaz derecede düşürmüş, birçok servisin yanıt vermemesine neden olmuştu. Normalde bu sunucuda swap kullanımı minimum düzeyde seyreder, çünkü yeterli RAM’im var ve işlemler genellikle bellekte tutulur. Bu ani artışın kaynağını bulmak için derinlemesine bir inceleme yapmam gerekiyordu.

İlk tepkim, yakın zamanda yaptığım bir güncelleme olup olmadığını kontrol etmek oldu. Son bir haftalık apt history log kayıtlarını inceledim. Gördüğüm en belirgin değişiklik, birkaç gün önce otomatik olarak uygulanan bir Linux kernel güncellemesiydi: linux-image-6.5.0-27-generic. Bu güncellemenin, sistemdeki swap davranışını nasıl etkilediğini anlamak kritikti. Genellikle kernel güncellemeleri, performansı artırmak veya güvenlik açıklarını kapatmak için yapılır, ancak bazen beklenmedik yan etkilere yol açabilirler. Kendi VPS’imde yaşadığım bu tür durumlar, sistem mimarisinin her katmanında ne kadar dikkatli olmam gerektiğini bana sürekli hatırlatıyor.

Kernel Güncellemesi ve CVE Etkisi

Bu sorunun temelinde yatan nedeni bulmak için dmesg çıktılarını ve sistem loglarını incelemeye devam ettim. journalctl -xe komutu, son 24 saatteki hata mesajlarını detaylı bir şekilde gösteriyordu. Gördüğüm hata mesajları, özellikle bellek yönetimi ile ilgiliydi ve kernel’in belirli durumlar altında bellek tahsisinde zorlandığını ima ediyordu. Bu noktada aklıma gelen ilk şey, son kernel güncellemesinin beraberinde getirdiği güvenlik yamalarıydı. Herhangi bir CVE (Common Vulnerabilities and Exposures) numarasıyla ilişkili bir bellek yönetimi zafiyeti olup olmadığını araştırdım.

Linux kernel’in 6.5.x serisindeki son güncellemeleri incelerken, CVE-2026-31431 adında bir zafiyet dikkatimi çekti. Bu zafiyet, özellikle swap yönetimi ile ilgiliydi ve belirli koşullar altında kernel’in hatalı bellek okumalarına veya yazmalarına neden olabiliyordu. Bu durum, sistemin bellek yönetimini bozarak, beklenmedik bir şekilde swap kullanımının artmasına ve hatta sistemin kararsız hale gelmesine yol açabilirdi. Tam da benim yaşadığım senaryo ile örtüşüyordu. Güncelleme, bu zafiyeti kapatmak için yapılmıştı, ancak görünüşe göre yama, benim sistemimdeki belirli bir konfigürasyon veya kullanım paterni ile etkileşime girerek ters etki yaratmıştı.

Bu tür durumlar, “fix on break” (bozarak düzeltme) olarak adlandırılan bir yaklaşıma işaret ediyor. Güvenlik açığını kapatmak için yapılan bir değişiklik, bazen öngörülemeyen yeni sorunlara yol açabiliyor. Özellikle karmaşık sistemlerde, her bir yamanın tüm olası senaryoları test etmek oldukça zordur. Bu nedenle, üretim ortamına alınan her güncellemenin dikkatle izlenmesi ve olası sorunlara karşı hazırlıklı olunması gerekmektedir. Kendi VPS’imde bu tür bir sorunla karşılaşmak, bu prensibi bir kez daha acı bir şekilde bana hatırlattı.

Debugging: Swap’ı Tetikleyen Hata Ayıklama Süreci

Sorunun kaynağını genel olarak belirledikten sonra, daha detaylı bir hata ayıklama sürecine başladım. Amacım, hangi işlemin veya hangi sistem davranışının swap kullanımını bu denli tetiklediğini somut olarak ortaya koymaktı. strace komutu, bir işlemin yaptığı sistem çağrılarını ve aldığı sinyalleri izlemek için güçlü bir araçtır. Özellikle bellek tahsisiyle ilgili sorunları anlamak için malloc, mmap gibi çağrıları incelemek faydalı olabilir. Ancak, tüm sistem genelinde swap kullanımını artıran bir sorun olduğu için, daha geniş çaplı araçlara yöneldim.

perf aracı, Linux sistemlerinde performans analizi yapmak için harika bir seçenektir. perf top komutuyla, gerçek zamanlı olarak en çok CPU süresi harcayan işlemleri ve fonksiyonları görebilirsiniz. Ancak benim sorunum CPU’dan ziyade bellek ve swap kullanımıydı. Bu nedenle perf record -g -e page-faults,cycles,instructions,major-faults,minor-faults -- sleep 60 gibi komutlarla sistemdeki sayfa hatalarını (page faults) ve bellek erişimlerini kaydettim. Ardından perf report ile bu verileri analiz ettim. Kayıtlarda, mysqld işleminin ve kernel’in __handle_mm_fault fonksiyonunun yoğun olarak çağrıldığını gördüm. Bu, sistemin sürekli olarak diskten bellek sayfalarını swap alanına taşıdığını ve oradan geri okuduğunu gösteriyordu.

# Swap kullanımını anlık olarak izleme
watch -n 1 free -h

# Sistem loglarındaki bellek yönetimi ile ilgili hataları arama
sudo journalctl -xe | grep -i "memory\|swap\|oom\|fault"

# Belirli bir işlemin (örn: mysqld) sistem çağrılarını izleme
sudo strace -p $(pgrep mysqld) -s 256 -e trace=memory

Bu analizler sonucunda, sorunun doğrudan mysqld işleminin kendisinden ziyade, kernel’in swap yönetimi ile ilgili bir bug’ı tetiklediği sonucuna daha da yaklaştım. Özellikle gece saatlerinde gerçekleşen otomatik apt upgrade işlemi sonrası linux-image-6.5.0-27-generic paketinin yüklenmesi, sorunun başlangıç noktası olarak işaret ediyordu.

Çözüm: Yama Geri Alma ve Konfigürasyon Ayarlamaları

Sorunun kaynağını belirledikten sonra, ilk adımım soruna neden olan kernel sürümünü geçici olarak geri almak oldu. Bu, sistemin kararlı çalışmasını sağlamak ve daha fazla veri toplamak için kritikti. dpkg --list | grep linux-image komutuyla yüklü kernel imajlarını listeledim ve bir önceki kararlı sürüme geçiş yapmak için sudo apt remove linux-image-6.5.0-27-generic ve ardından sudo apt autoremove komutlarını kullandım. Daha sonra, güvenilir olduğuna emin olduğum önceki bir kernel sürümünü (örneğin linux-image-6.5.0-26-generic) sudo apt install linux-image-6.5.0-26-generic ile kurdum.

Sistemi yeniden başlattıktan sonra, eski kernel sürümü ile boot ettim. free -h komutunu tekrar çalıştırdığımda, swap kullanımının normale döndüğünü ve mysqld işleminin de artık anormal bellek kullanımı sergilemediğini gördüm. Bu, doğrudan yeni kernel sürümündeki bir bug’ın soruna neden olduğunu kesin olarak doğruluyordu. Ancak, sadece yamayı geri almak kalıcı bir çözüm değildi. Güvenlik açıkları hala mevcuttu ve bir noktada güncellenmesi gerekecekti.

Bu nedenle, bir sonraki adımım, yeni kernel sürümündeki ilgili CVE’yi geçici olarak devre dışı bırakmanın veya etkisini azaltmanın yollarını araştırmaktı. Kernel parametrelerini ayarlayarak veya sysctl ayarlarını değiştirerek swap davranışını yönetmek mümkündü. Özellikle vm.swappiness değeri, sistemin ne kadar agresif bir şekilde swap kullanacağını belirler. sysctl vm.swappiness=10 gibi bir ayar, sistemin swap kullanma isteğini azaltır. Ancak, bu tek başına sorunu çözmeyecekti çünkü sorun daha çok kernel’in kendisindeki bir hatadan kaynaklanıyordu.

Uzun Vadeli Çözümler ve Önleyici Tedbirler

Bu deneyim bana, üretim ortamındaki sunucularımda otomatik kernel güncellemelerinin potansiyel risklerini bir kez daha gösterdi. Bu tür kritik güncellemelerin otomatik olarak uygulanması yerine, belirli bir test sürecinden geçirilerek ve manuel olarak onaylandıktan sonra devreye alınması daha güvenli bir yaklaşım olacaktır. Bu, “canary deployment” veya “blue-green deployment” gibi stratejilerle, güncellemelerin önce küçük bir sunucu grubunda test edilip, ardından tüm sunuculara yayılmasını sağlayabilir.

Ayrıca, sistem izleme (monitoring) araçlarımı daha da geliştirmem gerektiğini fark ettim. Sadece CPU ve RAM kullanımını değil, aynı zamanda swap kullanımı, sayfa hataları (page faults) ve bellek tahsis hataları gibi metrikleri de yakından takip eden alarmlar kurmak, benzer sorunların erken tespit edilmesine yardımcı olacaktır. Prometheus ve Grafana gibi araçlarla bu tür detaylı metrikleri toplayıp görselleştirebilir ve anormallikler tespit edildiğinde otomatik bildirimler alabilirim. Bu, “observable systems” (gözlemlenebilir sistemler) prensibinin de bir parçasıdır.

Son olarak, bu tür bir sorunun tekrar yaşanması durumunda daha hızlı müdahale edebilmek için, temel sorun giderme adımlarını içeren bir “runbook” oluşturmayı planlıyorum. Bu runbook, swap kullanımının aniden artması gibi belirli senaryoları ele alacak ve adım adım hangi komutların çalıştırılacağını, hangi logların inceleneceğini ve hangi geçici çözümlerin uygulanabileceğini detaylandıracaktır. Bu tür hazırlıklar, kriz anlarında panik yapmadan, sistematik bir şekilde sorunu çözmeye yardımcı olur.

Bu süreçte öğrendiğim en önemli derslerden biri, teknik çözümlerin yanı sıra süreç ve izleme mekanizmalarının da en az kod kadar önemli olduğudur. Kendi VPS’imde yaşadığım bu swap yangını, sadece bir teknik problem değil, aynı zamanda altyapı yönetimindeki süreçlerimi de gözden geçirmem için bir fırsat oldu.

# sysctl ayarlarını kalıcı hale getirme (örn: /etc/sysctl.conf dosyasına ekleyerek)
# vm.swappiness = 10

Bu tür olaylar, teknolojinin sürekli evrildiğini ve her zaman yeni zorluklar sunabileceğini hatırlatıyor. Önemli olan, bu zorluklar karşısında sakin kalıp, sistematik bir yaklaşımla çözümler üretmektir.

# Önceki kernel sürümüne dönme ve güncellemeleri sabitleme örneği
# Yüklü kernel sürümlerini listele
dpkg --list | grep linux-image

# İstenmeyen sürümü kaldır
sudo apt remove linux-image-6.5.0-27-generic

# Önceki sürümü yükle (varsayılan olarak en son kurulu sürüm seçilir)
sudo apt install linux-image-6.5.0-26-generic

# Grub'u güncelle
sudo update-grub

# Gelecekteki otomatik güncellemelerde bu paketin kurulmasını engellemek için
sudo apt-mark hold linux-image-6.5.0-26-generic

Bu adımları uygulayarak, VPS’imdeki swap yangınını söndürmeyi başardım ve sistemimi tekrar stabil hale getirdim. Bu deneyim, altyapı yönetiminin sadece “çalışan” sistemler kurmak değil, aynı zamanda beklenmedik sorunlara karşı hazırlıklı olmak ve sürekli iyileştirme yapmak olduğunu gösterdi.

Paylaş:

Bu yazı faydalı oldu mu?

Yükleniyor...

Bu yazı nasıldı?

Sıkça Sorulanlar

Bu makale ile ilgili okurların sorduğu yaygın sorular.

VPS'imde aniden swap kullanımı artarsa, ilk olarak nelere dikkat etmeliyim?
Benim deneyimimde, VPS'imde aniden swap kullanımı arttığında, ilk olarak sistem güncellemelerini kontrol ediyorum. Özellikle yakın zamanda yapılan kernel güncellemelerini incelemekte fayda var, çünkü bu tür güncellemeler bazen beklenmedik yan etkilere yol açabilir. Ayrıca, sistemdeki işlemleri ve kaynak kullanımını kontrol etmek de önemlidir. `htop` ve `free -h` gibi araçları kullanmak, sistem hakkında daha detaylı bilgi edinmemi sağladı.
Kernel CVE yaması sonrası swap kullanımı artarsa, hangi adımları takip etmeliyim?
Ben kernel CVE yaması sonrası swap kullanımı arttığında, ilk olarak sistemdeki güncellemeleri kontrol ediyorum. Ardından, sistemdeki işlemleri ve kaynak kullanımını analiz ediyorum. Özellikle yüksek kaynak kullanan işlemleri tanımlamak ve optimize etmek önemlidir. Ayrıca, swap alanının boyutunu kontrol etmek ve gerekirse artırarak sistemin performansını iyileştirmek için adımlar atmaktayım.
Swap kullanımı arttığında, sistem performansı nasıl etkilenir?
Benim deneyimimde, swap kullanımı arttığında sistem performansı inanılmaz derecede düşer. İşlemler yavaşlar, birçok servis yanıt vermez ve genel olarak sistem çok yavaş hareket etmeye başlar. Bu nedenle, swap kullanımını minimum seviyede tutmak ve gerektiğinde optimize etmek çok önemlidir. sistem performansı için kritik öneme sahiptir.
VPS'imde swap kullanımı sorununu çözmek için hangi araçları kullanmalıyım?
Ben VPS'imde swap kullanımı sorununu çözmek için `htop`, `free -h` ve `apt history log` gibi araçları kullanıyorum. Bu araçlar, sistem hakkında detaylı bilgi sağlar ve sorunların kaynağını belirlemede yardımcı olurlar. Ayrıca, sistemdeki işlemleri ve kaynak kullanımını analiz etmek için çeşitli diğer araçları da kullanmaktayım. Doğru araçları kullanarak, swap kullanımı sorununu etkili bir şekilde çözebilir ve sistem performansı iyileştirebilirim.
ME

Mustafa Erbay

Sistem Mimarisi · Network Uzmanı · Altyapı, Güvenlik ve Yazılım

2006'dan bu yana sistem mimarisi, network, sunucu altyapıları, büyük yapıların kurulumu, yazılım ve sistem güvenliği ekseninde çalışıyorum. Bu blogda sahada karşılığı olan teknik deneyimlerimi paylaşıyorum.

Kişisel Notlar

Bu notlar sadece sizde saklanır. Tarayıcınızda yerel olarak tutulur.

Hazır 0 karakter

Yorumlar

Sunucu Taraflı AI Moderasyon

Yorumlar sunucuda yapay zeka ile denetlenir ve kalıcı olarak saklanır.

?
0/2000

Sunucu taraflı AI denetim

✉️ Ücretsiz · Spam yok · İstediğin an çık

Haftalık özet — AI değil, bizzat ben seçiyorum

Haftada bir mail: o haftanın en önemli yazısı, perde arkası notları, ve "bu hafta gerçekten kullandığım araç" bölümü. Az gürültü, çok sinyal.

  • 📌
    Haftanın en iyisi Sadece okumaya değer tek yazı
  • 🔧
    Alet çantası Bu hafta kullandığım araçlar
  • 🧠
    Perde arkası Blog'a girmeyen notlar

Spam yapmıyoruz. İstediğiniz zaman ayrılabilirsiniz. · Sadece Umami (self-hosted, Google yok) ile takip.

Okuma İstatistikleriniz

0

Yazı Okundu

0dk

Okuma Süresi

0

Gün Serisi

-

Favori Kategori

İlgili Yazılar