Linux sunucuda swap alanı oluşturma işlemi fallocate ile bir dosya ayırmak, mkswap ile onu swap biçimlendirmek ve swapon ile devreye almaktan ibarettir. Ubuntu 24.04 LTS üzerinde toplam süre bir dakikayı bulmaz. Asıl önemli olan, swap’ı ne için kurduğunuzu doğru anlamaktır — çünkü Minecraft sunucusunda yanlış yapılandırılmış bir swap, hiç swap olmamasından daha kötü sonuç verir.
Şöyle ki: swap alanı, fiziksel RAM dolduğunda çekirdeğin nadiren kullanılan bellek sayfalarını diske taşımasını sağlar. Sistem çökmek yerine yavaşlar. Bu bir emniyet ağıdır. Ama Java sanal makinesinin heap’i “nadiren kullanılan” bir bellek değildir; garbage collector düzenli aralıklarla heap’in tamamına dokunur. Heap’in bir kısmı diske taşınmışsa her GC döngüsü onlarca megabaytı geri okumaya dönüşür ve sunucu birkaç saniye tamamen durur.
Bu sayfada hem swap alanını doğru kurmayı hem de Minecraft sunucusunda onu zararsız hâle getirecek ayarları göreceksiniz. Kurulum /opt/minecraft/server dizininde çalışan bir Paper 26.2 sunucusu üzerinden anlatılıyor; Debian 12, AlmaLinux ve Rocky Linux için de adımlar aynıdır.
Swap Ne İşe Yarar, Ne İşe Yaramaz?#
Swap hakkında en yaygın yanlış inanış, onun “sanal RAM” olduğu ve bellek kapasitesini artırdığıdır. Teknik olarak bellek adres alanını genişletir, evet — ama hızı RAM’in binde biri kadardır. NVMe SSD’de bile erişim gecikmesi mikrosaniye, RAM’de nanosaniye ölçeğindedir. Aradaki fark üç büyüklük mertebesi.
| Senaryo | Swap yardımcı olur mu? | Açıklama |
|---|---|---|
| Sistem servisleri RAM’i tüketiyor | Evet | Uykudaki daemon’lar diske taşınır, Minecraft’a yer açılır |
| Ani bellek yükselmesi (chunk pregen, dünya dönüşümü) | Evet | OOM Killer devreye girmeden tepe noktası atlatılır |
| Java heap’i RAM’e sığmıyor | Hayır | Heap swap’a düşer, TPS çöker, sunucu donar |
-Xmx sınırı aşıldı, OutOfMemoryError | Hayır | Heap sınırı JVM tarafından uygulanır, swap ilgisizdir |
| Sürekli 20+ oyuncu, RAM %95 dolu | Hayır | Kalıcı çözüm RAM yükseltmektir |
| Hibernate / bellek dökümü alma | Evet | Sunucularda nadiren gerekir ama swap şarttır |
-Xmx10G verip “nasılsa swap var” demek, sunucunuzu birkaç dakika içinde saniyede 2-3 tick’e düşürür. Oyuncular blokların geri geldiğini, vuruşların işlemediğini ve sunucunun donduğunu bildirir. Doğru heap değerleri için RAM ayarları ve JVM flag’leri sayfasına bakın.Mevcut Swap Durumunu Kontrol Etme#
Yeni swap açmadan önce sistemde zaten bir tane olup olmadığına bakın. Ubuntu Server kurulumlarında bazen küçük bir swap bölümü otomatik oluşturulmuş olur.
# Aktif swap aygitlarini listele
swapon --show
# Bellek ve swap durumunu insan okunur bicimde gor
free -h
# fstab icinde tanimli swap satirlari
grep -i swap /etc/fstab
# Anlik swappiness degeri
cat /proc/sys/vm/swappiness
swapon --show hiçbir çıktı vermiyorsa sistemde swap yoktur. free -h çıktısındaki Swap satırında total değeri 0B görünüyorsa aynı sonuç. Bir bölüm (partition) tabanlı swap zaten varsa ve boyutu yeterliyse yeni bir dosya açmanıza gerek yok; doğrudan swappiness ayarına geçebilirsiniz.
fallocate ile Swapfile Oluşturma#
Modern yaklaşım swap bölümü değil swapfile kullanmaktır. Dosya tabanlı swap, disk bölümlemesini yeniden yapmadan büyütülebilir veya kaldırılabilir. Ubuntu 24.04’ün varsayılan ext4 dosya sisteminde fallocate saniyeler içinde iş görür.
-
Dosyayı ayırın#
Boyutu RAM’inize göre seçin. 8 GB RAM’li bir makinede 4-8 GB arası uygundur.
sudo fallocate -l 8G /swapfile ls -lh /swapfile -
İzinleri kısıtlayın#
Bu adım isteğe bağlı değildir. Swapfile bellek içeriğini barındırır; okuma izni herkese açık kalırsa parolalar ve oturum anahtarları sızabilir.
sudo chmod 600 /swapfile sudo chown root:root /swapfile -
Swap olarak biçimlendirin#
mkswapdosyaya swap başlığı yazar ve bir UUID atar.sudo mkswap /swapfile -
Devreye alın ve doğrulayın#
swaponkomutundan sonrafree -hçıktısında Swap satırı dolmalıdır.sudo swapon /swapfile swapon --show free -h
swapon --show çıktısında NAME sütununda /swapfile, TYPE sütununda file ve SIZE sütununda verdiğiniz boyut görünüyorsa iş tamam. USED sütunu ilk aşamada 0B olmalı; sistem henüz swap’a bir şey taşımadı demektir.
Btrfs veya eski dosya sistemleri: dd yöntemi#
Bazı dosya sistemlerinde fallocate ile ayrılan alan seyrek (sparse) olur ve mkswap “swapfile has holes” hatası verir. Bu durumda dosyayı gerçekten sıfırlarla doldurmanız gerekir.
# 8 GB'lik swapfile'i sifir yazarak olustur (birkac dakika surer)
sudo dd if=/dev/zero of=/swapfile bs=1M count=8192 status=progress
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
dd yöntemi fallocate kadar hızlı değildir çünkü 8 GB’lık veriyi fiilen diske yazar. NVMe SSD’de bir dakika, SATA SSD’de birkaç dakika sürer. status=progress parametresini eklerseniz ilerlemeyi görürsünüz; yoksa komut sessizce çalışır ve donmuş sanırsınız.
dd komutunda of= parametresini yanlış yazmak (örneğin /dev/sda gibi bir aygıta) diskinizin tamamını sıfırlarla ezer ve veriyi geri getirmenin yolu yoktur. Enter’a basmadan önce hedef yolu iki kez okuyun. Temel Linux komutlarının kullanımını tazelemek için sunucu yönetimi için Linux temel komutları sayfasına göz atabilirsiniz./etc/fstab ile Kalıcı Hâle Getirme#
swapon komutu yalnızca o an için geçerlidir; makine yeniden başladığında swap kaybolur. Kalıcı olması için /etc/fstab dosyasına bir satır eklemek gerekir.
# Once fstab'in yedegini alin
sudo cp /etc/fstab /etc/fstab.yedek
# Satiri ekleyin
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# Dogrulayin
grep swap /etc/fstab
Satırın alanları sırasıyla şunlardır: aygıt yolu, bağlama noktası (swap için none), dosya sistemi tipi (swap), seçenekler (sw), dump bayrağı ve fsck sırası. Son iki değer swap için daima 0 olur.
Değişikliği yeniden başlatmadan sınamak isterseniz swap’ı kapatıp fstab üzerinden yeniden açın:
sudo swapoff -a
sudo swapon -a
swapon --show
/etc/fstab satırı makinenin açılışta kurtarma moduna düşmesine sebep olur. Satırı ekledikten sonra mutlaka sudo swapon -a ile sınayın; hata verirse yeniden başlatmadan önce düzeltin. Bu yüzden yukarıda fstab’ın yedeğini aldık.swappiness: Çekirdeğe Ne Kadar İstekli Davranacağını Söylemek#
vm.swappiness parametresi 0 ile 200 arasında bir değer alır ve çekirdeğin sayfaları diske taşıma isteğini belirler. Ubuntu’nun varsayılanı 60’tır; bu değer masaüstü kullanımı için makuldür ama bir Minecraft sunucusunda felakettir çünkü RAM henüz dolmadan bile çekirdek heap sayfalarını swap’a taşımaya başlar.
| swappiness | Çekirdeğin davranışı | Minecraft sunucusu için |
|---|---|---|
0 | Neredeyse hiç swap kullanmaz, OOM riski artar | Önerilmez, çok agresif |
1 | Yalnızca son çare olarak swap’a gider | Bol RAM’li makinelerde uygun |
10 | Belirgin bellek baskısında devreye girer | Önerilen değer |
60 | Ubuntu varsayılanı, erken ve istekli | Heap swap’a düşer, TPS bozulur |
100+ | Dosya önbelleğiyle eşit öncelikte swap kullanır | Kesinlikle kullanmayın |
Değeri kalıcı olarak düşürmek için sysctl yapılandırma dosyası oluşturun:
# Anlik degisiklik (yeniden baslatinca kaybolur)
sudo sysctl vm.swappiness=10
# Kalici hale getir
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-minecraft.conf
# Dosya onbellegini de daha az agresif geri kazan
echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.d/99-minecraft.conf
# Uygula ve dogrula
sudo sysctl --system
cat /proc/sys/vm/swappiness
vm.vfs_cache_pressure değerini 50’ye çekmek, çekirdeğin dizin ve inode önbelleğini daha uzun süre RAM’de tutmasını sağlar. Minecraft sunucusu binlerce küçük dosyaya (bölge dosyaları, oyuncu verileri, eklenti yapılandırmaları) sürekli dokunduğu için bu ayar chunk yükleme gecikmesini gözle görülür biçimde azaltır.
-XX:+AlwaysPreTouch bayrağı işinize yarar. Bu bayrak başlangıçta heap’in tamamına dokunur, böylece sayfalar fiziksel belleğe yerleşir ve sonradan swap’a taşınma olasılığı azalır. Aikar’s Flags setinde bu bayrak zaten vardır; ayrıntısı Aikar’s Flags nedir sayfasında.free -h Çıktısını Doğru Okumak#
Swap kurduktan sonra en çok bakacağınız komut free -h. Çıktısı ilk bakışta kafa karıştırır; özellikle “available” ile “free” sütunlarının farkı.
free -h
# total used free shared buff/cache available
# Mem: 15Gi 11Gi 1.2Gi 12Mi 3.1Gi 3.8Gi
# Swap: 8.0Gi 0B 8.0Gi
- total
- Sistemdeki toplam fiziksel bellek. VDS’lerde ayırdığınız paket boyutundan biraz düşük görünür; çekirdek kendi payını ayırır.
- used
- Uygulamaların fiilen kullandığı bellek. Java sürecinizin
-Xmxdeğeri buraya yansır. - free
- Hiçbir amaçla kullanılmayan bellek. Sağlıklı bir Linux sunucusunda bu değerin düşük olması normaldir, panik yapmayın.
- buff/cache
- Çekirdeğin dosya önbelleği. İhtiyaç anında uygulamalara geri verilir, kayıp bellek değildir.
- available
- Asıl bakmanız gereken sütun. Uygulamaların swap’a gitmeden kullanabileceği tahmini bellek.
- Swap / used
- Sıfırdan büyükse sistem bir noktada bellek baskısı yaşamış demektir. Sürekli artıyorsa RAM yetmiyordur.
Swap kullanımını canlı izlemek için htop ekranındaki turuncu çubuk veya vmstat 5 çıktısındaki si (swap in) ve so (swap out) sütunları işinizi görür. Bu sütunlar sürekli sıfırdan farklıysa sunucu aktif olarak takas yapıyor ve TPS düşüşü kaçınılmazdır. İzleme araçlarının ayrıntısı htop, top ve iotop ile kaynak izleme sayfasında.
# Swap'i kim kullaniyor? Surec bazinda dokum
for f in /proc/[0-9]*/status; do
awk '/^Name|^VmSwap/{printf "%s ", $2}END{print ""}' "$f"
done | sort -k2 -n -r | head -n 10
# Anlik takas trafigi
vmstat 5 3
Swap’ı Kaldırma veya Yeniden Boyutlandırma#
Swap’ı büyütmek için mevcut dosyayı kapatıp yenisini oluşturmanız gerekir. Sıralamayı bozmayın.
# 1) Swap'i kapat (icerigi RAM'e geri tasinir, bos RAM yeterli olmali)
sudo swapoff /swapfile
# 2) Eski dosyayi sil
sudo rm /swapfile
# 3) Yenisini olustur
sudo fallocate -l 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 4) fstab satiri ayni kaldigi icin degisiklik gerekmez
swapon --show
swapoff komutu swap’taki tüm sayfaları RAM’e geri taşımaya çalışır. Swap’ta 6 GB veri varken boş RAM’iniz 2 GB ise komut ya çok uzun sürer ya da OOM Killer devreye girer ve Minecraft süreci öldürülür. Swap’ı kapatmadan önce sunucuyu durdurun; systemd servisi kullanıyorsanız sudo systemctl stop minecraft yeterlidir.Asıl Çözüm: Yeterli RAM#
Swap alanı bir güvenlik ağıdır, bir kapasite çözümü değil. Sunucunuz düzenli olarak swap kullanıyorsa okumanız gereken tek mesaj şudur: RAM yetmiyor. Bu noktada swappiness ile oynamak, zram denemek veya swap’ı büyütmek zaman kaybıdır; hepsi aynı sorunu farklı biçimde erteler. Bu noktada yapılacak en pahalı şey, birşey değişecek diye haftalarca ayar kurcalamaktır.
| Senaryo | Önerilen RAM | Java heap |
|---|---|---|
| 2-10 oyuncu, vanilla veya hafif eklentili | 8 GB | -Xms6G -Xmx6G |
| 10-30 oyuncu, eklentili Paper | 10-12 GB | -Xms10G -Xmx10G |
| 30-60 oyuncu, minigame veya çok dünyalı | 16 GB | -Xms14G -Xmx14G |
| Forge / Fabric modpack | 16 GB (büyük paketlerde 24-32 GB) | -Xms14G -Xmx14G |
| 60+ oyuncu veya proxy’li sunucu ağı | 32 GB ve üzeri | -Xms28G -Xmx28G |
Heap değerlerinin paket boyutundan düşük olmasına dikkat edin. İşletim sistemine, JVM’in heap dışı belleğine (metaspace, thread stack, doğrudan bellek) ve dosya önbelleğine en az 2 GB pay bırakmalısınız. Bu payı bırakmayıp -Xmx değerini RAM’e eşitlerseniz sistem zaten swap’a mahkûm olur.
İşlemci tarafında Minecraft’ın ana tick döngüsü tek çekirdekte çalışır; bu yüzden çekirdek sayısı değil saat hızı belirleyicidir. AMD Ryzen 9 7900X veya 7950X sınıfı işlemciler bu iş için doğru tercihtir, alt sınır olarak Ryzen 9 3900X kabul edilebilir. Disk tarafında NVMe SSD şarttır — hem chunk okuma gecikmesi için hem de swap gerektiğinde en azından sistemin kilitlenmemesi için. RAM yükseltmesi gerekiyorsa VDS’de RAM, CPU ve disk yükseltme zamanı sayfası karar vermenizi kolaylaştırır; hazır bir makine arıyorsanız Minecraft sunucu paketleri 8 GB’tan başlıyor.
Sık Karşılaşılan Hatalar#
| Hata / belirti | Sebep | Çözüm |
|---|---|---|
swapon: /swapfile: insecure permissions | Dosya izni 600 değil | sudo chmod 600 /swapfile |
swapon: /swapfile: swapfile has holes | Seyrek dosya (Btrfs, bazı FS’ler) | dd ile yeniden oluşturun |
swapon failed: Operation not permitted | Kapsayıcı tabanlı sanallaştırma | KVM tabanlı bir VDS gerekir |
| Açılışta kurtarma moduna düşüyor | fstab satırı hatalı | Kurtarma kabuğunda satırı düzeltin |
| Swap dolu, TPS 5’in altında | Heap swap’a düşmüş | -Xmx düşürün veya RAM ekleyin |
| Swap var ama hiç kullanılmıyor | Normal, bellek baskısı yok | Bir şey yapmayın, iyi işaret |
Son satır önemli: swap’ın kullanılmıyor olması bir sorun değil, hedeftir. Swap’a hiç dokunulmayan bir sunucu, RAM’i yeterli olan sunucudur. TPS düşüşü yaşıyorsanız ve swap kullanımı sıfırsa sorun başka yerdedir; TPS düşüklüğü ve çözüm yolları sayfası olası sebepleri sıralıyor.
Özetle#
Linux sunucuda swap alanı oluşturmak dört komutluk bir iştir: fallocate -l 8G /swapfile, chmod 600 /swapfile, mkswap /swapfile ve swapon /swapfile. Kalıcı olması için /etc/fstab dosyasına /swapfile none swap sw 0 0 satırını ekleyin, doğrulamayı free -h ve swapon --show ile yapın.
Minecraft sunucusunda kritik ayar vm.swappiness=10. Varsayılan 60 değeri, RAM henüz dolmadan Java heap’ini diske taşımaya başlar ve her garbage collection döngüsünde sunucuyu saniyelerce dondurur. Swap’ı acil durum yastığı olarak kurun, kapasite çözümü olarak değil. Sunucunuz düzenli swap kullanıyorsa yapılacak tek doğru şey RAM’i yükseltmektir — en düşük öneri 8 GB RAM, Ryzen 9 işlemci ve NVMe SSD’dir. Bellek hatalarını çözmeye çalışıyorsanız Out of Memory hatası çözümü sayfası bir sonraki durağınız olsun.