LIONFIN
VPS & Sunucu

Linux Swap Alanı Oluşturma: Swap Dosyası, Boyut ve Swappiness

6 dk okuma Güncelleme: 1 görüntülenme
Linux Swap Alanı Oluşturma: Swap Dosyası, Boyut ve Swappiness

Swap alanı oluşturma, Linux’ta fiziksel bellek (RAM) tükendiğinde çekirdeğin az kullanılan bellek sayfalarını diske yazabileceği bir alan ayırmaktır. Swap olmayan bir sunucuda bellek dolduğunda çekirdeğin OOM killer (Out of Memory) mekanizması devreye girer ve çoğu zaman en çok bellek kullanan süreci, yani veritabanını ya da web sunucusunu kapatır.

Birçok VPS imajı swap olmadan gelir. LIONFIN VPS sunucuları KVM tabanlı olduğundan swap dosyası sorunsuz çalışır; aşağıdaki komutlar Ubuntu 24.04 LTS ve Debian 12–13 için yazılmıştır ve yeniden başlatma gerektirmez. Swap, VPS ilk kurulum adımları listesinin de son maddesidir.

Kısa cevap

Swap alanı oluşturma, RAM dolduğunda az kullanılan bellek sayfalarının diske taşınabilmesi için Linux’ta bir swap dosyası ya da bölümü tanımlamaktır. VPS’te en pratik yol swap dosyasıdır: fallocate -l 2G /swapfile, chmod 600, mkswap ve swapon komutlarıyla açılır, /etc/fstab satırıyla kalıcı yapılır. Swap ani bellek taşmalarında tampon görevi görür ama RAM’in yerini tutmaz; sürekli kullanılıyorsa bellek yükseltmesi gerekir.

Swap alanı nedir, ne zaman gerekir?

Swap, diskte ayrılmış ve çekirdeğin bellek baskısı altında kullandığı yedek bellek alanıdır. Disk RAM’den çok daha yavaş olduğu için swap’taki sayfalara erişim performansı düşürür; swap’ın değeri hızda değil, ani bir yükte servislerin kapatılmasını engellemesindedir. Şu durumlarda swap eklemek mantıklıdır:

  • RAM’i 1–2 GB olan küçük VPS’ler: paket güncellemesi, yedek sıkıştırma ya da derleme gibi kısa süreli işler belleği aşabilir.
  • Gece çalışan yedekleme, rapor ya da composer install gibi ara sıra çok bellek tüketen görevler.
  • Uzun süre boşta duran süreçlerin sayfalarını diske iterek dosya önbelleğine yer açmak.

Sürekli yüksek trafik altında belleğin yetmediği bir sunucuda ise swap sorunu çözmez, yalnızca yavaşlatarak erteler; bu ayrım son bölümde ele alınmıştır.

Sunucuda swap olup olmadığı nasıl kontrol edilir?

Swap durumunu swapon --show ve free -h komutları gösterir; ilk komut hiçbir çıktı vermiyorsa sunucuda etkin swap yoktur:

swapon --show
free -h
df -h /
df -T /

free -h çıktısındaki Swap: satırı toplam, kullanılan ve boş swap’ı; available sütunu ise yeni süreçlerin kullanabileceği gerçek belleği verir. df -h / ile swap dosyası için diskte yeterli boş alan olduğunu doğrulayın; dosya, boyutu kadar alanı hemen kaplar. df -T / kök dosya sisteminin türünü gösterir: aşağıdaki adımlar ext4 ve XFS için geçerlidir, Btrfs kullanıyorsanız swap dosyası için ayrı bir yöntem gerekir.

Swap alanı oluşturma adımları nelerdir?

Swap alanı oluşturma işlemi beş komutluk bir sıradır; örnekte 2 GB’lık bir dosya kullanılmıştır, boyutu bir sonraki bölümdeki tabloya göre seçin:

  1. Dosyayı ayırın: sudo fallocate -l 2G /swapfile
  2. Yalnızca root okuyabilsin: sudo chmod 600 /swapfile
  3. Dosyayı swap olarak biçimlendirin: sudo mkswap /swapfile
  4. Swap’ı etkinleştirin: sudo swapon /swapfile
  5. Sonucu doğrulayın: swapon --show ve free -h

swapon “holes” ya da “Invalid argument” hatası verirse dosya sistemi önceden ayrılmış dosyayı kabul etmiyordur; dosyayı silip dd ile sıfırlarla doldurarak yeniden oluşturun, ardından 2–5. adımları tekrarlayın:

sudo rm /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress

VPS’te bölüm (partition) yerine dosya kullanmak, disk düzenine dokunmadan boyutu değiştirmeyi kolaylaştırır.

Dikkat: Swap dosyasını 600 dışındaki izinlerle bırakmayın; dosyayı okuyabilen herkes bellekten diske yazılmış parolaları ve oturum verilerini görebilir.

Swap kalıcı nasıl yapılır?

swapon ile açılan swap yeniden başlatmada kaybolur; kalıcı olması için /etc/fstab dosyasına bir satır eklenir. Önce dosyanın yedeğini alın; tee komutunda -a parametresi unutulursa fstab’ın tamamı silinir:

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

Satırı yeniden başlatmadan sınamak için swap’ı kapatıp fstab’daki tüm swap alanlarını yeniden açın; swapon --show dosyayı listeliyorsa ayar doğrudur:

sudo swapoff /swapfile
sudo swapon -a
swapon --show

Satırı yalnızca bir kez ekleyin; komutu iki kez çalıştırmak aynı satırı iki kez yazar. grep swapfile /etc/fstab çıktısında tek satır görmelisiniz.

Swap alanı ne kadar olmalı?

Sunucularda swap, RAM’in katı olarak değil, ani taşmaları karşılayacak bir tampon olarak boyutlandırılır; hazırda bekletme (hibernation) kullanılmadığı için masaüstü kuralları geçerli değildir. Aşağıdaki değerler kesin bir kural değil, genel bir başlangıç noktasıdır:

RAMBaşlangıç swap boyutuNot
1 GB1–2 GBSwap’ın en çok fayda sağladığı durum
2 GB2 GBGüncelleme ve derleme anlarında tampon
4–8 GB2–4 GBSwap kullanımını izleyin
16 GB ve üzeri2–4 GBYalnızca güvenlik tamponu

Disk alanı sınırlı paketlerde swap’a ayırdığınız alan web dosyalarından ve yedeklerden düşer; dengeyi buna göre kurun. Veritabanı sunucularında büyük swap yerine yeterli RAM ve doğru ayarlanmış önbellek boyutları tercih edilir. RAM ihtiyacını sipariş öncesinde hesaplamak için VPS seçimi rehberine bakabilirsiniz.

Swappiness nedir, hangi değer seçilmeli?

vm.swappiness, çekirdeğin bellek baskısı altında sayfaları swap’a taşımaya ne kadar istekli olduğunu belirleyen bir değerdir; varsayılanı çoğu dağıtımda 60’tır. Web ve veritabanı sunucularında 10 civarı yaygın bir başlangıçtır; böylece RAM’de yer varken diske yazma azalır:

cat /proc/sys/vm/swappiness
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl --system

Ayarı /etc/sysctl.d/ altında ayrı bir dosyaya yazmak, yeniden başlatmadan sonra da korunmasını sağlar; bazı yeni dağıtım sürümleri /etc/sysctl.conf dosyasını artık okumadığından bu yol daha güvenlidir. Değeri 0 yapmak swap’ı kapatmaz ama çekirdeği son ana kadar beklemeye zorlar; bu da OOM riskini artırabilir.

Swap boyutu nasıl değiştirilir ya da swap nasıl kaldırılır?

Swap dosyasının boyutu, dosya kapatılıp yeniden oluşturularak değiştirilir; fstab satırı aynı kaldığı için ikinci kez eklemeniz gerekmez:

sudo swapoff /swapfile
sudo rm /swapfile
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

swapoff, swap’taki sayfaları RAM’e geri taşır; bellek doluyken bu adım uzun sürebilir ya da “Cannot allocate memory” hatasıyla durabilir, bu yüzden yoğun saatlerde yapmayın. Swap’ı tamamen kaldırmak için swapoff ve rm komutlarından sonra /etc/fstab içindeki /swapfile satırını silin.

Swap sürekli kullanılıyorsa ne yapılmalı?

Swap’ın arada bir dolması normaldir; sorun, sayfaların sürekli diske yazılıp geri okunmasıdır (thrashing). Bunu vmstat çıktısındaki si ve so sütunları gösterir; değerler sürekli sıfırdan büyükse sunucu swap’a bağımlı çalışıyordur. Aşağıdaki ilk komut bu sütunları saniyede bir, beş kez ölçer; ikincisi çekirdeğin OOM killer ile kapattığı süreçleri listeler:

vmstat 1 5
sudo journalctl -k | grep -i "out of memory"

Bu belirtiler varsa önce belleği hangi sürecin tükettiğini bulun; ölçüm komutları Linux sunucu performans izleme rehberindedir. PHP betiklerinin memory_limit sınırı ayrı bir konudur ve sunucu belleğiyle karıştırılmamalıdır; o ayar için PHP memory limit artırma rehberine bakın. Gerçek ihtiyaç arttıysa çözüm RAM’dir: LIONFIN VPS’lerinde kaynaklar sonradan artırılabilir, adımlar VPS kaynak yükseltme rehberinde. Ayrılmış kaynak isteyen iş yükleri için VDS sunucu de değerlendirilebilir.

Sık Sorulan Sorular

Swap dosyası mı swap bölümü mü daha iyi?

Güncel çekirdeklerde ext4 ve XFS üzerinde ikisi arasında pratik bir performans farkı yoktur. Swap dosyası, disk bölümlerine dokunmadan oluşturulup boyutu değiştirilebildiği için VPS’lerde daha esnek bir seçimdir. Swap bölümü daha çok kurulum sırasında disk planı yapılan fiziksel sunucularda tercih edilir. Btrfs gibi bazı dosya sistemlerinde swap dosyası ek ayar gerektirdiğinden önce dosya sistemi türünü kontrol edin.

Swap eklemek sunucuyu hızlandırır mı?

Doğrudan hızlandırmaz; disk RAM’den çok daha yavaş olduğu için swap’tan okunan her sayfa gecikme ekler. Swap’ın katkısı dolaylıdır: boşta duran süreçlerin sayfalarını diske taşıyarak dosya önbelleğine yer açabilir ve ani bellek taşmalarında servislerin kapatılmasını önler. Sunucu sürekli swap kullanıyorsa yavaşlama kaçınılmazdır; bu durumda bellek yükseltmesi ya da uygulama optimizasyonu gerekir.

OpenVZ ya da LXC tabanlı sunucuda swap oluşturulabilir mi?

Genellikle hayır. Konteyner tabanlı sanallaştırmada çekirdek ana makineyle paylaşıldığından swapon komutu “Operation not permitted” hatası verir ve bellek sınırını sağlayıcı belirler. KVM gibi tam sanallaştırmada ise her sunucunun kendi çekirdeği olduğu için swap dosyası, normal bir Linux makinesindeki gibi çalışır.

Swap kullanımı yüzde kaç olursa sorun vardır?

Yüzde tek başına iyi bir ölçüt değildir; swap’ta birkaç yüz megabayt verinin durması ve bu miktarın değişmemesi genellikle zararsızdır, çünkü bunlar uzun süredir kullanılmayan sayfalardır. Asıl işaret, vmstat çıktısındaki si ve so sütunlarının sürekli sıfırdan büyük olması ve buna eşlik eden yavaşlamadır. Bu tablo kalıcıysa bellek tüketen süreci küçültün ya da sunucunun RAM miktarını artırın.

Swap’ı geçici olarak kapatmak güvenli mi?

Boş bellek, swap’taki verileri karşılayacak kadar fazlaysa güvenlidir: sudo swapoff -a tüm swap alanlarını kapatır ve içeriklerini RAM’e geri yükler. Bellek yetersizse komut başarısız olur ya da sistemi yavaşlatır; önce free -h ile kullanılabilir belleğin swap’taki kullanımdan büyük olduğunu kontrol edin. Yeniden açmak için sudo swapon -a yeterlidir.

Bu makale yardımcı oldu mu?

Geri bildiriminiz için teşekkürler!

kişi faydalı buldu

Paylaş

X LinkedIn WhatsApp

Sorunuz mu var? Destek ekibimize yazın.