Sunucumuzun daha stabil ve bellek yetersizliği gibi durumlara daha dayanıklı olması için Swap Dosyasını (Swap File) kullanabiliriz. Swap Dosyası, disk üzerinde oluşturulan bir takas alanıdır. İşletim sistemi bellekte yer kalmadığında veya çok kullanılmayan dosyaları Swap Dosyasına atmaktadır
Bu size düşük bellekli bir sunucuyla daha fazla iş yapmanızı sağlar. Fakat tabi ki bu Swap Dosyası bellek kadar hızlı çalışmayacaktır. Yinede bu alan bizim için gereklidir. Bellek ne kadar fazla olursa olsun güvenlik sebebiyle bir Swap Dosyası oluşturmalıyız.
Swap olmadığı takdirde belleği dolan bir sunucu açık işlemleri kapatmaya çalışır, çoğunlukla da çöker. Böyle durumlarda sunucunun toparlanması uzun vakit alır ve bu süre boyunca sunucuya erişilemez. Bu yazımda size CentOS 7’de Swap File yani Swap Dosyası nasıl oluşturulur ve nasıl optimize edilir onu anlatacağım.
CentOS 7’de Swap Dosyası Oluşturulması
Öncelikle sistemimizde Swap Dosyası olup olmadığını kontrol etmeliyiz. Bunu aşağıdaki komutla yapabiliriz. Eğer komuta cevap olarak bir şey gelmediyse Swap Dosyanız bulunmamaktadır.
swapon -s
Her hangi bir Swap Dosyamız olmadığını gördükten sonra aşağıdaki komut ile Swap Dosyamızı oluşturuyoruz. Burada 4G alanın büyüklüğünü, /swapfile ise Swap Dosyasının ismini vermekte. Bunları değiştirebiliriz.
sudo fallocate -l 4G /swapfile
Bu komut ile de Swap Dosyamızı kontrol edeceğiz.
ls -lh /swapfile
Cevabın aşağıdaki gibi olması gerekmekte.
-rw-r--r-- 1 root root 4.0G Oct 30 11:00 /swapfile
CentOS 7’de Swap Dosyasının Etkinleştirilmesi
Bu aşamada Swap Dosyası oluşturuldu fakat sistemimiz bu dosyanın Swap için kullanılıp kullanılamadığını bilmemekte. Aşağıdaki komutlar ile bu dosyayı Swap için aktifleştireceğiz.
Öncelikle Swap Dosyamızın sadece root hesabı tarafından okunabilmesi için ayarlama yapacağız. Root hesabı dışındaki erişimler ciddi bir güvenlik açığı oluşturacaktır.
sudo chmod 600 /swapfile
Aşağıdaki komut ile ayarlarımızın gerçekleştiğini görebiliriz.
ls -lh /swapfile
Cevabın aşağıdaki gibi olması gerekmekte.
-rw------- 1 root root 4.0G Oct 30 11:00 /swapfile
Swap Dosyamız artık güvenli olduğuna göre aşağıdaki komutlar ile kullanmaya başlayabiliriz.
sudo mkswap /swapfile
sudo swapon /swapfile
Adımların doğruluğunu en baştaki gibi Swap Dosyamız olup olmadığını kontrol ederek görebiliriz.
Swapon -s
Bu sefer cevap boş değil aşağıdaki gibi gelecektir.
/swapfile file 4194300 0 -1
CentOS 7’de Swap Dosyasının Kalıcı Hale Getirilmesi
Swap Dosyamız şimdilik aktif olsa da sunucuyu yeniden başlattığımızda aktif olmayacaktır. Bu yüzden bu alanı kalıcı hale getirmemiz gerekmekte.
WinSCP kullanarak aşağıdaki konuma gidiniz:
/etc/fstab
Bu dosyayı açtıktan sonra dosyanın en altına aşağıdaki alanı girmemiz gerekmekte. Alanı ekledikten sonra kaydedip çıkabiliriz. Bundan sonra sunucu her açıldığında bu dosyayı kontrol edecek ve Swap Dosyasını kullanmaya başlayacaktır.
/swapfile swap swap sw 0 0
CentOS 7’de Swap Dosyası İnce Ayarları
Swappiness
Swappiness parametresi sistemin ne kadar sıklıkla Swap yapacağını belirliyor. Bu parametre 0 ile 100 arasında bir değer alabilir. Bu değer sıfıra yaklaştıkça Swap azalmakta. Bu değer yüze yaklaştıkça ise sistem agresif olarak Swap yapmakta. Sunucunuza ve çalıştıracağınız programlara göre bu ayarı değiştirebilirsiniz. Ben sunucumun belleği 512 MB olduğu için Swappiness parametresini 10 olarak ayarladım. Normalde bu ayar CentOS 7’de 60 olarak gelmekte.
Swappiness ayarı Tuned tarafından bozulduğu için bu ayarı Tuned tarafından da düzeltmemiz gerekiyor.
Öncelikle aşağıdaki dosyayı WinSCP ile açmalıyız.
/etc/sysctl.conf
Açtıktan sonra dosyanın en altına aşağıdaki parametreyi eklemeliyiz. Ekledikten sonra kaydedip çıkabiliriz. Şimdi Tuned ayarlamasını yapmamız gerekmekte.
vm.swappiness = 10
Tuned
Swappiness ayarı Tuned tarafından bozulmakta. Bu bilinen bir hatadır. Bu hatayı düzeltmek için aşağıdaki alanlarda da Swappiness parametresini değiştirmemiz gerekmekte. Bunun için WinSCP kullanarak aşağıdaki üç alanda vm.swappiness = 10 olarak değişiklik yapmalıyız.
/usr/lib/tuned/latency-performance/tuned.conf
/usr/lib/tuned/throughput-performance/tuned.conf
/usr/lib/tuned/virtual-guest/tuned.conf
Cache Pressure
Swap Dosyasıyla ilgili bir diğer ayar ise vfs_cache_pressure parametresidir. Bu parametrenin değeri 0’a yaklaştıkça Swap Dosyasına alınan veriler daha uzun süre tutulur. Bu parametre normalde CentOS 7’de 100 olarak gelmekte. Bu da Swap Dosyasına alınan verilerin kısa süre tutulacağı anlamına gelmekte. Ben Swap Dosyasının da dolmaması için ve diskim SSD olduğu için bunu 100’de bıraktım.
Aşağıdaki dosyayı WinSCP ile açmalıyız.
/etc/sysctl.conf
Açtıktan sonra dosyanın en altına aşağıdaki parametreyi eklemeliyiz. Ekledikten sonra kaydedip çıkabiliriz.
vm.vfs_cache_pressure = 100
Kontrol
Sunucumuzu yeniden başlattıktan sonra ayarlarımızın geçerli olup olmadığını aşağıdaki komutlara gelen cevaplarla görebiliriz. Bir yanlışlık durumunda adımları tekrarlayabilir veya yorum atarak sorabilirsiniz.
cat /proc/sys/vm/swappiness
cat /proc/sys/vm/vfs_cache_pressure
Swappiness parametresini 10 olarak ayarladığımız için üstteki komuta 10, Cache Pressure parametresini de 100 olarak ayarladığımız için alttaki komuta da 100 olarak cevap gelmesi gerekiyor.