Takip et

Ubuntu 22.04 Üzerine Swap Alanı Ekleme Rehberi

Ubuntu 22.04 Üzerine Swap Alanı Ekleme Rehberi Ubuntu 22.04, modern Linux sistemlerinde olduğu gibi, sistem performansını artırmak ve bellek ye

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.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.