Swap Alanı Nedir? Sunucularda Sanal Bellek Yapılandırması. Sunucunuzun fiziksel belleği (RAM) dolduğunda, işletim sisteminin geçici olarak verileri depolamak için sabit disk üzerinde ayırdığı özel bir alana swap alanı veya takas alanı denir. Bu alan, RAM’in bir uzantısı gibi davranarak sistemin daha fazla uygulamayı veya işlemi aynı anda çalıştırmasına olanak tanır ve bellek yetersizliği nedeniyle oluşabilecek çökmeleri veya yavaşlamaları önler. Özellikle yoğun veritabanı işlemleri, büyük web uygulamaları veya sanallaştırma platformları çalıştıran sunucular için swap alanı, sistem kararlılığı ve performansı açısından hayati bir rol oynar.

Bir sunucunun performansındaki en kritik bileşenlerden biri fiziksel bellektir, yani RAM’dir. RAM, işlemcinin aktif olarak kullandığı verilere hızlı bir şekilde erişmesini sağlayan geçici bir depolama birimidir. Ancak RAM kapasitesi sınırlıdır ve sunucu üzerinde çalışan tüm uygulamalar, hizmetler ve işletim sistemi işlemleri bu sınırlı kaynağı paylaşır. Sunucudaki toplam bellek talebi, mevcut fiziksel RAM kapasitesini aştığında, işletim sistemi bir çözüm bulmak zorundadır. İşte bu noktada swap alanı devreye girer.
Swap alanının temel işlevi, RAM’de o an aktif olarak kullanılmayan ancak arka planda çalışmaya devam etmesi gereken bellek sayfalarını (memory pages) sabit diske taşımaktır. Bu işleme “swapping out” denir. Böylece, RAM’de yeni ve daha acil işlemler için yer açılmış olur. Daha sonra, diske taşınan bu verilere tekrar ihtiyaç duyulduğunda, işletim sistemi bu verileri swap alanından geri RAM’e yükler; bu işleme de “swapping in” adı verilir. Bu mekanizma, sistemin fiziksel RAM’den daha büyük bir bellek alanına sahipmiş gibi davranmasını sağlar ve bu kavrama sanal bellek denir.
Sunucu yönetiminde swap alanının önemi birkaç temel noktada toplanabilir:
Swap alanı, sabit disklerin RAM’e kıyasla çok daha yavaş olması nedeniyle bir performans kurtarıcısı olarak değil, bir güvenlik ağı olarak görülmelidir. Sistemin sürekli olarak swap alanını yoğun bir şekilde kullanması (thrashing), disk G/Ç (I/O) işlemlerini artırarak genel performansı ciddi şekilde düşürebilir. Bu durum, genellikle yetersiz RAM’in bir göstergesidir ve çözüm, swap alanını artırmak yerine fiziksel RAM kapasitesini yükseltmek olmalıdır.
Linux ve diğer Unix benzeri işletim sistemlerinde swap alanı yapılandırmak için temel olarak iki farklı yöntem bulunur: Swap Partition (Takas Bölümü) ve Swap File (Takas Dosyası). Her ikisi de aynı temel amaca hizmet etse de, oluşturulma, yönetilme ve performans açısından aralarında önemli farklar vardır.
Swap partition, sabit disk üzerinde yalnızca takas amacıyla ayrılmış özel bir disk bölümüdür. İşletim sistemi kurulumu sırasında genellikle ayrı bir bölüm olarak oluşturulur. Bu bölümün dosya sistemi yoktur ve doğrudan işletim sisteminin bellek yöneticisi tarafından kullanılır. Geleneksel olarak, performans açısından en iyi seçenek olarak kabul edilmiştir çünkü veriler bitişik bloklar halinde depolanır ve dosya sistemi katmanının getireceği ek yük ortadan kalkar. Ancak, modern dosya sistemleri ve hızlı SSD’ler ile bu performans farkı büyük ölçüde azalmıştır.
Swap file ise, mevcut bir dosya sistemi (örneğin ext4, XFS) içinde oluşturulan özel bir dosyadır. Tıpkı diğer dosyalar gibi diskte yer kaplar ancak işletim sistemi tarafından sanal bellek olarak kullanılır. Swap file kullanmanın en büyük avantajı esnekliğidir. Sunucu çalışırken bile kolayca oluşturulabilir, boyutu değiştirilebilir veya kaldırılabilir. Bu, özellikle disk bölümlendirmesini sonradan değiştirmenin zor olduğu durumlarda büyük bir kolaylık sağlar.
Aşağıdaki tablo, bu iki yaklaşım arasındaki temel farkları özetlemektedir.
| Özellik | Swap Partition (Takas Bölümü) | Swap File (Takas Dosyası) |
|---|---|---|
| Oluşturma Zamanı | Genellikle işletim sistemi kurulumu sırasında veya disk yeniden bölümlenerek oluşturulur. | İşletim sistemi çalışırken herhangi bir zamanda oluşturulabilir. |
| Esneklik | Düşük. Boyutunu değiştirmek için disk bölümleme araçları gerekir ve genellikle zordur. | Yüksek. Kolayca yeniden boyutlandırılabilir, eklenebilir veya silinebilir. |
| Performans | Geleneksel olarak daha hızlı kabul edilir, çünkü dosya sistemi katmanı yoktur. Modern sistemlerde fark azdır. | Dosya sistemi katmanı nedeniyle çok küçük bir ek yük getirebilir. Performans farkı genellikle ihmal edilebilir düzeydedir. |
| Yönetim Kolaylığı | Daha karmaşıktır. LVM gibi teknolojilerle yönetimi kolaylaştırılabilir. | Çok kolaydır. Standart Linux komutları (dd, fallocate, swapon) ile yönetilir. |
| Kullanım Senaryosu | Sabit ve öngörülebilir bellek ihtiyacı olan sunucular, eski sistemler. | Dinamik bellek ihtiyacı olan bulut sunucuları, VDS/VPS’ler, esnek yapılandırma gerektiren ortamlar. |
Sunucu yöneticileri için en esnek ve pratik yöntem swap dosyası oluşturmaktır. Aşağıda, bir Linux sunucusunda (Debian/Ubuntu/CentOS için geçerlidir) adım adım swap dosyası oluşturma süreci anlatılmaktadır.
İşlemlere başlamadan önce sistemde mevcut bir swap alanının olup olmadığını kontrol etmek önemlidir. Bu, aşağıdaki komutlardan biriyle yapılabilir:
sudo swapon --show
Eğer bu komut herhangi bir çıktı vermiyorsa, sistemde aktif bir swap alanı yapılandırılmamış demektir. Alternatif olarak `free -h` komutu da kullanılabilir. Çıktıdaki “Swap” satırı sıfır değerlerini gösteriyorsa, swap alanı yoktur.
Swap dosyası oluşturmak için `fallocate` veya `dd` komutları kullanılabilir. `fallocate` daha hızlıdır çünkü anında istenen boyutta bir dosya ayırır. Örneğin, 4 GB’lık bir swap dosyası oluşturalım:
sudo fallocate -l 4G /swapfile
Eğer `fallocate` komutu desteklenmiyorsa, `dd` komutu alternatif olarak kullanılabilir, ancak daha yavaştır:
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
Oluşturulan dosyanın yalnızca root kullanıcısı tarafından okunup yazılabilmesi için izinlerini ayarlamak güvenlik açısından kritiktir:
sudo chmod 600 /swapfile
Oluşturulan dosyayı bir swap alanı olarak işaretlemek için `mkswap` komutu kullanılır:
sudo mkswap /swapfile
Bu komut, dosyayı swap formatına dönüştürür. Son olarak, bu swap alanını sisteme tanıtmak ve hemen kullanmaya başlamak için `swapon` komutu çalıştırılır:
sudo swapon /swapfile
Artık `sudo swapon –show` veya `free -h` komutlarıyla yeni swap alanının aktif olduğunu doğrulayabilirsiniz.
Yukarıdaki adımlar swap alanını mevcut oturum için aktif hale getirir. Sunucu yeniden başlatıldığında bu ayarın kaybolmaması için `/etc/fstab` dosyasına eklenmesi gerekir. Dosyayı bir metin düzenleyici ile açın (örneğin, nano):
sudo nano /etc/fstab
Ve dosyanın sonuna aşağıdaki satırı ekleyin:
/swapfile none swap sw 0 0
Dosyayı kaydedip kapattıktan sonra, swap ayarınız kalıcı hale gelmiş olur.
İşletim sisteminin swap alanını ne kadar “agresif” kullanacağını belirleyen bir çekirdek (kernel) parametresi vardır. Bu parametre “swappiness” olarak adlandırılır ve 0 ile 100 arasında bir değer alır.
Mevcut swappiness değerini görmek için:
cat /proc/sys/vm/swappiness
Değeri geçici olarak değiştirmek için (örneğin 10’a ayarlamak):

sudo sysctl vm.swappiness=10
Bu ayarı kalıcı hale getirmek için `/etc/sysctl.conf` dosyasını düzenleyip sonuna `vm.swappiness=10` satırını eklemek gerekir.
Swap boyutunu belirlemek için kesin bir kural olmamakla birlikte, genel kabul görmüş bazı yaklaşımlar vardır:
Modern sunucularda bol miktarda RAM bulunduğu için, swap alanı genellikle acil durumlar için bir tampon olarak düşünülür. Bu nedenle, devasa boyutlarda swap alanı ayırmak yerine, sistemin bellek kullanımını izlemek ve gerekirse fiziksel RAM’i yükseltmek daha doğru bir stratejidir.