Ubuntu 18.04 Üzerine Takas Alanı (Swap Space) Ekleme Kapsamlı Rehberi
Ubuntu 18.04, uzun süreli destek (LTS) sürümü olması nedeniyle birçok sunucu ve kişisel bilgisayar kullanıcısı tarafından tercih edilmeye devam etmektedir. Her ne kadar yeni Ubuntu sürümleri takas dosyalarını varsayılan olarak oluştursa da, 18.04 ve önceki sürümlerde bu durum her zaman geçerli değildir. Özellikle düşük RAM’e sahip sistemlerde veya belirli uygulamaların yoğun bellek kullanımı gerektirdiği durumlarda, sistem performansını artırmak ve kararlılığı sağlamak için takas alanı (swap space) eklemek hayati önem taşır. Bu kapsamlı rehberde, Ubuntu 18.04 işletim sistemi üzerinde takas alanı oluşturma, etkinleştirme, kalıcı hale getirme ve optimize etme adımlarını detaylı bir şekilde inceleyeceğiz.
Takas Alanı Nedir ve Neden Önemlidir?
Takas alanı, bilgisayarınızın fiziksel belleği (RAM) dolduğunda işletim sisteminin kullanabileceği bir disk alanıdır. RAM, hızlı erişim sağlayan geçici bir depolama birimi iken, takas alanı daha yavaş olan sabit diskin bir bölümünü veya ayrı bir takas bölümünü kullanır. İşletim sistemi, aktif olarak kullanılmayan bellek sayfalarını RAM’den takas alanına taşıyarak RAM’de yeni uygulamalar veya veriler için yer açar. Bu süreç “sayfalama” (paging) olarak bilinir.
Takas alanının önemi birkaç açıdan ele alınabilir:
* Bellek Yetersizliğini Giderme: En belirgin faydası, sistemin RAM’i tükendiğinde çökmesini veya donmasını engellemektir. Takas alanı sayesinde, sistem bellek yetersizliği nedeniyle kritik süreçleri sonlandırmak zorunda kalmaz.
* Performans Stabilizasyonu: Özellikle birden fazla uygulama çalıştıran veya bellek yoğun görevler yürüten sistemlerde, takas alanı ani bellek taleplerini karşılayarak genel sistem performansının daha istikrarlı olmasına yardımcı olur.
* Hazırda Bekletme (Hibernation): Birçok Linux dağıtımında, hazırda bekletme (uyku modundan farklı olarak, sistemin tüm durumunu diske yazıp gücü tamamen kesme) işlevi için takas alanı gereklidir. Hazırda bekletme durumunda, RAM’deki tüm içerik takas alanına yazılır ve sistem açıldığında buradan geri yüklenir. Bu nedenle, hazırda bekletme kullanmayı planlıyorsanız, takas alanınızın RAM boyutundan en az bir miktar daha büyük olması gerekir.
* Bellek Yoğun Uygulamalar: Veritabanı sunucuları, sanallaştırma yazılımları, video düzenleme programları veya büyük veri analizi araçları gibi bellek yoğun uygulamalar, takas alanına sahip olmaktan büyük fayda sağlar. Bu tür uygulamalar, beklenenden daha fazla bellek kullandığında takas alanı bir tampon görevi görür.
Ancak takas alanı, RAM’in bir yedeği veya yerine geçecek bir çözüm değildir. Sabit diskler, RAM’e göre çok daha yavaş olduğu için, sistemin yoğun bir şekilde takas alanını kullanması (thrashing) genel performansta ciddi düşüşlere neden olabilir. Bu nedenle, takas alanı sadece RAM’in dolduğu anlarda bir “can simidi” olarak görülmeli ve ideal olan her zaman yeterli RAM’e sahip olmaktır.
Takas Alanı İhtiyacınızı Belirleme
Takas alanı eklemeden önce, mevcut sisteminizin takas durumu ve ihtiyacı hakkında bilgi edinmek önemlidir.
Mevcut Takas Durumunu Kontrol Etme
Sisteminizde zaten bir takas alanı olup olmadığını veya ne kadar kullanıldığını öğrenmek için aşağıdaki komutları kullanabilirsiniz:
* free -h: Bu komut, sistemin toplam, kullanılan ve boş RAM miktarını, ayrıca takas alanının durumunu (toplam, kullanılan, boş) kullanıcı dostu bir formatta gösterir.
$ free -h
total used free shared buff/cache available
Mem: 3.8G 1.2G 1.5G 143M 1.1G 2.2G
Swap: 0B 0B 0B
Yukarıdaki örnekte Swap: 0B çıktısı, sistemde henüz bir takas alanı olmadığını gösterir.
* swapon --show: Bu komut, etkin takas alanlarını ve bunların hangi dosya veya bölümden geldiğini gösterir. Eğer hiçbir çıktı vermiyorsa, aktif bir takas alanı yoktur.
$ swapon --show
# (çıktı yoksa takas alanı yok demektir)
* sudo apt install htop (isteğe bağlı): htop görsel bir sistem izleme aracıdır ve RAM ile takas alanı kullanımını grafiksel olarak takip etmenizi sağlar. Kurulumdan sonra htop komutu ile çalıştırabilirsiniz.
Önerilen Takas Alanı Boyutları
Takas alanının boyutu konusunda farklı görüşler olsa da, genel kabul görmüş bazı yönergeler bulunmaktadır. Özellikle Ubuntu 18.04 gibi eski sürümlerde veya düşük RAM’li sistemlerde bu yönergeler daha kritik hale gelir.
* 1 GB RAM veya Daha Az: RAM’inizin en az iki katı (örn. 1 GB RAM için 2 GB takas).
* 2 GB – 4 GB RAM: RAM’inizle aynı boyutta veya RAM’inizin iki katı (örn. 2 GB RAM için 2-4 GB takas).
* 4 GB – 8 GB RAM: RAM’inizin yarısı veya RAM’inizle aynı boyutta (örn. 8 GB RAM için 4-8 GB takas).
* 8 GB RAM veya Daha Fazla: Minimum 2 GB veya RAM’inizin yarısı (örn. 16 GB RAM için 4-8 GB takas).
* Hazırda Bekletme Kullanılacaksa: Takas alanı, RAM boyutundan en az bir miktar daha büyük olmalıdır (örn. 8 GB RAM için 9-10 GB takas).
Unutulmamalıdır ki, modern sistemlerde genellikle çok fazla takas alanına ihtiyaç duyulmaz çünkü yeterli RAM mevcuttur. Ancak sanal makineler, veritabanı sunucuları veya geliştirme ortamları gibi belirli senaryolarda daha büyük takas alanları faydalı olabilir.
Takas Alanı Ekleme Adımları
Ubuntu 18.04 üzerinde takas alanı eklemek için bir takas dosyası oluşturma yöntemini kullanacağız. Bu yöntem, ayrı bir takas bölümü oluşturmaktan daha esnek ve kolaydır.
1. Takas Dosyası Oluşturma
Takas dosyası oluşturmak için fallocate komutunu kullanacağız. Bu komut, belirtilen boyutta bir dosya oluşturur ve diske anında yer ayırır.
sudo fallocate -l 4G /swapfile
Yukarıdaki komut, kök dizininde (root) swapfile adında 4 GB boyutunda bir takas dosyası oluşturur. İhtiyaçlarınıza göre 4G değerini 2G, 8G vb. değiştirebilirsiniz.
Eğer fallocate komutu sisteminizde yoksa veya bir hata verirse, daha yavaş ama alternatif olan dd komutunu kullanabilirsiniz:
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
Bu komut, /dev/zero‘dan boş veri okuyarak /swapfile dosyasına yazar. bs=1M her seferinde 1 MB veri yazılacağını, count=4096 ise bu işlemin 4096 kez tekrarlanacağını belirtir, bu da toplamda 4096 MB (4 GB) bir dosya anlamına gelir.
2. Dosya İzinlerini Ayarlama
Takas dosyası, hassas sistem verilerini içerebileceği için sadece root kullanıcısı tarafından okunabilir ve yazılabilir olmalıdır. Bu, diğer kullanıcıların takas dosyasına erişmesini engelleyerek güvenlik sağlar.
sudo chmod 600 /swapfile
* chmod 600: Bu izin ayarı, dosya sahibi (root) için okuma ve yazma (rw) izni verirken, grup ve diğer kullanıcılar için hiçbir izin vermez.
Bu adımı atlamak, takas alanının etkinleştirilememesine veya güvenlik açıkları oluşmasına neden olabilir.
3. Takas Alanını Biçimlendirme
Oluşturduğumuz dosyayı bir takas alanı olarak kullanabilmek için mkswap komutu ile biçimlendirmemiz gerekir.
sudo mkswap /swapfile
Bu komut, takas dosyasını bir takas bölümü olarak işaretler ve gerekli meta verileri yazar. Çıktı genellikle şöyle olacaktır:
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
no label, UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
4. Takas Alanını Etkinleştirme
Takas dosyasını sistemde hemen kullanmaya başlamak için swapon komutunu kullanırız.
sudo swapon /swapfile
Bu komut, oluşturduğumuz takas dosyasını etkinleştirir ve sistemin bellek yönetimi tarafından kullanılabilir hale getirir.
5. Doğrulama
Takas alanının başarıyla etkinleştirilip etkinleştirilmediğini kontrol etmek için tekrar free -h ve swapon --show komutlarını kullanabiliriz.
$ free -h
total used free shared buff/cache available
Mem: 3.8G 1.2G 1.5G 143M 1.1G 2.2G
Swap: 4.0G 0B 4.0G
$ swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 4G 0B -2
Swap: satırında takas alanının boyutunu ve swapon --show çıktısında /swapfile dosyasının listelendiğini görmelisiniz. Bu, takas alanının başarıyla eklendiği ve aktif olduğu anlamına gelir.
6. Kalıcı Hale Getirme
Şu ana kadar yaptığımız değişiklikler sistem yeniden başlatıldığında kaybolacaktır. Takas alanının her önyüklemede otomatik olarak etkinleştirilmesi için /etc/fstab dosyasına bir giriş eklememiz gerekir.
/etc/fstab dosyası, sistemin önyükleme sırasında hangi dosya sistemlerini nereye bağlayacağını tanımlayan kritik bir yapılandırma dosyasıdır. Bu dosyayı düzenlerken dikkatli olunmalıdır, yanlış bir giriş sistemi başlatılamaz hale getirebilir.
sudo nano /etc/fstab
Bu komutla nano metin düzenleyicisini kullanarak /etc/fstab dosyasını açın. Dosyanın en sonuna aşağıdaki satırı ekleyin:
/swapfile none swap sw 0 0
* /swapfile: Takas dosyasının yolu.
* none: Takas alanı bir bağlama noktasına sahip olmadığı için none kullanılır.
* swap: Dosya sisteminin tipi takas olduğundan swap kullanılır.
* sw: Bağlama seçenekleri. sw (swap) takas alanı için standart bir seçenektir.
* 0: dump aracı tarafından yedeklenip yedeklenmeyeceğini belirtir (0 = yedekleme yapma).
* 0: fsck aracı tarafından önyüklemede kontrol edilip edilmeyeceğini belirtir (0 = kontrol etme, takas için gerekli değildir).
Değişiklikleri kaydetmek için Ctrl+O, ardından Enter tuşuna basın ve nano‘dan çıkmak için Ctrl+X tuşlarına basın.
Değişikliklerin doğru yapıldığından emin olmak için, sistemi yeniden başlatmadan önce /etc/fstab dosyasındaki tüm girdileri yeniden yüklemeyi deneyebilirsiniz:
sudo mount -a
Bu komut, /etc/fstab dosyasındaki tüm girdileri okur ve henüz bağlı olmayan dosya sistemlerini bağlamaya çalışır. Eğer takas alanı zaten etkinse veya herhangi bir hata oluşmazsa, bu komut sessizce çalışır. Herhangi bir hata mesajı alırsanız, /etc/fstab dosyasındaki yeni girişinizi kontrol etmeniz gerekir.
Takas Ayarlarını Optimize Etme: Swappiness ve Cache Pressure
Takas alanı etkinleştirildikten sonra, sistemin takas alanını ne zaman ve ne kadar kullanacağını belirleyen bazı çekirdek parametrelerini optimize edebiliriz. Bu parametreler swappiness ve vfs_cache_pressure‘dır.
Swappiness Nedir?
swappiness parametresi, Linux çekirdeğinin RAM’deki verileri ne kadar agresif bir şekilde takas alanına taşıyacağını kontrol eder. Değeri 0 ile 100 arasında değişir:
* swappiness = 0: Çekirdek, RAM’i tamamen dolana kadar takas alanını kullanmaktan mümkün olduğunca kaçınır. Bu, sunucular gibi bellek performansının kritik olduğu sistemler için önerilebilir, ancak RAM tamamen dolduğunda sistem donabilir.
* swappiness = 60 (Varsayılan): Çekirdek, RAM dolmadan önce bile belirli bir eşiğe ulaştığında verileri takas alanına taşımaya başlar. Bu, çoğu masaüstü sistemi için iyi bir dengedir.
* swappiness = 100: Çekirdek, RAM’deki verileri takas alanına taşımak için çok agresif davranır. Bu, özellikle düşük RAM’li sistemlerde veya belirli durumlarda faydalı olabilir, ancak genellikle performansı düşürür.
Mevcut swappiness değerinizi kontrol etmek için:
cat /proc/sys/vm/swappiness
Değeri değiştirmek için (örneğin 10’a ayarlamak):
sudo sysctl vm.swappiness=10
Bu değişiklik geçicidir ve sistem yeniden başlatıldığında kaybolur. Kalıcı hale getirmek için /etc/sysctl.conf dosyasını düzenlememiz gerekir:
sudo nano /etc/sysctl.conf
Dosyanın sonuna aşağıdaki satırı ekleyin:
vm.swappiness=10
Değişiklikleri kaydettikten sonra, sudo sysctl -p komutu ile yeni ayarları hemen uygulayabilirsiniz.
Hangi swappiness değeri sizin için uygun?
* Masaüstü Kullanıcıları (bol RAM’li): 10-20 arası bir değer genellikle iyi bir deneyim sunar. Sistem RAM’i daha çok kullanmaya çalışır ve takas alanına daha az başvurur.
* Sunucular (veritabanı, web sunucuları vb.): Genellikle 0-10 arası değerler tercih edilir. Bu, kritik servislerin RAM’de kalmasını sağlar ve disk G/Ç’sini azaltır.
* Düşük RAM’li Sistemler: Varsayılan 60 değeri genellikle kabul edilebilir. Daha düşük bir değer, sistemin RAM’i dolduğunda daha hızlı donmasına neden olabilir.
vfs_cache_pressure Nedir?
vfs_cache_pressure parametresi, Linux çekirdeğinin dizin ve inode önbelleklerini ne kadar hızlı geri kazanacağını (boşaltacağını) kontrol eder. Bu önbellekler, dosya sistemi işlemlerini hızlandırmak için kullanılır.
* vfs_cache_pressure = 0: Çekirdek, dizin ve inode önbelleklerini geri kazanmaktan tamamen kaçınır. Bu, sistemin uzun süre çalışması durumunda bellek sızıntısına benzer sorunlara yol açabilir.
* vfs_cache_pressure = 100 (Varsayılan): Çekirdek, dizin ve inode önbelleklerini ihtiyaç duyulduğunda oldukça agresif bir şekilde geri kazanır. Bu, çoğu sistem için iyi bir dengedir.
* vfs_cache_pressure > 100: Çekirdek, önbellekleri daha da agresif bir şekilde geri kazanır.
Mevcut vfs_cache_pressure değerinizi kontrol etmek için:
cat /proc/sys/vm/vfs_cache_pressure
Değeri değiştirmek için (örneğin 50’ye ayarlamak):
sudo sysctl vm.vfs_cache_pressure=50
Kalıcı hale getirmek için /etc/sysctl.conf dosyasına aşağıdaki satırı ekleyin:
vm.vfs_cache_pressure=50
Ardından sudo sysctl -p ile uygulayın.
Genellikle vfs_cache_pressure için varsayılan 100 değeri çoğu kullanıcı için uygundur. Ancak bazı özel durumlarda (örn. sürekli dosya sistemi işlemleri yapan sunucular) bu değeri değiştirmek gerekebilir. Daha düşük bir değer, dosya sistemi önbelleklerinin daha uzun süre bellekte kalmasını sağlayarak dosya sistemi işlemlerini hızlandırabilir, ancak diğer uygulamalar için daha az RAM bırakabilir.
Mevcut Takas Alanını Kaldırma (İsteğe Bağlı)
Eğer mevcut takas alanınızı değiştirmek veya tamamen kaldırmak isterseniz, aşağıdaki adımları izleyebilirsiniz. Bu, özellikle takas dosyasının boyutunu değiştirmek istediğinizde veya artık takas alanına ihtiyacınız kalmadığında kullanışlıdır.
1. Takas Alanını Devre Dışı Bırakma:
Öncelikle, etkin olan takas dosyasını devre dışı bırakmanız gerekir.
sudo swapoff /swapfile
Eğer sisteminizde birden fazla takas alanı varsa ve hepsini devre dışı bırakmak istiyorsanız sudo swapoff -a komutunu kullanabilirsiniz.
2. Takas Dosyasını Silme:
Takas alanı devre dışı bırakıldıktan sonra, fiziksel dosyayı silebilirsiniz.
sudo rm /swapfile
3. /etc/fstab Girişini Kaldırma:
Sistemin yeniden başlatıldığında takas dosyasını tekrar etkinleştirmeye çalışmasını engellemek için /etc/fstab dosyasındaki ilgili satırı silmeniz veya yorum satırı haline getirmeniz gerekir.
sudo nano /etc/fstab
Dosyayı açtıktan sonra, daha önce eklediğiniz /swapfile none swap sw 0 0 satırını silin veya başına # işareti koyarak yorum satırı yapın:
#/swapfile none swap sw 0 0
Kaydedin ve çıkın (Ctrl+O, Enter, Ctrl+X).
Bu adımları tamamladıktan sonra, sisteminizde takas dosyası etkin olmayacak ve disk alanınız geri kazanılmış olacaktır. Eğer daha büyük bir takas dosyası oluşturmak istiyorsanız, kaldırma işleminden sonra bu rehberin başındaki “Takas Alanı Ekleme Adımları” bölümünü takip ederek yeni bir dosya oluşturabilirsiniz.
Takas Alanı Kullanımını İzleme
Takas alanının etkin bir şekilde çalışıp çalışmadığını ve ne kadar kullanıldığını düzenli olarak izlemek, sistem performansınızı anlamak için önemlidir.
* free -h: En temel ve hızlı yöntemdir. Takas alanının toplam boyutunu, kullanılan ve boş alan miktarını gösterir.
$ free -h
...
Swap: 4.0G 256M 3.7G
Yukarıdaki çıktı, 4 GB takas alanının 256 MB’ının kullanıldığını gösterir.
* swapon --show: Hangi takas dosyalarının veya bölümlerinin etkin olduğunu gösterir.
$ swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 4G 256M -2
* top ve htop: Bu komutlar, çalışan süreçlerin ve sistem kaynaklarının (CPU, RAM, Takas) anlık durumunu gösteren interaktif araçlardır.
* top komutunu çalıştırdığınızda, üst kısımda “Swap” satırını göreceksiniz.
* htop (eğer yüklüyse, sudo apt install htop) daha görsel ve kullanıcı dostu bir arayüze sahiptir. htop‘u çalıştırdığınızda, üst kısımda RAM ve Swap çubuklarını göreceksiniz. Bu çubuklar, takas alanının ne kadarının kullanıldığını görsel olarak gösterir.
Bu araçları kullanarak, takas alanının beklenenden daha fazla kullanıldığını fark ederseniz, bu durum RAM yetersizliğine veya bellek sızıntısı olan bir uygulamaya işaret edebilir. Bu durumda, daha fazla RAM eklemeyi veya bellek tüketen uygulamaları optimize etmeyi düşünebilirsiniz.
Sorun Giderme ve Yaygın Hatalar
Takas alanı ekleme sürecinde karşılaşabileceğiniz bazı yaygın sorunlar ve çözümleri:
* fallocate veya dd komutu hatası:
* “Permission denied” (İzin reddedildi): Komutu sudo ile çalıştırmadınız veya hedef dizine yazma izniniz yok. /swapfile için kök dizini kullanmak en iyisidir ve sudo gereklidir.
* “No space left on device” (Cihazda boş yer kalmadı): Disk alanınız yetersiz. Daha küçük bir takas dosyası oluşturmayı deneyin veya diskte yer açın.
* mkswap komutu hatası:
* “Permission denied”: sudo kullanmayı unuttunuz.
* “Cannot stat /swapfile: No such file or directory”: Takas dosyasını oluşturmadınız veya yanlış yola işaret ettiniz.
* swapon komutu hatası:
* “swapon: /swapfile: insecure permissions 0644, 0600 expected”: Bu, takas dosyasının izinlerinin yanlış ayarlandığı anlamına gelir. sudo chmod 600 /swapfile komutunu kullanarak izinleri düzeltin.
* “swapon: /swapfile: read swap header failed”: Takas dosyasını mkswap ile biçimlendirmediniz.
* Sistem yeniden başlatıldığında takas alanı kayboluyor:
* /etc/fstab dosyasına sudo nano /etc/fstab ile doğru girişi eklemediğiniz anlamına gelir. Satırın 0 0 ile bittiğinden emin olun ve doğru formatta olduğundan emin olun.
* /etc/fstab dosyasındaki bir hata, sistemin önyüklenememesine neden olabilir. Böyle bir durumda, kurtarma modunda (recovery mode) önyükleme yapıp /etc/fstab dosyasını düzeltmeniz gerekebilir.
* Takas alanı olmasına rağmen sistem yavaş:
* Bu, takas alanının çok yoğun kullanıldığı (thrashing) anlamına gelebilir. RAM’iniz yetersiz olabilir veya bir uygulama bellek sızıntısına sahip olabilir. htop veya top kullanarak hangi süreçlerin çok fazla bellek kullandığını kontrol edin.
* swappiness değeri çok yüksek olabilir. Daha düşük bir swappiness değeri (örn. 10-20) denemeyi düşünebilirsiniz.
Herhangi bir sorunla karşılaştığınızda, hata mesajlarını dikkatlice okuyun ve internette arama yaparak benzer sorunların çözümlerini bulmaya çalışın. Linux topluluğu, bu tür sorunlar için zengin bir bilgi kaynağıdır.
Sonuç
Ubuntu 18.04 işletim sisteminize takas alanı eklemek, özellikle düşük RAM’e sahip sistemlerde veya bellek yoğun uygulamalar çalıştırırken sistem kararlılığını ve performansını artırmak için önemli bir adımdır. Bu rehberde adım adım takas dosyası oluşturma, izinleri ayarlama, biçimlendirme, etkinleştirme ve kalıcı hale getirme süreçlerini ele aldık. Ayrıca, swappiness ve vfs_cache_pressure gibi parametreleri optimize ederek takas alanının sisteminizle en iyi şekilde çalışmasını sağlamanın yollarını gösterdik.
Unutulmamalıdır ki, takas alanı fiziksel RAM’in yerini tutmaz. Optimal performans için her zaman yeterli RAM’e sahip olmak esastır. Takas alanı, RAM’in bir “yedek” veya “destek” mekanizması olarak işlev görür. Bu rehberdeki adımları dikkatlice uygulayarak Ubuntu 18.04 sisteminizin daha verimli ve kararlı çalışmasını sağlayabilirsiniz. Düzenli olarak takas alanı kullanımını izlemek ve gerektiğinde ayarlamalar yapmak, sisteminizin uzun vadeli sağlığı için kritik öneme sahiptir.
