Ubuntu 22.04 Üzerine Swap Alanı Ekleme Rehberi
Ubuntu 22.04, modern Linux sistemlerinde olduğu gibi, sistem performansını artırmak ve bellek yetersizliği durumlarında sistemi kararlı tutmak için sanal bellek (swap alanı) kullanma yeteneğine sahiptir. RAM (Rastgele Erişim Belleği) yetersiz kaldığında, işletim sistemi disk üzerindeki önceden ayrılmış bir alanı RAM gibi kullanmaya başlar. Bu alana “swap alanı” denir. Geleneksel olarak swap alanı ayrı bir disk bölümü olarak oluşturulurken, günümüzde swap dosyaları daha yaygın ve esnek bir çözüm sunmaktadır. Bu rehberde, Ubuntu 22.04 sisteminize nasıl bir swap dosyası ekleyeceğinizi, etkinleştireceğinizi, kalıcı hale getireceğinizi ve optimize edeceğinizi adım adım anlatacağız.
Giriş: Swap Alanı Nedir ve Neden İhtiyaç Duyulur?
Sanal bellek veya swap alanı, bilgisayarınızın fiziksel RAM’i dolduğunda işletim sisteminin kullanabileceği bir tür “yedek” bellek görevi görür. RAM, işlemci tarafından doğrudan erişilen, hızlı ve geçici bir depolama birimidir. Ancak RAM’in kapasitesi sınırlıdır. Birden fazla uygulama çalıştırdığınızda, büyük dosyalarla uğraştığınızda veya sisteminiz yoğun bellek kullanan işlemler gerçekleştirdiğinde RAM dolabilir.
RAM dolduğunda, işletim sistemi daha az kullanılan veya beklemede olan bellek sayfalarını (veri bloklarını) sabit diskinizde özel olarak ayrılmış bir alana taşır. Bu işleme “swapping” veya “sayfalama” denir. İhtiyaç duyulduğunda, bu veriler tekrar RAM’e geri yüklenir. Bu süreç, sistemin kilitlenmesini veya yavaşlamasını önleyerek daha fazla uygulamanın aynı anda çalışmasına olanak tanır ve genel sistem kararlılığını artırır.
Swap Alanının Faydaları:
* Sistem Kararlılığı: RAM yetersiz kaldığında sistemin çökmesini veya donmasını engeller.
* Çoklu Görev Yeteneği: Aynı anda daha fazla uygulamanın çalışmasına olanak tanır.
* Performans Desteği: Özellikle bellek yoğun uygulamalar çalıştırılırken sistemin tepki süresini korumaya yardımcı olur.
* Hibernasyon Desteği (Bazı Durumlarda): Bazı sistemlerde, hibernasyon (uyku modu) için RAM içeriğinin tamamının diske yazılması gerekir ve bu genellikle swap alanı kullanılarak yapılır. Ancak swap dosyaları yerine swap bölümleri bu senaryo için daha yaygın kullanılır.
Ubuntu 22.04 kurulumu sırasında genellikle otomatik olarak bir swap alanı oluşturulur. Ancak bu, genellikle küçük boyutlu bir swap dosyasıdır veya bazı durumlarda hiç oluşturulmayabilir. Eğer sisteminizde bellek yetersizliği uyarıları alıyorsanız veya daha iyi bir performans arıyorsanız, manuel olarak bir swap alanı eklemek veya mevcut olanı genişletmek iyi bir fikir olabilir.
Swap Alanı Eklemeden Önce Bilmeniz Gerekenler
Swap alanı ekleme işlemine başlamadan önce birkaç önemli kontrol yapmanız gerekmektedir:
1. Mevcut Swap Durumunu Kontrol Etme
Sisteminizde zaten bir swap alanı olup olmadığını ve ne kadarının kullanıldığını kontrol etmek önemlidir. Bunu swapon veya free komutlarıyla yapabilirsiniz:
sudo swapon --show
Bu komut, etkin olan tüm swap alanlarını listeler. Eğer herhangi bir çıktı görmüyorsanız, sisteminizde şu anda etkin bir swap alanı yok demektir.
Alternatif olarak, genel bellek kullanımını gösteren free komutunu kullanabilirsiniz:
free -h
Çıktıda “Swap” satırına bakın. “Total” sütunu toplam swap alanını, “Used” kullanılan alanı ve “Free” boş alanı gösterir. Eğer “Total” değeri 0B ise, sisteminizde swap alanı yoktur.
2. Disk Alanını Kontrol Etme
Yeni bir swap dosyası oluşturmak için yeterli boş disk alanınız olduğundan emin olmanız gerekir. Swap dosyası, sisteminizin kök (/) bölümünde veya başka bir uygun bölümde oluşturulacaktır. Disk kullanımını kontrol etmek için df komutunu kullanın:
df -h
Bu komut, disk bölümlerinizin boyutunu, kullanılan alanı, boş alanı ve bağlama noktasını gösterir. Swap dosyasını oluşturmayı planladığınız bölümde (genellikle /) yeterli boş alan olduğundan emin olun.
3. Root Ayrıcalıkları
Swap alanı ile ilgili tüm işlemler root ayrıcalıkları gerektirir. Bu nedenle, aşağıdaki komutların çoğunu sudo ön ekiyle çalıştırmanız gerekecektir.
Adım 1: Swap Dosyası Oluşturma
Swap dosyası oluşturmak için fallocate komutunu kullanacağız. Bu komut, belirtilen boyutta bir dosya oluşturur ve anında diske yer ayırır, bu da dd komutuna göre daha hızlıdır.
Swap Dosyası Boyutunu Belirleme
Swap dosyasının boyutu, sisteminizin RAM miktarına ve kullanım alışkanlıklarınıza bağlıdır. İşte genel kabul görmüş bazı yönergeler:
* RAM < 2 GB: Swap alanı RAM’in 2 katı olmalıdır. (Örn: 1 GB RAM için 2 GB swap)
* RAM > 2 GB ve < 8 GB: Swap alanı RAM kadar olmalıdır. (Örn: 4 GB RAM için 4 GB swap)
* RAM > 8 GB: Swap alanı RAM’in yarısı kadar veya sabit 4-8 GB olabilir. (Örn: 16 GB RAM için 8 GB swap genellikle yeterlidir.)
* Hibernasyon Kullanımı: Eğer hibernasyon özelliğini kullanmayı planlıyorsanız, swap alanı en az RAM boyutunda veya biraz daha büyük olmalıdır.
Bu rehberde, 4 GB boyutunda bir swap dosyası oluşturacağız. Siz kendi ihtiyaçlarınıza göre boyutu ayarlayabilirsiniz.
sudo fallocate -l 4G /swapfile
* sudo: Komutu root ayrıcalıklarıyla çalıştırır.
* fallocate: Bir dosya için disk alanını önceden ayırır.
* -l 4G: 4 Gigabayt (G) boyutunda bir dosya oluşturur. (İsterseniz 8G veya 2G gibi farklı boyutlar belirleyebilirsiniz.)
* /swapfile: Swap dosyasının oluşturulacağı konum ve adı.
Alternatif (dd komutu): Eğer fallocate komutu sisteminizde yoksa veya sanal bir makinede çalışıyorsanız ve fallocate ile sorun yaşıyorsanız, dd komutunu kullanabilirsiniz. dd komutu daha yavaş çalışır çünkü sıfırları diske yazar.
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
* if=/dev/zero: Giriş dosyası olarak sıfırlarla dolu bir sanal cihazı kullanır.
* of=/swapfile: Çıktı dosyasının /swapfile olacağını belirtir.
* bs=1G: Her bir blok için 1 Gigabayt boyutunda bir blok boyutu belirler.
* count=4: Toplamda 4 blok kopyalanacağını belirtir, bu da 4 GB’lık bir dosya oluşturur.
Dosyanın başarıyla oluşturulduğunu kontrol etmek için:
ls -lh /swapfile
Çıktıda dosya boyutunu ve adını görmelisiniz, örneğin: -rw-r--r-- 1 root root 4.0G Mar 15 10:30 /swapfile.
Adım 2: Swap Dosyasına İzinleri Ayarlama
Swap dosyasının güvenliği kritik öneme sahiptir. Sadece root kullanıcısının bu dosyayı okuma ve yazma iznine sahip olması gerekir. Diğer kullanıcıların bu dosyaya erişimini engellemek, hassas sistem verilerinin açığa çıkmasını önler.
İzinleri ayarlamak için chmod komutunu kullanın:
sudo chmod 600 /swapfile
* chmod: Dosya izinlerini değiştirir.
* 600: Dosya sahibi için okuma (4) ve yazma (2) izinleri (toplam 6), diğer kullanıcılar için ise hiçbir izin (0) anlamına gelir.
İzinlerin doğru ayarlandığını kontrol etmek için:
ls -lh /swapfile
Çıktıda izinlerin -rw------- olarak başladığını görmelisiniz, bu da sadece root kullanıcısının okuma ve yazma iznine sahip olduğunu gösterir.
Adım 3: Swap Dosyasını Swap Alanı Olarak Biçimlendirme
Oluşturduğumuz dosyayı bir swap alanı olarak kullanabilmek için Linux çekirdeğinin anlayacağı bir formata dönüştürmemiz gerekir. Bu işlemi mkswap komutuyla yaparız:
sudo mkswap /swapfile
Bu komut, /swapfile dosyasını bir swap alanı olarak işaretler ve gerekli meta verileri yazar. Çıktı, swap dosyasının sürümünü, boyutunu ve bir UUID (Evrensel Benzersiz Tanımlayıcı) gibi bilgileri içerecektir:
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
no label, UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Adım 4: Swap Alanını Etkinleştirme
Swap dosyasını biçimlendirdikten sonra, sistemi bu alanı kullanmaya başlaması için etkinleştirmemiz gerekir. Bunu swapon komutuyla yaparız:
sudo swapon /swapfile
Bu komut, swap dosyasını hemen etkinleştirir.
Swap alanının başarıyla etkinleştirildiğini doğrulamak için swapon --show veya free -h komutlarını tekrar kullanın:
sudo swapon --show
Çıktıda /swapfile dosyasını, boyutunu ve önceliğini görmelisiniz.
NAME TYPE SIZE USED PRIO
/swapfile file 4G 0B -2
Veya free -h komutuyla:
free -h
Çıktıda “Swap” satırındaki “Total” değerinin 4 GB (veya belirlediğiniz boyut) olduğunu görmelisiniz.
Önemli Not: Bu adımda yapılan değişiklikler geçicidir. Sistem yeniden başlatıldığında, swap alanı otomatik olarak etkinleşmeyecektir. Swap alanının her başlangıçta otomatik olarak etkinleşmesini sağlamak için bir sonraki adımı uygulamanız gerekmektedir.
Adım 5: Swap Alanını Kalıcı Hale Getirme (fstab)
Sistemin her başlangıçta swap dosyasını otomatik olarak tanıması ve etkinleştirmesi için /etc/fstab dosyasına bir giriş eklememiz gerekir. Bu dosya, sistem başlangıcında hangi dosya sistemlerinin ve swap alanlarının bağlanacağını tanımlar.
1. fstab Dosyasını Yedekleme
Herhangi bir değişiklik yapmadan önce /etc/fstab dosyasını yedeklemek iyi bir uygulamadır. Bu, yanlış bir giriş yapmanız durumunda sistemi kurtarmanıza olanak tanır.
sudo cp /etc/fstab /etc/fstab.bak
2. fstab Dosyasını Düzenleme
Şimdi, /etc/fstab dosyasını bir metin düzenleyiciyle açın. nano veya vi gibi bir düzenleyici kullanabilirsiniz:
sudo nano /etc/fstab
Dosyanın sonuna aşağıdaki satırı ekleyin:
/swapfile none swap sw 0 0
Bu satırın anlamı:
* /swapfile: Swap dosyasının yolu.
* none: Dosya sistemi bağlama noktası, swap için geçerli değildir.
* swap: Dosya sistemi türü olarak swap olduğunu belirtir.
* sw: Swap alanı için kullanılan bağlama seçenekleri.
* 0: dump komutu tarafından yedeklenip yedeklenmeyeceğini belirtir (0 = yedekleme).
* 0: Sistem başlangıcında fsck tarafından kontrol edilip edilmeyeceğini belirtir (0 = kontrol etme).
Değişiklikleri kaydedin ve düzenleyiciden çıkın (Nano için Ctrl+O, Enter, Ctrl+X).
3. Değişiklikleri Doğrulama
/etc/fstab dosyasında yaptığınız değişikliklerin doğru olduğunu test etmek için, sistemi yeniden başlatmadan önce aşağıdaki komutu çalıştırabilirsiniz:
sudo mount -a
Bu komut, /etc/fstab dosyasında tanımlanan tüm dosya sistemlerini (ve swap alanlarını) yeniden bağlamaya çalışır. Eğer herhangi bir hata mesajı almazsanız, girişiniz muhtemelen doğrudur. Herhangi bir hata alırsanız, /etc/fstab dosyasını kontrol edin ve hatayı düzeltin.
Son olarak, sistemi yeniden başlatın ve swap alanının otomatik olarak etkinleştiğini free -h komutuyla kontrol edin.
sudo reboot
Yeniden başlatmanın ardından:
free -h
Swap alanının hala etkin olduğunu görmelisiniz.
Adım 6: Swap Ayarlarını Optimize Etme (Swappiness ve VFS Cache Pressure)
Linux çekirdeği, swap alanının ne zaman ve ne kadar kullanılacağını kontrol eden bazı ayarları içerir. Bu ayarları optimize ederek sistem performansını daha da artırabilirsiniz. En önemli iki ayar swappiness ve vfs_cache_pressure‘dır.
1. Swappiness Ayarı
swappiness değeri, çekirdeğin RAM’deki verileri ne kadar agresif bir şekilde swap alanına taşıyacağını belirler. Değer 0 ile 100 arasındadır:
* swappiness = 0: Çekirdek, RAM tamamen dolana kadar (çok acil durumlar hariç) verileri swap’a yazmaktan kaçınır. Bu, masaüstü sistemler için genellikle iyi bir ayardır, çünkü disk G/Ç’sini azaltarak tepki süresini artırır.
* swappiness = 100: Çekirdek, verileri mümkün olduğunca sık swap alanına taşır. Bu, sunucular gibi bellek kullanımının yüksek olduğu ancak tepki süresinin daha az kritik olduğu durumlar için uygun olabilir.
* Varsayılan (swappiness = 60): Çoğu Ubuntu sisteminde varsayılan değer 60’tır. Bu, RAM’in yaklaşık %40’ı boşken bile çekirdeğin swap yapmaya başlayabileceği anlamına gelir.
Mevcut swappiness değerini kontrol etmek için:
cat /proc/sys/vm/swappiness
Masaüstü kullanıcıları için genellikle 10 veya 20 gibi daha düşük bir swappiness değeri önerilir. Bu, sistemin daha uzun süre RAM’i kullanmasını sağlar ve disk G/Ç’sini azaltır.
Geçici olarak değiştirmek için:
sudo sysctl vm.swappiness=10
Bu değişiklik sadece mevcut oturum için geçerlidir.
Kalıcı olarak değiştirmek için:
/etc/sysctl.conf dosyasını düzenlemeniz gerekir:
sudo nano /etc/sysctl.conf
Dosyanın sonuna aşağıdaki satırı ekleyin:
vm.swappiness=10
Kaydedin ve çıkın. Değişiklikleri hemen uygulamak için:
sudo sysctl -p
2. VFS Cache Pressure Ayarı
vfs_cache_pressure değeri, çekirdeğin inode ve dentry önbelleklerini (dosya sistemi meta verileri) ne kadar agresif bir şekilde geri kazanacağını kontrol eder. Değer 0 ile 100 arasındadır:
* vfs_cache_pressure = 0: Çekirdek, inode ve dentry önbelleklerini neredeyse hiç geri kazanmaz, bu da çok fazla RAM kullanılmasına neden olabilir.
* vfs_cache_pressure = 100 (Varsayılan): Çekirdek, inode ve dentry önbelleklerini hızlı bir şekilde geri kazanır. Bu, önbelleklerin RAM’de çok fazla yer kaplamasını önler ancak dosya sistemi işlemlerinde performansı biraz düşürebilir.
Mevcut vfs_cache_pressure değerini kontrol etmek için:
cat /proc/sys/vm/vfs_cache_pressure
Çoğu sistemde varsayılan değer 100’dür. Genellikle bu değeri değiştirmeye gerek yoktur, ancak bazı durumlarda 50 gibi daha düşük bir değer, dosya sistemi önbelleklerinin RAM’de daha uzun süre kalmasına izin vererek performansı artırabilir.
Geçici olarak değiştirmek için:
sudo sysctl vm.vfs_cache_pressure=50
Kalıcı olarak değiştirmek için:
/etc/sysctl.conf dosyasını düzenleyin ve vm.vfs_cache_pressure=50 satırını ekleyin (veya mevcutsa değiştirin):
sudo nano /etc/sysctl.conf
Dosyanın sonuna aşağıdaki satırı ekleyin:
vm.vfs_cache_pressure=50
Kaydedin ve çıkın. Değişiklikleri hemen uygulamak için:
sudo sysctl -p
Swap Alanını Kaldırma (İsteğe Bağlı)
Eğer gelecekte swap alanını kaldırmak isterseniz veya boyutunu değiştirmek için baştan başlamak isterseniz, aşağıdaki adımları izleyebilirsiniz:
1. Swap Alanını Devre Dışı Bırakma
Öncelikle, etkin olan swap dosyasını devre dışı bırakın:
sudo swapoff /swapfile
2. fstab Girişini Silme
/etc/fstab dosyasını düzenleyerek /swapfile ile ilgili satırı silin:
sudo nano /etc/fstab
Aşağıdaki satırı bulun ve silin:
/swapfile none swap sw 0 0
Kaydedin ve çıkın.
3. Swap Dosyasını Silme
Son olarak, swap dosyasını diskten silin:
sudo rm /swapfile
Swap alanının tamamen kaldırıldığını doğrulamak için free -h komutunu kullanabilirsiniz.
Sorun Giderme ve Yaygın Hatalar
Swap alanı eklerken veya yönetirken karşılaşabileceğiniz bazı yaygın sorunlar ve çözümleri:
* “fallocate: /swapfile: No space left on device” hatası: Bu hata, swap dosyasını oluşturmak istediğiniz disk bölümünde yeterli boş alan olmadığı anlamına gelir. df -h komutuyla disk kullanımınızı kontrol edin ve gereksiz dosyaları silerek yer açın veya daha küçük bir swap dosyası oluşturun.
* “mkswap: /swapfile: Permission denied” hatası: Bu genellikle chmod 600 /swapfile komutunu çalıştırmadığınız veya sudo kullanmadığınız anlamına gelir. Dosya izinlerini doğru ayarladığınızdan emin olun.
* “swapon: /swapfile: read swap header failed: Invalid argument” hatası: Bu hata, swap dosyasının mkswap komutuyla doğru şekilde biçimlendirilmediğini gösterir. sudo mkswap /swapfile komutunu tekrar çalıştırdığınızdan emin olun.
* Sistem yeniden başlatıldıktan sonra swap etkinleşmiyor: /etc/fstab dosyasındaki girişin doğru olup olmadığını kontrol edin. Yazım hataları veya yanlış parametreler bu soruna neden olabilir. sudo mount -a komutuyla fstab girişini test edin.
* “dd: failed to open ‘/swapfile’: Permission denied” hatası: dd komutunu sudo ile çalıştırmadığınız anlamına gelir.
* Swap alanı beklenen performansı sağlamıyor: swappiness ve vfs_cache_pressure ayarlarınızı gözden geçirin. Bazen çok düşük swappiness değeri, sistemin RAM’i aşırı derecede doldurmasına ve anlık olarak yavaşlamasına neden olabilir. Optimizasyon ayarlarını kendi sisteminize ve kullanım alışkanlıklarınıza göre denemek en iyisidir.
Sonuç
Ubuntu 22.04 sisteminize swap alanı eklemek, özellikle sınırlı RAM’e sahipseniz veya bellek yoğun uygulamalar çalıştırıyorsanız, sistem performansını ve kararlılığını önemli ölçüde artırabilir. Bu rehberde, bir swap dosyası oluşturmaktan, izinlerini ayarlamaya, biçimlendirmeye, etkinleştirmeye ve sistem başlangıcında kalıcı hale getirmeye kadar tüm adımları detaylı bir şekilde ele aldık. Ayrıca, swappiness ve vfs_cache_pressure gibi çekirdek parametrelerini optimize ederek swap kullanımını kendi ihtiyaçlarınıza göre ayarlamayı da öğrendik.
Unutmayın ki swap alanı, RAM’in yerini tutmaz; sadece bir yedekleme mekanizmasıdır. Mümkünse, sisteminize fiziksel RAM eklemek her zaman en iyi performans artışını sağlayacaktır. Ancak, fiziksel bellek ekleyemediğiniz durumlarda veya ek bir performans katmanı sağlamak için swap alanı mükemmel bir çözümdür. Her adımda sudo komutunu kullanmaya ve dosya izinlerine dikkat etmeye özen gösterin. Bu adımları dikkatlice takip ederek Ubuntu 22.04 sisteminizin daha verimli çalışmasını sağlayabilirsiniz.