Skip to content
Bloga dön
Rehber Linux Swap Sistem Yönetimi Performans Ubuntu

Linux Üzerinde Swap Alanı Oluşturma ve Yönetimi: Pratik Adımlar ve Bellek Optimizasyonu

Linux sunucularda RAM yetersizliği durumlarında sistem çökmelerini önlemek ve bellek yönetimini optimize etmek için adım adım swap alanı oluşturma rehberi.

Caner Serbest

Sistem ve Altyapı

4 dk okuma

Linux Üzerinde Swap Alanı Oluşturma ve Yönetimi: Pratik Adımlar ve Bellek Optimizasyonu

Sistem yöneticiliği yaparken, sunucuların donanım kaynaklarıyla ilgili sınırlamalarla karşılaşmak kaçınılmazdır. Özellikle maliyet optimizasyonu yapılan bulut sunucularında (VPS) RAM miktarı bazen anlık yük artışlarını karşılamakta yetersiz kalabilir. Fiziksel RAM tükendiğinde Linux çekirdeği (kernel) OOM (Out of Memory) Killer mekanizmasını devreye sokarak kritik servisleri sonlandırır. Bu durum, üretim ortamındaki (production) uygulamalar için kabul edilemez bir kesinti sebebidir.

Bu tür bellek darboğazlarının önüne geçmenin en pratik ve etkili yollarından biri swap (takas) alanı kullanmaktır. Bu yazıda, Linux sunucularda swap alanının mantığını, nasıl oluşturulacağını, dosya tabanlı swap yönetimini ve performans optimizasyonu için dikkat edilmesi gerekenleri sahada uygulayabileceğiniz adımlarla inceleyeceğiz.


Swap Alanı Nedir ve Neden Gereklidir?

Swap, fiziksel RAM’in dolduğu durumlarda sabit diskin (veya SSD’nin) bir bölümünün geçici bellek alanı olarak kullanılmasına olanak tanıyan bir mekanizmadır. İşletim sistemi, o an aktif olarak kullanılmayan bellek sayfalarını (memory pages) bu alana taşıyarak fiziksel RAM’de yer açar.

Her ne kadar disk okuma/yazma hızları RAM’e göre çok daha yavaş olsa da, swap alanı sunucunun ani yük altında tamamen kilitlenmesini veya OOM Killer tarafından kritik servislerin öldürülmesini engeller. Özellikle:

  • Düşük RAM’li başlangıç sunucularında,
  • Derleme (compilation) gibi yoğun bellek tüketen işlemlerde,
  • Beklenmeyen trafik artışlarında

swap hayat kurtarıcı bir güvenlik ağı görevi görür.


Mevcut Bellek ve Swap Durumunu Kontrol Etme

Bir sunucuda işlem yapmadan önce mevcut durumu analiz etmek her zaman ilk adımdır. Sistemde halihazırda bir swap alanı olup olmadığını kontrol etmek için aşağıdaki komutu kullanabilirsiniz:

sudo swapon --show

Eğer çıktı boş dönüyorsa, sisteminizde aktif bir swap alanı bulunmuyor demektir. Genel bellek kullanımını ve swap miktarını da görmek için free komutundan faydalanabilirsiniz:

free -h

Bu komut size toplam RAM, kullanılan miktar ve mevcut swap kapasitesini insan tarafından okunabilir bir formatta (-h parametresi ile gigabayt/megabayt cinsinden) verecektir.


Adım Adım Swap Dosyası Oluşturma

Modern Linux dağıtımlarında swap alanı genellikle özel bir disk bölümü (partition) yerine bir dosya (swapfile) üzerinden yönetilir. Bu yaklaşım, boyutlandırma ve yönetim açısından büyük esneklik sağlar.

1. Swap İçin Dosya Ayırma

Öncelikle disk üzerinde belirleyeceğimiz boyutta boş bir dosya oluşturmalıyız. Swap boyutunun ne kadar olması gerektiği konusu sistemin RAM miktarına göre değişir. Genel kabul gören pratik yaklaşım şöyledir:

  • RAM miktarı 2 GB ve altı için: RAM miktarının 2 katı.
  • RAM miktarı 2 GB - 8 GB arası için: RAM miktarı ile aynı boyutta.
  • RAM miktarı 8 GB ve üzeri için: 4 GB ile 8 GB arası sabit bir alan genellikle yeterlidir.

Biz bu örnekte sunucumuza 2 GB boyutunda bir swap alanı ekleyeceğiz. fallocate komutunu kullanarak bu dosyayı hızlıca oluşturalım:

sudo fallocate -l 2G /swapfile

(Not: Eğer kullandığınız dosya sistemi fallocate komutunu desteklemiyorsa veya hata alırsanız, dd komutunu alternatif olarak kullanabilirsiniz: sudo dd if=/dev/zero of=/swapfile bs=1M count=2048)

2. Dosya İzinlerini Düzenleme

Oluşturduğumuz swap dosyası şu an herkes tarafından okunabilir durumdadır. Bu durum ciddi bir güvenlik açığı oluşturur, çünkü hassas bellek verileri bu dosyaya yazılacaktır. Dosya izinlerini yalnızca root kullanıcısının okuyup yazabileceği şekilde sıkılaştırmalıyız:

sudo chmod 600 /swapfile

İzinlerin doğru ayarlandığını ls -lh /swapfile komutu ile doğrulayabilirsiniz. Çıktıda -rw------- ibaresini görmelisiniz.

3. Dosyayı Swap Alanına Dönüştürme

Sisteme bu dosyanın bir swap alanı olduğunu tanıtmak için mkswap komutunu çalıştırıyoruz:

sudo sudo mkswap /swapfile

4. Swap Alanını Aktif Etme

Dosya hazır, şimdi çekirdeğin bu alanı kullanmaya başlamasını sağlamalıyız:

sudo swapon /swapfile

İşlemin başarılı olup olmadığını tekrar sudo swapon --show komutu ile kontrol edebilirsiniz. Artık 2 GB’lık swap alanınız aktif ve kullanıma hazırdır.


Kalıcılığı Sağlama (/etc/fstab Yapılandırması)

Şu ana kadar yaptığımız işlemler anlıktır. Sunucunuzu yeniden başlattığınızda (reboot) oluşturduğumuz swap alanı devre dışı kalacaktır. Bunu kalıcı hale getirmek için /etc/fstab dosyasına bir satır eklememiz gerekiyor.

Öncelikle olası bir hataya karşı mevcut fstab dosyasının yedeğini almak iyi bir alışkanlıktır:

sudo cp /etc/fstab /etc/fstab.bak

Ardından, dosyanın en sonuna ilgili konfigürasyonu ekliyoruz:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Bu satır, sistem her açıldığında /swapfile dosyasının otomatik olarak swap alanı olarak bağlanmasını sağlar.


Swappiness ve Vfs_cache_pressure Optimizasyonu

Swap alanını oluşturduk ancak Linux çekirdeğinin bu alanı ne kadar agresif kullanacağını belirleyen parametreleri optimize etmek performans açısından kritik önem taşır.

Swappiness Değeri Nedir?

swappiness, çekirdeğin RAM’deki verileri swap alanına ne sıklıkla taşıyacağını belirleyen bir değerdir. 0 ile 100 arasında bir sayı alabilir:

  • Düşük değerler (örn. 10): Çekirdek mecbur kalmadıkça swap kullanmaz, RAM’i sonuna kadar zorlar.
  • Yüksek değerler (örn. 60-100): Çekirdek verileri erken aşamada swap alanına taşımaya başlar.

Sunucunuzda performans kayıpları yaşamamak için bu değeri genellikle 10 veya 20 seviyelerine çekmek mantıklıdır. Mevcut swappiness değerini öğrenmek için:

cat /proc/sys/vm/swappiness

Geçici olarak değiştirmek için:

sudo sysctl vm.swappiness=10

Bu ayarın kalıcı olması için /etc/sysctl.conf dosyasının en altına şu satırı eklemelisiniz:

vm.swappiness=10

Vfs_cache_pressure Ayarı

Bir diğer önemli parametre ise dosya sistemi metadata önbelleğinin (inode ve dentry) ne kadar agresif bir şekilde serbest bırakılacağını kontrol eden vfs_cache_pressure değeridir. Varsayılan değer 100’dür. Eğer disk I/O işlemleriniz yoğunsa ve sistem sürekli disk önbelleğini temizliyorsa bu değeri artırmak (örneğin 50 yapmak) faydalı olabilir:

vm.vfs_cache_pressure=50

Swap Alanını Kaldırma veya Boyut Değiştirme

Eğer zamanla swap alanınızı büyütmeniz veya tamamen kaldırmanız gerekirse, izlemeniz gereken adımlar oldukça basittir. Swap alanını güvenli bir şekilde kapatmak için önce o alandaki verilerin RAM’e geri yüklenmesi gerekir (bu işlem RAM’in yeterli olduğu durumlarda sorunsuz çalışır):

sudo swapoff /swapfile

Swap kapandıktan sonra dosyayı tamamen silebilirsiniz:

sudo rm /swapfile

Unutmayın ki bu işlemi yaptıktan sonra /etc/fstab dosyasına eklediğiniz satırı da silmeniz gerekmektedir, aksi takdirde sunucu açılış sırasında hata verecektir.


Sonuç

Linux üzerinde swap alanı oluşturmak, sistem kararlılığını artırmak için atılması gereken en temel adımlardan biridir. Fiziksel RAM’in sınırlarına dayanılan anlarda sistemin çökmesini engelleyen bu yapı, doğru swappiness ayarlarıyla birleştiğinde üretim ortamlarında sorunsuz bir çalışma deneyimi sunar. Donanım maliyetlerini optimize ederken sistem güvenilirliğini artırmak için swap yönetimini altyapı standartlarınızın bir parçası haline getirebilirsiniz.


Bu yazı Gemini ile otomatik oluşturulmuştur.