
Linux sunucunuzda bellek dolduğunda süreçlerin aniden kapandığını görüyorsanız, swap oluşturma işlemi atlanmış olabilir. Swap alanı, fiziksel RAM yetmediğinde az kullanılan bellek sayfalarının diske taşındığı bir taşma alanıdır ve doğru boyutlandırıldığında sunucunuzu beklenmedik çökmelere karşı korur. Bu rehberde Ubuntu 22.04/24.04 ve AlmaLinux 9 üzerinde swap dosyasının nasıl oluşturulacağını, kalıcı hale getirileceğini ve swappiness ayarıyla nasıl ince ayar yapılacağını adım adım anlatıyoruz.
Swap Alanı Nedir, Ne İşe Yarar?
Linux çekirdeği belleği sayfa adı verilen küçük bloklar halinde yönetir. RAM dolmaya başladığında çekirdek, uzun süredir dokunulmayan sayfaları swap alanına yazar ve RAM'de yer açar. Böylece aktif çalışan uygulamalar için bellek serbest kalır. Swap olmadığında ise çekirdeğin elinde tek bir seçenek kalır: OOM Killer (Out of Memory Killer) devreye girer ve bellek tüketen bir süreci, çoğu zaman da veritabanı ya da web sunucusu gibi en kritik olanı sonlandırır.
Burada önemli bir ayrımı baştan yapalım: swap, RAM'in yerini tutmaz. Disk, en hızlı NVMe SSD olsa bile RAM'den kat kat yavaştır. Swap'in asıl görevi, kısa süreli bellek sıçramalarında sunucunun ayakta kalmasını sağlamak ve hiç kullanılmayan sayfaları RAM'den uzaklaştırmaktır. Sunucunuz sürekli ve yoğun biçimde swap kullanıyorsa bu bir ayar sorunu değil, RAM yetersizliği işaretidir.
Swap Dosyası mı, Swap Bölümü mü?
Swap iki şekilde oluşturulabilir: ayrı bir disk bölümü (partition) ya da dosya sistemi üzerinde bir swap dosyası. Eskiden bölüm tercih edilirdi; bugün ise swap dosyası performans açısından pratikte aynı sonucu verir ve çok daha esnektir. Boyutunu değiştirmek için diski yeniden bölümlemeniz gerekmez. Sanal sunucularda disk düzeni çoğunlukla hazır geldiği için swap dosyası en mantıklı yöntemdir.
Mevcut Swap Durumunu Kontrol Etme
Yeni bir swap oluşturmadan önce sistemde zaten tanımlı bir swap olup olmadığına bakın. Birçok bulut ve sanal sunucu imajı swap olmadan gelir.
sudo swapon --show
free -h
swapon --show hiçbir çıktı vermiyorsa ya da free -h çıktısındaki Swap satırında toplam değer 0 görünüyorsa sistemde aktif swap yoktur. Ayrıca disk üzerinde yeterli boş alan olduğundan emin olun:
df -h /
Ne Kadar Swap Gerekir?
Swap boyutu için evrensel bir formül yoktur; iş yüküne göre değişir. Hazırda bekletme (hibernate) kullanılmayan sunucular için yaygın kabul gören pratik öneriler aşağıdaki gibidir:
| Sunucu RAM miktarı | Önerilen swap | Not |
|---|---|---|
| 1-2 GB | RAM ile aynı veya 2 katı | Küçük sunucularda swap hayati önem taşır |
| 4-8 GB | 2-4 GB | Web + veritabanı karışık iş yükleri için yeterli |
| 16-64 GB | 4-8 GB | Güvenlik payı olarak tutulur |
| 64 GB üzeri | 4-8 GB | Swap'e düşmek istisna olmalı |
RAM ihtiyacınızı doğru belirlemek swap'ten çok daha önemlidir. Bu konuyu ayrıntılı olarak VDS için kaç GB RAM gerektiğini anlattığımız yazıda ele aldık.
Adım Adım Swap Dosyası Oluşturma
Aşağıdaki adımlar Ubuntu 22.04, Ubuntu 24.04 ve AlmaLinux 9 için aynıdır. Örnekte 2 GB'lık bir swap dosyası oluşturuyoruz; boyutu kendi ihtiyacınıza göre değiştirin.
- Dosyayı ayırın.
fallocatekomutu alanı anında ayırır:sudo fallocate -l 2G /swapfile - fallocate desteklenmiyorsa dd kullanın. Bazı dosya sistemlerinde
swaponaşamasında hata alırsanız dosyayı silipddile yeniden oluşturun:sudo rm -f /swapfile sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress - İzinleri kısıtlayın. Swap dosyası bellek içeriği barındırabileceği için yalnızca root okuyabilmelidir:
sudo chmod 600 /swapfile - Swap olarak biçimlendirin.
sudo mkswap /swapfile - Etkinleştirin.
sudo swapon /swapfile - Doğrulayın.
sudo swapon --show free -h
Ubuntu ve AlmaLinux 9'un varsayılan dosya sistemleri olan ext4 ve XFS üzerinde fallocate sorunsuz çalışır. Btrfs kullanıyorsanız swap dosyası için ek adımlar (copy-on-write'ı kapatmak gibi) gerekir; bu durumda dağıtımınızın Btrfs belgelerine başvurun.
Swap'i Kalıcı Hale Getirme
swapon ile etkinleştirilen swap, sunucu yeniden başlatıldığında devre dışı kalır. Kalıcı olması için /etc/fstab dosyasına bir satır eklemeniz gerekir. Önce dosyanın yedeğini alın, çünkü fstab'daki bir hata sunucunun açılmasını engelleyebilir:
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Değişikliği yeniden başlatmadan test etmek için aşağıdaki komutları kullanabilirsiniz. swapon -a, fstab'daki tüm swap girdilerini etkinleştirir; hata vermiyorsa satır doğrudur:
sudo swapoff /swapfile
sudo swapon -a
sudo swapon --show
Bakım penceresinde bir kez gerçekten yeniden başlatıp swap'in otomatik geldiğini görmek en güvenilir doğrulamadır.
Swappiness ve vfs_cache_pressure Ayarları
Çekirdeğin swap'i ne kadar istekli kullanacağını vm.swappiness parametresi belirler. 0 ile 100 arasında (yeni çekirdeklerde 200'e kadar) bir değer alır ve çoğu dağıtımda varsayılan değer 60'tır. Değer yükseldikçe çekirdek bellek sayfalarını swap'e daha erken taşır; düştükçe RAM'de tutmayı tercih eder.
cat /proc/sys/vm/swappiness
Veritabanı ve web sunucusu çalıştıran sunucularda genellikle 10 gibi düşük bir değer tercih edilir. Böylece swap gerçekten gerektiğinde devreye girer. Değeri anlık değiştirmek için:
sudo sysctl vm.swappiness=10
Kalıcı yapmak için /etc/sysctl.d/ altına ayrı bir dosya oluşturmak, ana /etc/sysctl.conf dosyasını düzenlemekten daha düzenlidir:
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swap.conf
sudo sysctl --system
vm.vfs_cache_pressure ise çekirdeğin dosya sistemi meta verisi önbelleğini (inode ve dentry) ne kadar agresif boşaltacağını belirler. Varsayılan 100'dür. Çok sayıda küçük dosyaya erişen sunucularda (örneğin binlerce dosyalı PHP projeleri) 50 gibi bir değer, meta verinin bellekte daha uzun kalmasını sağlar:
echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.d/99-swap.conf
sudo sysctl --system
Bu değerleri değiştirdikten sonra birkaç gün boyunca sunucunun davranışını izleyin. Her iş yükü farklıdır ve tek doğru değer yoktur.
Swap Kullanımını İzleme
Swap'in var olması kadar nasıl kullanıldığı da önemlidir. Swap'te bir miktar veri bulunması tek başına sorun değildir; asıl sorun sürekli okuma ve yazma yapılmasıdır. Bunu vmstat ile görebilirsiniz:
vmstat 1 5
Çıktıdaki si (swap in) ve so (swap out) sütunları saniyede swap'e giren ve çıkan bellek miktarını gösterir. Bu değerler sürekli sıfırın üzerindeyse sunucu bellek baskısı altındadır ve performans düşer. Hangi süreçlerin swap kullandığını görmek için:
grep VmSwap /proc/*/status 2>/dev/null | sort -k2 -n -r | head
Daha kapsamlı izleme yöntemleri için htop, iostat ve vmstat ile performans izleme rehberimize göz atabilirsiniz.
Swap Boyutunu Değiştirme veya Kaldırma
Swap dosyasının en büyük avantajı kolayca yeniden boyutlandırılabilmesidir. Mevcut dosyayı büyütmek için önce devre dışı bırakın, sonra yeniden oluşturun:
sudo swapoff /swapfile
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
fstab satırı dosya adını kullandığı için değiştirmenize gerek yoktur. swapoff komutu, swap'teki verileri RAM'e geri taşımaya çalışır; boş RAM yetersizse komut başarısız olur. Bu nedenle bu işlemi sunucunun en sakin olduğu saatlerde yapın.
Swap'i tamamen kaldırmak isterseniz:
sudo swapoff /swapfile
sudo sed -i '/^\/swapfile /d' /etc/fstab
sudo rm /swapfile
Swap Oluşturma Sırasında Sık Yapılan Hatalar
- İzinleri unutmak:
chmod 600atlanırsaswapongüvensiz izin uyarısı verir ve diğer kullanıcılar bellek içeriğini okuyabilir hale gelir. - fstab satırını iki kez eklemek: Komutu tekrar çalıştırdığınızda aynı satır ikinci kez eklenir.
grep swapfile /etc/fstabile kontrol edin. - Disk dolu iken swap açmak: Kök dizinde yer kalmamışsa dosya oluşturulamaz ya da sistem günlükleri yazılamaz hale gelir. Swap için ayıracağınız alanın yanında en az birkaç GB boş alan bırakın.
- Swap'i RAM yerine görmek: 1 GB RAM'li sunucuya 8 GB swap ekleyip ağır bir uygulama çalıştırmak, sunucuyu ayakta tutar ama kullanılamayacak kadar yavaşlatır.
- Swappiness'ı test etmeden değiştirmek: Değerleri ezbere değil,
vmstatçıktısına bakarak ayarlayın.
Sanal Sunucularda Swap Kullanırken Dikkat Edilecekler
KVM gibi tam sanallaştırma kullanan sunucularda kendi çekirdeğiniz çalıştığı için swap dosyasını yukarıdaki gibi serbestçe oluşturabilirsiniz. Konteyner tabanlı bazı sanallaştırma türlerinde ise çekirdek ana makineyle paylaşıldığından swap oluşturma izni olmayabilir; bu durumda swapon komutu yetki hatası verir.
Disk tipi de swap performansını doğrudan etkiler. NVMe SSD üzerinde swap, klasik disklere göre çok daha az takılma yaratır; yine de RAM hızına yaklaşmaz. Bu nedenle swap'i bir sigorta gibi düşünün ve kalıcı bellek ihtiyacını RAM ile karşılayın. NVMe disk ve yeterli RAM ile gelen Türkiye lokasyonlu VDS paketlerini incelerken iş yükünüzün en yoğun anını göz önüne alın. Yüksek bellek bant genişliği isteyen uygulamalar için Ryzen 9 9950X tabanlı sunucular da değerlendirilebilir.
Veritabanı sunucularında swap'e düşmek sorgu sürelerini ciddi biçimde uzatır. Veritabanı bellek ayarlarını sunucu RAM'ine göre yapmak bu yüzden kritiktir; ayrıntılar için MySQL ve MariaDB performans ayarları yazımıza bakabilirsiniz.
Sık Sorulan Sorular
Swap oluşturmak sunucuyu yavaşlatır mı?
Hayır, swap'in var olması sunucuyu yavaşlatmaz. Yavaşlama, sunucu RAM'i yetmediği için sürekli swap'e yazıp okumaya başladığında olur. Doğru swappiness değeriyle swap yalnızca gerektiğinde kullanılır.
Swappiness değerini 0 yapmalı mıyım?
Önerilmez. Yeni çekirdeklerde 0 değeri swap'i neredeyse tamamen devre dışı bırakır ve bellek baskısında OOM Killer'ın daha erken devreye girmesine neden olabilir. Sunucular için 10 civarı bir değer daha dengelidir.
Birden fazla swap dosyası kullanabilir miyim?
Evet. Linux birden fazla swap alanını destekler ve swapon --show çıktısında hepsini görürsünüz. Ancak tek bir diskte birden fazla dosya kullanmanın performans avantajı yoktur; yönetimi basit tutmak için tek dosya yeterlidir.
Swap dosyası oluşturunca OOM hataları tamamen biter mi?
Kısa süreli bellek sıçramalarında büyük ölçüde önlenir. Ancak bir uygulamada bellek sızıntısı varsa swap da zamanla dolar. Kalıcı çözüm, sızıntıyı gidermek veya RAM'i artırmaktır.
Swap ayarları için sunucuyu yeniden başlatmam gerekir mi?
Hayır. swapon ve sysctl komutları değişiklikleri anında uygular. Yeniden başlatma yalnızca fstab ve sysctl.d ayarlarının kalıcılığını test etmek için önerilir.
Swap oluşturma işlemi beş dakikalık bir iştir, ama beklenmedik bir trafik artışında sunucunuzu ayakta tutan şey bu olabilir. Swap'i bir güvenlik ağı olarak kurun, RAM'i ise gerçek ihtiyacınıza göre seçin. Ölçeklenebilir kaynaklarla çalışmak isterseniz VPS sunucu seçeneklerine göz atabilir, kurulumda takıldığınız her an 7/24 destek ekibimize ulaşabilirsiniz.
Hizmet Sözleşmemiz
Web Koruma
İade Politikamız
